From a394229a6773288448f8c7692efb0d40f7d80670 Mon Sep 17 00:00:00 2001 From: Alexey Pegov Date: Fri, 5 Feb 2010 16:49:20 +0300 Subject: [PATCH] popup to choose path variables for working directory @ run configurations --- .../junit2/configuration/CommonJavaParameters.form | 22 ++----- .../junit2/configuration/CommonJavaParameters.java | 72 +++++++++++++++++---- platform/icons/src/runConfigurations/variables.png | Bin 0 -> 369 bytes 3 files changed, 65 insertions(+), 29 deletions(-) create mode 100644 platform/icons/src/runConfigurations/variables.png diff --git a/java/execution/impl/src/com/intellij/execution/junit2/configuration/CommonJavaParameters.form b/java/execution/impl/src/com/intellij/execution/junit2/configuration/CommonJavaParameters.form index f669e9c280..de7ce0b15e 100644 --- a/java/execution/impl/src/com/intellij/execution/junit2/configuration/CommonJavaParameters.form +++ b/java/execution/impl/src/com/intellij/execution/junit2/configuration/CommonJavaParameters.form @@ -1,18 +1,16 @@
- + - - + - - + @@ -24,8 +22,7 @@ - - + @@ -35,18 +32,13 @@ - + - - + - - - - - + diff --git a/java/execution/impl/src/com/intellij/execution/junit2/configuration/CommonJavaParameters.java b/java/execution/impl/src/com/intellij/execution/junit2/configuration/CommonJavaParameters.java index f3b7a1c991..8d411dbd9b 100644 --- a/java/execution/impl/src/com/intellij/execution/junit2/configuration/CommonJavaParameters.java +++ b/java/execution/impl/src/com/intellij/execution/junit2/configuration/CommonJavaParameters.java @@ -18,13 +18,18 @@ package com.intellij.execution.junit2.configuration; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.RunJavaConfiguration; import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.application.PathMacros; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.module.Module; +import com.intellij.openapi.ui.FixedSizeButton; import com.intellij.openapi.ui.LabeledComponent; import com.intellij.openapi.ui.TextFieldWithBrowseButton; +import com.intellij.openapi.ui.popup.JBPopup; +import com.intellij.openapi.ui.popup.JBPopupFactory; +import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.RawCommandLineEditor; @@ -32,9 +37,14 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; public class CommonJavaParameters extends JPanel { private static final Logger LOG = Logger.getInstance("#com.intellij.execution.junit2.configuration.CommonJavaParameters"); + + private static final Icon ICON = IconLoader.getIcon("/runConfigurations/variables.png"); + private static final int[] ourProperties = new int[]{ RunJavaConfiguration.PROGRAM_PARAMETERS_PROPERTY, RunJavaConfiguration.VM_PARAMETERS_PROPERTY, @@ -42,33 +52,24 @@ public class CommonJavaParameters extends JPanel { }; private JPanel myWholePanel; - private LabeledComponent myWorkingDirectory; private LabeledComponent myProgramParameters; private LabeledComponent myVMParameters; + private LabeledComponent myWorkingDirectoryComponent; private final LabeledComponent[] myFields = new LabeledComponent[3]; private Module myModule = null; + private JButton myVariablesButton; + private TextFieldWithBrowseButton myWorkingDirectoryField; public CommonJavaParameters() { super(new BorderLayout()); add(myWholePanel, BorderLayout.CENTER); copyDialogCaption(myProgramParameters); copyDialogCaption(myVMParameters); - myWorkingDirectory.getComponent() - .addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - FileChooserDescriptor fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); - fileChooserDescriptor.setTitle(ExecutionBundle.message("select.working.directory.message")); - fileChooserDescriptor.putUserData(LangDataKeys.MODULE_CONTEXT, myModule); - VirtualFile[] files = FileChooser.chooseFiles(myWorkingDirectory, fileChooserDescriptor); - if (files.length != 0) { - setText(RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY, files[0].getPresentableUrl()); - } - } - }); + myFields[RunJavaConfiguration.PROGRAM_PARAMETERS_PROPERTY] = myProgramParameters; myFields[RunJavaConfiguration.VM_PARAMETERS_PROPERTY] = myVMParameters; - myFields[RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY] = myWorkingDirectory; + myFields[RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY] = myWorkingDirectoryComponent; } private static void copyDialogCaption(final LabeledComponent component) { @@ -104,6 +105,8 @@ public class CommonJavaParameters extends JPanel { ((TextFieldWithBrowseButton)component).setText(value); else if (component instanceof RawCommandLineEditor) ((RawCommandLineEditor)component).setText(value); + else if (component instanceof JPanel) + myWorkingDirectoryField.setText(value); else LOG.error(component.getClass().getName()); } @@ -113,6 +116,8 @@ public class CommonJavaParameters extends JPanel { return ((TextFieldWithBrowseButton)component).getText(); else if (component instanceof RawCommandLineEditor) return ((RawCommandLineEditor)component).getText(); + else if (component instanceof JPanel) + return myWorkingDirectoryField.getText(); else LOG.error(component.getClass().getName()); return ""; } @@ -124,4 +129,43 @@ public class CommonJavaParameters extends JPanel { public void setModuleContext(final Module module) { myModule = module; } + + private void createUIComponents() { + final JPanel panel = new JPanel(new BorderLayout()); + myWorkingDirectoryField = new TextFieldWithBrowseButton(new ActionListener() { + public void actionPerformed(ActionEvent e) { + FileChooserDescriptor fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); + fileChooserDescriptor.setTitle(ExecutionBundle.message("select.working.directory.message")); + fileChooserDescriptor.putUserData(LangDataKeys.MODULE_CONTEXT, myModule); + VirtualFile[] files = FileChooser.chooseFiles(myWorkingDirectoryComponent, fileChooserDescriptor); + if (files.length != 0) { + setText(RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY, files[0].getPresentableUrl()); + } + } + }); + panel.add(myWorkingDirectoryField, BorderLayout.CENTER); + + final FixedSizeButton button = new FixedSizeButton(myWorkingDirectoryField); + button.setIcon(ICON); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + final List macros = new ArrayList(PathMacros.getInstance().getUserMacroNames()); + macros.add("MODULE_DIR"); + + final JList list = new JList(macros.toArray(new String[macros.size()])); + final JBPopup popup = JBPopupFactory.getInstance().createListPopupBuilder(list).setItemChoosenCallback(new Runnable() { + public void run() { + final Object value = list.getSelectedValue(); + if (value instanceof String) { + setText(RunJavaConfiguration.WORKING_DIRECTORY_PROPERTY, "$" + value + "$"); + } + } + }).setMovable(false).setResizable(false).createPopup(); + popup.showUnderneathOf(button); + } + }); + panel.add(button, BorderLayout.EAST); + + myWorkingDirectoryComponent = LabeledComponent.create(panel, "&Working directory"); + } } diff --git a/platform/icons/src/runConfigurations/variables.png b/platform/icons/src/runConfigurations/variables.png new file mode 100644 index 0000000000000000000000000000000000000000..be147fb3be86172b7f33ef51bc17bf5fa24f746d GIT binary patch literal 369 zcwPZ<0gnEOP)#F^)Pd zrvTe}(P=t-Qg*K#yZ-W;VPJl|-G$2I)=-}8ggWMT^;+e93&s!uR>=vBHYhVyG5KL0 z3_ojND5Laf(pM+f;DXPXz7zmWIo_TeWOgBa5sWi>WHjK!nWq`({=vqm#DVV`Y<5Qn z8Bu@`l0i5r(gH!~4O04G)yEp4nTYkNhY?=o P00000NkvXXu0mjf`7xb3 literal 0 HcwPel00001 -- 2.11.4.GIT