From e1e8c1fa6fd4df5dffd50dfb8b251c0f775721e1 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 5 Aug 2010 18:04:51 +0400 Subject: [PATCH] "Add Framework Support" UI --- .../AddFrameworkSupportDialog.java | 22 +++++++++++-- .../AddSupportForFrameworksPanel.form | 4 ++- .../AddSupportForFrameworksPanel.java | 31 ++++++++++--------- .../src/messages/ProjectBundle.properties | 2 +- 4 files changed, 40 insertions(+), 19 deletions(-) diff --git a/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/AddFrameworkSupportDialog.java b/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/AddFrameworkSupportDialog.java index cc92f53ef971..85faaa5bfe44 100644 --- a/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/AddFrameworkSupportDialog.java +++ b/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/AddFrameworkSupportDialog.java @@ -40,7 +40,15 @@ public class AddFrameworkSupportDialog extends DialogWrapper { public String compute() { return contentRootPath; } - }); + }) { + + @Override + protected void onFrameworkStateChanged() { + setOKActionEnabled(isOKActionEnabled()); + } + }; + + setOKActionEnabled(isOKActionEnabled()); Disposer.register(myDisposable, myAddSupportPanel); init(); } @@ -61,8 +69,13 @@ public class AddFrameworkSupportDialog extends DialogWrapper { return roots.length != 0 && FrameworkSupportUtil.hasProviders(module); } + @Override + public boolean isOKActionEnabled() { + return myAddSupportPanel.hasSelectedFrameworks(); + } + protected void doOKAction() { - if (myAddSupportPanel.haveSelectedFrameworks()) { + if (myAddSupportPanel.hasSelectedFrameworks()) { if (!myAddSupportPanel.downloadLibraries()) { int answer = Messages.showYesNoDialog(myAddSupportPanel.getMainPanel(), ProjectBundle.message("warning.message.some.required.libraries.wasn.t.downloaded"), @@ -96,4 +109,9 @@ public class AddFrameworkSupportDialog extends DialogWrapper { protected JComponent createCenterPanel() { return myAddSupportPanel.getMainPanel(); } + + @Override + public JComponent getPreferredFocusedComponent() { + return myAddSupportPanel.getFrameworksTree(); + } } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddSupportForFrameworksPanel.form b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddSupportForFrameworksPanel.form index 0c644bcc775c..a4dcb29384a4 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddSupportForFrameworksPanel.form +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddSupportForFrameworksPanel.form @@ -31,7 +31,9 @@ - + + + diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddSupportForFrameworksPanel.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddSupportForFrameworksPanel.java index 64018fe883de..e4a143fc4fb6 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddSupportForFrameworksPanel.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AddSupportForFrameworksPanel.java @@ -48,6 +48,7 @@ import com.intellij.ui.SeparatorFactory; import com.intellij.util.graph.CachingSemiGraph; import com.intellij.util.graph.DFSTBuilder; import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -64,7 +65,6 @@ import java.util.List; */ public class AddSupportForFrameworksPanel implements Disposable { private static final Logger LOG = Logger.getInstance("#com.intellij.ide.util.newProjectWizard.AddSupportForFrameworksStep"); - @NonNls private static final String UNCHECKED_CARD = "unchecked"; @NonNls private static final String EMPTY_CARD = "empty"; private JPanel myMainPanel; private JPanel myFrameworksPanel; @@ -78,7 +78,6 @@ public class AddSupportForFrameworksPanel implements Disposable { private final FrameworksTree myFrameworksTree; private final Set myInitializedOptionsPanelIds = new HashSet(); private FrameworkSupportNode myLastSelectedNode; - private final JLabel myTickCheckboxLabel; public AddSupportForFrameworksPanel(final List providers, final @NotNull LibrariesContainer librariesContainer, @Nullable ModuleBuilder builder, Computable baseDirForLibrariesGetter) { @@ -100,6 +99,7 @@ public class AddSupportForFrameworksPanel implements Disposable { updateOptionsPanel(); frameworkSupportNode.getConfigurable().onFrameworkSelectionChanged(node.isChecked()); myModel.onFrameworkSelectionChanged(frameworkSupportNode); + onFrameworkStateChanged(); } }; myFrameworksTree.addTreeSelectionListener(new TreeSelectionListener() { @@ -107,17 +107,19 @@ public class AddSupportForFrameworksPanel implements Disposable { onSelectionChanged(); } }); + splitter.setFirstComponent(ScrollPaneFactory.createScrollPane(myFrameworksTree)); myOptionsPanel = new JPanel(new CardLayout()); myOptionsPanel.add(EMPTY_CARD, new JPanel()); - final JPanel uncheckedLabelPanel = new JPanel(new BorderLayout()); - myTickCheckboxLabel = new JLabel("Tick checkbox"); - uncheckedLabelPanel.add(BorderLayout.NORTH, myTickCheckboxLabel); - myOptionsPanel.add(UNCHECKED_CARD, uncheckedLabelPanel); + splitter.setSecondComponent(myOptionsPanel); myFrameworksPanel.add(splitter, BorderLayout.CENTER); + + myFrameworksTree.setSelectionRow(0); } + protected void onFrameworkStateChanged() {} + private void onSelectionChanged() { if (!myFrameworksTree.isProcessingMouseEventOnCheckbox()) { updateOptionsPanel(); @@ -154,14 +156,9 @@ public class AddSupportForFrameworksPanel implements Disposable { private void updateOptionsPanel() { final FrameworkSupportNode node = getSelectedNode(); if (node != null) { - if (node.isChecked()) { - initializeOptionsPanel(node); - showCard(node.getProvider().getId()); - } - else { - myTickCheckboxLabel.setText("Select check box to add '" + node.getTitle() + "' support"); - showCard(UNCHECKED_CARD); - } + initializeOptionsPanel(node); + showCard(node.getProvider().getId()); + UIUtil.setEnabled(myOptionsPanel, node.isChecked(), true); } else { showCard(EMPTY_CARD); @@ -314,7 +311,11 @@ public class AddSupportForFrameworksPanel implements Disposable { return myMainPanel; } - public boolean haveSelectedFrameworks() { + public FrameworksTree getFrameworksTree() { + return myFrameworksTree; + } + + public boolean hasSelectedFrameworks() { return !getFrameworkNodes(true).isEmpty(); } diff --git a/platform/platform-resources-en/src/messages/ProjectBundle.properties b/platform/platform-resources-en/src/messages/ProjectBundle.properties index 41ddcd669d6d..a112246db61b 100644 --- a/platform/platform-resources-en/src/messages/ProjectBundle.properties +++ b/platform/platform-resources-en/src/messages/ProjectBundle.properties @@ -481,7 +481,7 @@ composing.library.name.label=&Name: composing.library.download.missing.jars.to=&Download missing files to: composing.liibrary.new.library.label=The following library will be created composing.library.from.repository.label=&from {0} -dialog.title.add.frameworks.support=Frameworks Support +dialog.title.add.frameworks.support=Add Frameworks Support warning.message.some.required.libraries.wasn.t.downloaded=Some required library wasn't downloaded. Do you want to proceed without it? save.as.library.checkbox=&Move copy to {0} level