From fc55ba41b5ea006e584872e867c8752deb75c979 Mon Sep 17 00:00:00 2001 From: George Gastaldi Date: Mon, 8 Jun 2015 15:02:17 -0300 Subject: [PATCH] FORGE-2250: Support getNote() --- .../component/CheckboxComponentBuilder.java | 2 ++ .../idea/ui/component/ChooserComponent.java | 2 ++ .../ui/component/ComboComponentBuilder.java | 3 ++ .../idea/ui/component/ForgeComponent.java | 36 ++++++++++++++++++- .../component/PasswordComponentBuilder.java | 2 ++ .../ui/component/RadioComponentBuilder.java | 2 ++ .../ui/component/SpinnerComponentBuilder.java | 2 ++ .../idea/ui/component/TextComponent.java | 2 ++ .../many/CheckBoxTableComponentBuilder.java | 2 ++ .../idea/ui/component/many/ListComponent.java | 3 ++ 10 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jboss/forge/plugin/idea/ui/component/CheckboxComponentBuilder.java b/src/main/java/org/jboss/forge/plugin/idea/ui/component/CheckboxComponentBuilder.java index 8bca7d6..6bcbd32 100644 --- a/src/main/java/org/jboss/forge/plugin/idea/ui/component/CheckboxComponentBuilder.java +++ b/src/main/java/org/jboss/forge/plugin/idea/ui/component/CheckboxComponentBuilder.java @@ -58,6 +58,7 @@ public void actionPerformed(ActionEvent e) }); container.add(checkbox, "skip"); + addNoteLabel(container, checkbox).setText(input.getNote()); } @Override @@ -69,6 +70,7 @@ public void updateState() { reloadValue(); } + updateNote(checkbox, input.getNote()); } private void reloadValue() diff --git a/src/main/java/org/jboss/forge/plugin/idea/ui/component/ChooserComponent.java b/src/main/java/org/jboss/forge/plugin/idea/ui/component/ChooserComponent.java index a6ba12d..383f0cc 100644 --- a/src/main/java/org/jboss/forge/plugin/idea/ui/component/ChooserComponent.java +++ b/src/main/java/org/jboss/forge/plugin/idea/ui/component/ChooserComponent.java @@ -71,6 +71,7 @@ public void documentChanged(DocumentEvent event) }); container.add(component); + addNoteLabel(container, component).setText(input.getNote()); } @Override @@ -87,6 +88,7 @@ public void updateState() { inputField.setVariants(getCompletions()); } + updateNote(component, input.getNote()); } private void reloadValue() diff --git a/src/main/java/org/jboss/forge/plugin/idea/ui/component/ComboComponentBuilder.java b/src/main/java/org/jboss/forge/plugin/idea/ui/component/ComboComponentBuilder.java index d5f3e5c..c386850 100644 --- a/src/main/java/org/jboss/forge/plugin/idea/ui/component/ComboComponentBuilder.java +++ b/src/main/java/org/jboss/forge/plugin/idea/ui/component/ComboComponentBuilder.java @@ -62,6 +62,8 @@ public void itemStateChanged(ItemEvent e) } } }); + addNoteLabel(container, combo).setText(input.getNote()); + } @Override @@ -74,6 +76,7 @@ public void updateState() { reloadValue(); } + updateNote(combo, input.getNote()); } private void reloadValue() diff --git a/src/main/java/org/jboss/forge/plugin/idea/ui/component/ForgeComponent.java b/src/main/java/org/jboss/forge/plugin/idea/ui/component/ForgeComponent.java index 0d735ad..751ea23 100644 --- a/src/main/java/org/jboss/forge/plugin/idea/ui/component/ForgeComponent.java +++ b/src/main/java/org/jboss/forge/plugin/idea/ui/component/ForgeComponent.java @@ -6,13 +6,20 @@ */ package org.jboss.forge.plugin.idea.ui.component; -import java.awt.Container; +import java.awt.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import com.intellij.ui.components.JBLabel; +import com.intellij.util.ui.UIUtil; import org.jboss.forge.addon.convert.ConverterFactory; import org.jboss.forge.addon.ui.output.UIMessage; +import org.jboss.forge.furnace.util.Strings; import org.jboss.forge.plugin.idea.service.ForgeService; import org.jboss.forge.plugin.idea.ui.listeners.ValueChangeListener; +import javax.swing.*; + /** * Represents Forge input component. * @@ -20,6 +27,8 @@ */ public abstract class ForgeComponent { + private static final String NOTE_CLIENT_PROPERTY_KEY = "forge.note"; + protected ValueChangeListener valueChangeListener; protected ConverterFactory converterFactory = ForgeService.getInstance().getConverterFactory(); @@ -56,4 +65,29 @@ public void setValueChangeListener(ValueChangeListener valueChangeListener) } public abstract void updateState(); + + protected JLabel addNoteLabel(Container parent, JComponent component) { + final JBLabel noteLabel = new JBLabel(UIUtil.ComponentStyle.SMALL); + // Hide empty labels + noteLabel.addPropertyChangeListener("text", new PropertyChangeListener() + { + @Override + public void propertyChange(PropertyChangeEvent evt) + { + noteLabel.setVisible(!Strings.isNullOrEmpty(noteLabel.getText())); + } + }); + noteLabel.setAnchor(component); + parent.add(noteLabel,"skip 1,hidemode 2"); + component.putClientProperty(NOTE_CLIENT_PROPERTY_KEY, noteLabel); + return noteLabel; + } + + protected void updateNote(JComponent component, String note) { + JLabel noteLabel = (JLabel) component.getClientProperty(NOTE_CLIENT_PROPERTY_KEY); + if (noteLabel != null) { + noteLabel.setText(note); + } + } + } diff --git a/src/main/java/org/jboss/forge/plugin/idea/ui/component/PasswordComponentBuilder.java b/src/main/java/org/jboss/forge/plugin/idea/ui/component/PasswordComponentBuilder.java index f854dc6..3f4096b 100644 --- a/src/main/java/org/jboss/forge/plugin/idea/ui/component/PasswordComponentBuilder.java +++ b/src/main/java/org/jboss/forge/plugin/idea/ui/component/PasswordComponentBuilder.java @@ -76,6 +76,7 @@ public void changedUpdate(DocumentEvent e) }); container.add(component); + addNoteLabel(container, component).setText(input.getNote()); } @Override @@ -87,6 +88,7 @@ public void updateState() { reloadValue(); } + updateNote(component, input.getNote()); } private void reloadValue() diff --git a/src/main/java/org/jboss/forge/plugin/idea/ui/component/RadioComponentBuilder.java b/src/main/java/org/jboss/forge/plugin/idea/ui/component/RadioComponentBuilder.java index bfb4296..825169e 100644 --- a/src/main/java/org/jboss/forge/plugin/idea/ui/component/RadioComponentBuilder.java +++ b/src/main/java/org/jboss/forge/plugin/idea/ui/component/RadioComponentBuilder.java @@ -46,6 +46,7 @@ public void buildUI(Container container) { radioContainer = new JPanel(new MigLayout("left")); container.add(radioContainer); + addNoteLabel(container, radioContainer).setText(input.getNote()); } @Override @@ -62,6 +63,7 @@ else if (!getValue().equals(getInputValue())) { reloadValue(); } + updateNote(radioContainer, input.getNote()); } private void reloadChoices() diff --git a/src/main/java/org/jboss/forge/plugin/idea/ui/component/SpinnerComponentBuilder.java b/src/main/java/org/jboss/forge/plugin/idea/ui/component/SpinnerComponentBuilder.java index 997751d..a1f0e38 100644 --- a/src/main/java/org/jboss/forge/plugin/idea/ui/component/SpinnerComponentBuilder.java +++ b/src/main/java/org/jboss/forge/plugin/idea/ui/component/SpinnerComponentBuilder.java @@ -62,6 +62,7 @@ public void stateChanged(ChangeEvent e) selectedItem, valueChangeListener)); } }); + addNoteLabel(container, spinner).setText(input.getNote()); } @Override @@ -73,6 +74,7 @@ public void updateState() { reloadValue(); } + updateNote(spinner, input.getNote()); } private void reloadValue() diff --git a/src/main/java/org/jboss/forge/plugin/idea/ui/component/TextComponent.java b/src/main/java/org/jboss/forge/plugin/idea/ui/component/TextComponent.java index b30486b..4c56261 100644 --- a/src/main/java/org/jboss/forge/plugin/idea/ui/component/TextComponent.java +++ b/src/main/java/org/jboss/forge/plugin/idea/ui/component/TextComponent.java @@ -70,6 +70,7 @@ public void documentChanged(DocumentEvent event) }); container.add(component); + addNoteLabel(container, component).setText(input.getNote()); } @Override @@ -101,6 +102,7 @@ public void updateState() { component.setVariants(getCompletions()); } + updateNote(component, input.getNote()); } private void reloadValue() diff --git a/src/main/java/org/jboss/forge/plugin/idea/ui/component/many/CheckBoxTableComponentBuilder.java b/src/main/java/org/jboss/forge/plugin/idea/ui/component/many/CheckBoxTableComponentBuilder.java index c9aa922..82b2794 100644 --- a/src/main/java/org/jboss/forge/plugin/idea/ui/component/many/CheckBoxTableComponentBuilder.java +++ b/src/main/java/org/jboss/forge/plugin/idea/ui/component/many/CheckBoxTableComponentBuilder.java @@ -73,6 +73,7 @@ public void checkBoxSelectionChanged(int index, boolean value) }); container.add(panel, "span 2,growx"); + addNoteLabel(container, checkBoxList).setText(input.getNote()); } @Override @@ -85,6 +86,7 @@ public void updateState() { reloadValues(); } + updateNote(checkBoxList, input.getNote()); } private void reloadValues() diff --git a/src/main/java/org/jboss/forge/plugin/idea/ui/component/many/ListComponent.java b/src/main/java/org/jboss/forge/plugin/idea/ui/component/many/ListComponent.java index ce56e32..72205d4 100644 --- a/src/main/java/org/jboss/forge/plugin/idea/ui/component/many/ListComponent.java +++ b/src/main/java/org/jboss/forge/plugin/idea/ui/component/many/ListComponent.java @@ -62,6 +62,8 @@ public void buildUI(Container container) panel = new ListPanel(label, initialValue); container.add(panel, "span 2,growx"); + addNoteLabel(container, panel).setText(input.getNote()); + } @Override @@ -73,6 +75,7 @@ public void updateState() { reloadValues(); } + updateNote(panel, input.getNote()); } protected abstract String editSelectedItem(String item);