From e5b7ba30606a6679958864706c6f1be3cbe68d74 Mon Sep 17 00:00:00 2001 From: "Natalia.Ukhorskaya" Date: Wed, 18 Sep 2013 14:33:33 +0400 Subject: [PATCH] Update UI for Configure Kotlin Dialog --- .../framework/ui/ChooseLibraryPathPanel.form | 45 ++++++++++ .../framework/ui/ChooseLibraryPathPanel.java | 83 +++++++++++++++++++ .../framework/ui/ChooseModulePanel.form | 10 +-- .../framework/ui/ChooseModulePanel.java | 7 -- .../ConfigureDialogWithModulesAndVersion.java | 2 - .../plugin/framework/ui/CopyIntoPanel.form | 6 +- .../plugin/framework/ui/CopyIntoPanel.java | 7 ++ .../ui/CreateJavaLibraryDialogBase.form | 45 ++++------ .../ui/CreateJavaLibraryDialogBase.java | 28 +++---- .../CreateJavaLibraryDialogWithModules.java | 8 +- .../ui/CreateJavaScriptLibraryDialogBase.form | 71 ++++++---------- .../ui/CreateJavaScriptLibraryDialogBase.java | 50 +++++------ ...ateJavaScriptLibraryDialogWithModules.java | 6 +- 13 files changed, 218 insertions(+), 150 deletions(-) create mode 100644 idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseLibraryPathPanel.form create mode 100644 idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseLibraryPathPanel.java diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseLibraryPathPanel.form b/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseLibraryPathPanel.form new file mode 100644 index 00000000000..01a2f50a85e --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseLibraryPathPanel.form @@ -0,0 +1,45 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseLibraryPathPanel.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseLibraryPathPanel.java new file mode 100644 index 00000000000..a79833d315a --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseLibraryPathPanel.java @@ -0,0 +1,83 @@ +package org.jetbrains.jet.plugin.framework.ui; + +import com.intellij.util.EventDispatcher; +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; + + +public class ChooseLibraryPathPanel { + + private final CopyIntoPanel copyFilePanel; + + private JPanel contentPane; + private JRadioButton useFromPluginRadioButton; + private JRadioButton copyToRadioButton; + private JPanel copyPanelPlace; + + private final EventDispatcher actionDispatcher = EventDispatcher.create(ActionListener.class); + + public ChooseLibraryPathPanel(@NotNull String defaultPath) { + ButtonGroup modulesGroup = new ButtonGroup(); + modulesGroup.add(useFromPluginRadioButton); + modulesGroup.add(copyToRadioButton); + copyToRadioButton.setSelected(true); + + ActionListener actionListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + actionDispatcher.getMulticaster().actionPerformed(e); + updateComponents(); + } + }; + + copyToRadioButton.addActionListener(actionListener); + useFromPluginRadioButton.addActionListener(actionListener); + + copyFilePanel = new CopyIntoPanel(null, defaultPath); + copyFilePanel.addValidityListener(new ValidityListener() { + @Override + public void validityChanged(boolean isValid) { + updateComponents(); + } + }); + copyPanelPlace.add(copyFilePanel.getContentPane(), BorderLayout.CENTER); + + updateComponents(); + } + + public JComponent getContentPane() { + return contentPane; + } + + @Nullable + public String getPath() { + return copyToRadioButton.isSelected() ? copyFilePanel.getPath() : null; + } + + public void addValidityListener(ValidityListener listener) { + copyFilePanel.addValidityListener(listener); + } + + public void addActionListener(ActionListener listener) { + actionDispatcher.addListener(listener); + } + + public boolean hasErrors() { + return copyToRadioButton.isSelected() && copyFilePanel.hasErrors(); + } + + private void updateComponents() { + copyFilePanel.setEnabled(copyToRadioButton.isSelected()); + if (copyToRadioButton.isSelected() && copyFilePanel.hasErrors()) { + copyToRadioButton.setForeground(Color.RED); + } + else { + copyToRadioButton.setForeground(Color.BLACK); + } + } +} diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseModulePanel.form b/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseModulePanel.form index 0c8eb51c943..b0a937a1cf8 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseModulePanel.form +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseModulePanel.form @@ -1,6 +1,6 @@
- + @@ -24,15 +24,9 @@ - - - - - - - + diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseModulePanel.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseModulePanel.java index c3b50f6651b..f6cb9e28e10 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseModulePanel.java +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/ChooseModulePanel.java @@ -35,7 +35,6 @@ public class ChooseModulePanel { private JRadioButton allModulesWithKtRadioButton; private JRadioButton singleModuleRadioButton; private JComboBox singleModuleComboBox; - private JSeparator separator; private JTextField allModulesNames; @NotNull private final Project project; @@ -79,15 +78,9 @@ public class ChooseModulePanel { modulesGroup.add(singleModuleRadioButton); allModulesWithKtRadioButton.setSelected(true); - separator.setVisible(false); - updateComponents(); } - public void showSeparator() { - separator.setVisible(true); - } - public JComponent getContentPane() { return contentPane; } diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/ConfigureDialogWithModulesAndVersion.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/ConfigureDialogWithModulesAndVersion.java index 77add0c32ff..f1312c756e4 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/ConfigureDialogWithModulesAndVersion.java +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/ConfigureDialogWithModulesAndVersion.java @@ -47,8 +47,6 @@ public class ConfigureDialogWithModulesAndVersion extends DialogWrapper { chooseModulePanel = new ChooseModulePanel(project, modules); chooseModulesPanelPlace.add(chooseModulePanel.getContentPane(), BorderLayout.CENTER); - chooseModulePanel.showSeparator(); - for (String version : kotlinVersions) { kotlinVersionComboBox.addItem(version); } diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CopyIntoPanel.form b/idea/src/org/jetbrains/jet/plugin/framework/ui/CopyIntoPanel.form index 8195f03cc73..1c663110868 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CopyIntoPanel.form +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/CopyIntoPanel.form @@ -21,11 +21,7 @@ - - - - - + diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CopyIntoPanel.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/CopyIntoPanel.java index 359dacfd374..35e468f622a 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CopyIntoPanel.java +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/CopyIntoPanel.java @@ -61,6 +61,9 @@ public class CopyIntoPanel { copyIntoLabel.setDisplayedMnemonic(mnemonicChar); copyIntoLabel.setDisplayedMnemonicIndex(mnemonicIndex); } + else { + copyIntoLabel.setVisible(false); + } copyIntoLabel.setLabelFor(copyIntoField.getTextField()); copyIntoField.getTextField().setText(defaultPath); @@ -107,4 +110,8 @@ public class CopyIntoPanel { public boolean hasErrors() { return hasErrorsState; } + + public void setLabelWight(int wight) { + copyIntoLabel.setPreferredSize(new Dimension(wight, -1)); + } } diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogBase.form b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogBase.form index 94b607bcbfb..d92bc8f5466 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogBase.form +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogBase.form @@ -1,6 +1,6 @@ - + @@ -10,36 +10,9 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -56,6 +29,20 @@ + + + + + + + + + + + + + + diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogBase.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogBase.java index cea3481a29d..b4e5e21bc5a 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogBase.java +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogBase.java @@ -18,6 +18,7 @@ package org.jetbrains.jet.plugin.framework.ui; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; +import com.intellij.ui.SeparatorWithText; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.plugin.JetPluginUtil; @@ -28,13 +29,13 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public abstract class CreateJavaLibraryDialogBase extends DialogWrapper { - protected final CopyIntoPanel copyIntoPanel; - protected JPanel contentPane; - protected JCheckBox copyLibraryCheckbox; - protected JPanel copyIntoPanelPlace; protected JLabel compilerTextLabel; protected JPanel chooseModulesPanelPlace; + protected SeparatorWithText modulesSeparator; + protected JPanel chooseLibraryPathPlace; + + protected final ChooseLibraryPathPanel pathPanel; public CreateJavaLibraryDialogBase( @Nullable Project project, @@ -48,32 +49,31 @@ public abstract class CreateJavaLibraryDialogBase extends DialogWrapper { compilerTextLabel.setText(compilerTextLabel.getText() + " - " + JetPluginUtil.getPluginVersion()); - copyIntoPanel = new CopyIntoPanel(project, defaultPath); - copyIntoPanel.addValidityListener(new ValidityListener() { + pathPanel = new ChooseLibraryPathPanel(defaultPath); + pathPanel.addValidityListener(new ValidityListener() { @Override public void validityChanged(boolean isValid) { updateComponents(); } }); - - copyIntoPanelPlace.add(copyIntoPanel.getContentPane(), BorderLayout.CENTER); - - copyLibraryCheckbox.addActionListener(new ActionListener() { + pathPanel.addActionListener(new ActionListener() { @Override - public void actionPerformed(@NotNull ActionEvent e) { + public void actionPerformed(ActionEvent e) { updateComponents(); } }); + chooseLibraryPathPlace.add(pathPanel.getContentPane(), BorderLayout.CENTER); + + modulesSeparator.setCaption("Kotlin Java Runtime Library"); } protected void updateComponents() { - copyIntoPanel.setEnabled(copyLibraryCheckbox.isSelected()); - setOKActionEnabled(!copyIntoPanel.hasErrors()); + setOKActionEnabled(!pathPanel.hasErrors()); } @Nullable public String getCopyIntoPath() { - return copyLibraryCheckbox.isSelected() ? copyIntoPanel.getPath() : null; + return pathPanel.getPath(); } @Nullable diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogWithModules.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogWithModules.java index abb1d6a2075..bd0084926d1 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogWithModules.java +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaLibraryDialogWithModules.java @@ -40,13 +40,7 @@ public class CreateJavaLibraryDialogWithModules extends CreateJavaLibraryDialogB chooseModulePanel = new ChooseModulePanel(project, modules); chooseModulesPanelPlace.add(chooseModulePanel.getContentPane(), BorderLayout.CENTER); - if (!showPathPanel) { - copyIntoPanelPlace.setVisible(false); - copyLibraryCheckbox.setVisible(false); - } - else { - chooseModulePanel.showSeparator(); - } + chooseLibraryPathPlace.setVisible(showPathPanel); updateComponents(); } diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.form b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.form index ae3252cc916..d57ff0a5a47 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.form +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.form @@ -1,6 +1,6 @@ - + @@ -10,52 +10,9 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -64,7 +21,7 @@ - + @@ -72,6 +29,28 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.java index 1be86c7331e..6b86f1a39c3 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.java +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.java @@ -18,6 +18,7 @@ package org.jetbrains.jet.plugin.framework.ui; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; +import com.intellij.ui.SeparatorWithText; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.plugin.JetPluginUtil; @@ -25,19 +26,20 @@ import org.jetbrains.jet.plugin.framework.JSLibraryCreateOptions; import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; public abstract class CreateJavaScriptLibraryDialogBase extends DialogWrapper implements JSLibraryCreateOptions { protected final CopyIntoPanel copyJsFilesPanel; - protected final CopyIntoPanel copyJarPanel; + protected final CopyIntoPanel copyLibraryFilePanel; protected JPanel contentPane; - protected JCheckBox copyJarCheckbox; - protected JPanel copyJsFilesPanelPlace; - protected JPanel copyJarFilePanelPlace; + protected JLabel compilerTextLabel; - protected JPanel chooseModulesPanelPlace; + protected JPanel chooseModulesPlace; + + private SeparatorWithText modulesSeparator; + + protected JPanel copyJsFilesPlace; + protected JPanel copyLibraryPlace; public CreateJavaScriptLibraryDialogBase( @Nullable Project project, @@ -54,6 +56,8 @@ public abstract class CreateJavaScriptLibraryDialogBase extends DialogWrapper im compilerTextLabel.setText(compilerTextLabel.getText() + " - " + JetPluginUtil.getPluginVersion()); + modulesSeparator.setCaption("Kotlin JavaScript Library"); + ValidityListener validityListener = new ValidityListener() { @Override public void validityChanged(boolean isValid) { @@ -61,48 +65,40 @@ public abstract class CreateJavaScriptLibraryDialogBase extends DialogWrapper im } }; - copyJsFilesPanel = new CopyIntoPanel(project, defaultPathToJsFile, "&Script directory:"); + copyJsFilesPanel = new CopyIntoPanel(project, defaultPathToJsFile, "Copy &runtime files to:"); copyJsFilesPanel.addValidityListener(validityListener); - copyJsFilesPanelPlace.add(copyJsFilesPanel.getContentPane(), BorderLayout.CENTER); + copyJsFilesPanel.setLabelWight(110); + copyJsFilesPlace.add(copyJsFilesPanel.getContentPane(), BorderLayout.CENTER); - copyJarPanel = new CopyIntoPanel(project, defaultPathToJar, "&Lib directory:"); - copyJarPanel.addValidityListener(validityListener); - copyJarFilePanelPlace.add(copyJarPanel.getContentPane(), BorderLayout.CENTER); + copyLibraryFilePanel = new CopyIntoPanel(project, defaultPathToJar, "Copy &headers to:"); + copyLibraryFilePanel.addValidityListener(validityListener); + copyLibraryFilePanel.setLabelWight(110); + copyLibraryPlace.add(copyLibraryFilePanel.getContentPane(), BorderLayout.CENTER); if (!showPathToJarPanel) { - copyJarFilePanelPlace.setVisible(false); - copyJarCheckbox.setVisible(false); + copyLibraryPlace.setVisible(false); } if (!showPathToJsFilePanel) { - copyJsFilesPanelPlace.setVisible(false); + copyJsFilesPlace.setVisible(false); } - - copyJarCheckbox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(@NotNull ActionEvent e) { - updateComponents(); - } - }); } @Override @Nullable public String getCopyJsIntoPath() { - if (!copyJsFilesPanelPlace.isVisible()) return null; + if (!copyJsFilesPlace.isVisible()) return null; return copyJsFilesPanel.getPath(); } @Override @Nullable public String getCopyLibraryIntoPath() { - return copyJarCheckbox.isSelected() ? copyJarPanel.getPath() : null; + return copyLibraryFilePanel.getPath(); } protected void updateComponents() { - copyJarPanel.setEnabled(copyJarCheckbox.isSelected()); - - setOKActionEnabled(!copyJsFilesPanel.hasErrors() && !copyJarPanel.hasErrors()); + setOKActionEnabled(!copyJsFilesPanel.hasErrors() && !copyLibraryFilePanel.hasErrors()); } @Nullable diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogWithModules.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogWithModules.java index a0440a12510..24b098b75bc 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogWithModules.java +++ b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogWithModules.java @@ -39,11 +39,7 @@ public class CreateJavaScriptLibraryDialogWithModules extends CreateJavaScriptLi super(project, defaultPathToJar, defaultPathToJsFile, showPathToJarPanel, showPathToJsFilePanel); chooseModulePanel = new ChooseModulePanel(project, modules); - chooseModulesPanelPlace.add(chooseModulePanel.getContentPane(), BorderLayout.CENTER); - - if (showPathToJarPanel || showPathToJsFilePanel) { - chooseModulePanel.showSeparator(); - } + chooseModulesPlace.add(chooseModulePanel.getContentPane(), BorderLayout.CENTER); updateComponents(); }