From 408bcfb7e6d839974b1ce6aef5e722bcfdff3b6a Mon Sep 17 00:00:00 2001 From: Alexander Lobas Date: Fri, 23 Nov 2012 15:48:43 +0400 Subject: [PATCH] IDEA-91387 --- .../android/designer/model/RadFragment.java | 4 +- .../propertyTable/AttributeProperty.java | 4 +- .../propertyTable/editors/ResourceEditor.java | 8 ++ .../editors/TextEditorWrapper.java | 79 +++++++++++++++++++ 4 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 plugins/ui-designer/ui-designer-new/src/com/intellij/designer/propertyTable/editors/TextEditorWrapper.java diff --git a/plugins/android-designer/src/com/intellij/android/designer/model/RadFragment.java b/plugins/android-designer/src/com/intellij/android/designer/model/RadFragment.java index ddad49c6d089..578cac120bd1 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/model/RadFragment.java +++ b/plugins/android-designer/src/com/intellij/android/designer/model/RadFragment.java @@ -23,7 +23,7 @@ import com.intellij.android.designer.propertyTable.editors.ResourceEditor; import com.intellij.designer.ModuleProvider; import com.intellij.designer.model.Property; import com.intellij.designer.model.RadComponent; -import com.intellij.designer.propertyTable.editors.TextEditor; +import com.intellij.designer.propertyTable.editors.TextEditorWrapper; import org.jetbrains.android.dom.attrs.AttributeFormat; import org.jetbrains.annotations.Nullable; @@ -46,7 +46,7 @@ public class RadFragment extends RadViewComponent implements IConfigurableCompon } } }, JavadocParser.build("name", "Supply the name of the fragment class to instantiate.")); - private static final Property TAG_PROPERTY = new FragmentProperty("tag", new TextEditor(), + private static final Property TAG_PROPERTY = new FragmentProperty("tag", new TextEditorWrapper(), JavadocParser.build( "tag", "Use device-admin as the root tag of the XML resource that\n" + diff --git a/plugins/android-designer/src/com/intellij/android/designer/propertyTable/AttributeProperty.java b/plugins/android-designer/src/com/intellij/android/designer/propertyTable/AttributeProperty.java index e529b27fffc5..4005b3a690bc 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/propertyTable/AttributeProperty.java +++ b/plugins/android-designer/src/com/intellij/android/designer/propertyTable/AttributeProperty.java @@ -26,7 +26,7 @@ import com.intellij.android.designer.propertyTable.renderers.ResourceRenderer; import com.intellij.designer.model.Property; import com.intellij.designer.propertyTable.PropertyEditor; import com.intellij.designer.propertyTable.PropertyRenderer; -import com.intellij.designer.propertyTable.editors.TextEditor; +import com.intellij.designer.propertyTable.editors.TextEditorWrapper; import com.intellij.designer.propertyTable.renderers.LabelPropertyRenderer; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.util.text.StringUtil; @@ -67,7 +67,7 @@ public class AttributeProperty extends Property implements IXm if (formats.size() == 1) { if (formats.contains(AttributeFormat.Float)) { myRenderer = new LabelPropertyRenderer(null); - myEditor = new TextEditor(); + myEditor = new TextEditorWrapper(); return; } if (formats.contains(AttributeFormat.Enum)) { diff --git a/plugins/android-designer/src/com/intellij/android/designer/propertyTable/editors/ResourceEditor.java b/plugins/android-designer/src/com/intellij/android/designer/propertyTable/editors/ResourceEditor.java index fe76872b81ab..af6830d665c4 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/propertyTable/editors/ResourceEditor.java +++ b/plugins/android-designer/src/com/intellij/android/designer/propertyTable/editors/ResourceEditor.java @@ -148,6 +148,14 @@ public class ResourceEditor extends PropertyEditor { ); } + if (myCheckBox == null) { + myEditor.registerKeyboardAction(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + } + }, KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); + } + myEditor.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/propertyTable/editors/TextEditorWrapper.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/propertyTable/editors/TextEditorWrapper.java new file mode 100644 index 000000000000..4db67632634e --- /dev/null +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/propertyTable/editors/TextEditorWrapper.java @@ -0,0 +1,79 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.designer.propertyTable.editors; + +import com.intellij.designer.model.PropertiesContainer; +import com.intellij.designer.model.PropertyContext; +import com.intellij.designer.propertyTable.InplaceContext; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; + +/** + * @author Alexander Lobas + */ +public class TextEditorWrapper extends TextEditor { + private final JComponent myComponent; + + public TextEditorWrapper() { + myComponent = new JComponent() { + @Override + public void setBounds(int x, int y, int width, int height) { + super.setBounds(x, y, width, height); + myTextField.setBounds(0, 0, width, height); + } + + @Override + public void setBackground(Color bg) { + super.setBackground(bg); + myTextField.setBackground(bg); + } + + @Override + public void setForeground(Color fg) { + super.setForeground(fg); + myTextField.setForeground(fg); + } + + @Override + public Dimension getPreferredSize() { + return myTextField.getPreferredSize(); + } + }; + myComponent.registerKeyboardAction(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + } + }, KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); + myComponent.setFocusable(false); + myComponent.add(myTextField); + } + + @NotNull + @Override + public JComponent getComponent(@Nullable PropertiesContainer container, + @Nullable PropertyContext context, + Object value, + @Nullable InplaceContext inplaceContext) { + super.getComponent(container, context, value, inplaceContext); + return myComponent; + } +} \ No newline at end of file