diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.form b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.form index c5df7e8fc1d4..6ee5a7a64b98 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.form +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.form @@ -128,7 +128,6 @@ - diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java index 35ed2921159c..960bb183ddcf 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java @@ -104,6 +104,7 @@ public class LibraryOptionsPanel { return StringUtil.notNullize(name1).compareToIgnoreCase(StringUtil.notNullize(name2)); } }); + for (Library library : libraries) { ExistingLibraryEditor libraryEditor = librariesContainer.getLibraryEditor(library); if (libraryEditor == null) { @@ -274,14 +275,23 @@ public class LibraryOptionsPanel { } public void apply() { + final Choice option = myButtonEnumModel.getSelected(); + mySettings.setDownloadLibraries(option == Choice.DOWNLOAD); + final Object item = myExistingLibraryComboBox.getSelectedItem(); - if (item instanceof ExistingLibraryEditor) { + if (option == Choice.USE_LIBRARY && item instanceof ExistingLibraryEditor) { mySettings.setSelectedExistingLibrary(((ExistingLibraryEditor)item).getLibrary()); } - else if (item instanceof NewLibraryEditor) { + else { + mySettings.setSelectedExistingLibrary(null); + } + + if (option == Choice.USE_LIBRARY && item instanceof NewLibraryEditor) { mySettings.setNewLibraryEditor((NewLibraryEditor)item); } - mySettings.setDownloadLibraries(myButtonEnumModel.getSelected() == Choice.DOWNLOAD); + else { + mySettings.setNewLibraryEditor(null); + } } public JComponent getMainPanel() { 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 765dec19b0cb..983617b62554 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 @@ -124,9 +124,6 @@ public class AddSupportForFrameworksPanel implements Disposable { applyLibraryOptionsForSelected(); myLastSelectedNode = selectedNode; - if (selectedNode != null) { - selectedNode.getLibraryCompositionOptionsPanel(myLibrariesContainer); - } } } @@ -136,7 +133,7 @@ public class AddSupportForFrameworksPanel implements Disposable { private void applyLibraryOptionsForSelected() { if (myLastSelectedNode != null) { - final LibraryOptionsPanel optionsPanel = myLastSelectedNode.getLibraryCompositionOptionsPanel(myLibrariesContainer); + final LibraryOptionsPanel optionsPanel = myLastSelectedNode.getLibraryCompositionOptionsPanel(); if (optionsPanel != null) { optionsPanel.apply(); } @@ -195,14 +192,26 @@ public class AddSupportForFrameworksPanel implements Disposable { } private void addLibrariesOptionsPanel(FrameworkSupportNode node, JPanel librariesOptionsPanelWrapper, boolean addSeparator) { - final LibraryOptionsPanel libraryOptionsPanel = node.getLibraryCompositionOptionsPanel(myLibrariesContainer); - if (libraryOptionsPanel != null) { + final LibraryCompositionSettings libraryCompositionSettings = node.getLibraryCompositionSettings(); + final LibraryOptionsPanel oldPanel = node.getLibraryCompositionOptionsPanel(); + LibraryOptionsPanel newPanel = oldPanel; + if (oldPanel == null || !oldPanel.getSettings().equals(libraryCompositionSettings)) { + if (libraryCompositionSettings != null) { + newPanel = new LibraryOptionsPanel(libraryCompositionSettings, myLibrariesContainer, node.getConfigurable().getComponent() != null); + } + else { + newPanel = null; + } + } + node.setLibraryCompositionOptionsPanel(newPanel); + + if (newPanel != null) { if (addSeparator) { JComponent separator = SeparatorFactory.createSeparator("Libraries", null); separator.setBorder(IdeBorderFactory.createEmptyBorder(5, 0, 5, 5)); librariesOptionsPanelWrapper.add(BorderLayout.NORTH, separator); } - librariesOptionsPanelWrapper.add(BorderLayout.CENTER, libraryOptionsPanel.getMainPanel()); + librariesOptionsPanelWrapper.add(BorderLayout.CENTER, newPanel.getMainPanel()); } } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/FrameworkSupportNode.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/FrameworkSupportNode.java index 35d7590628af..419c8de30ce6 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/FrameworkSupportNode.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/FrameworkSupportNode.java @@ -22,7 +22,6 @@ import com.intellij.ide.util.frameworkSupport.*; import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelImpl; import com.intellij.openapi.Disposable; import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription; -import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Disposer; @@ -88,20 +87,14 @@ public class FrameworkSupportNode extends CheckedTreeNode { return description; } - @Nullable - public LibraryOptionsPanel getLibraryCompositionOptionsPanel(LibrariesContainer librariesContainer) { - final LibraryCompositionSettings libraryCompositionSettings = getLibraryCompositionSettings(); - if (myLibraryCompositionOptionsPanel == null || !myLibraryCompositionOptionsPanel.getSettings().equals(libraryCompositionSettings)) { - if (libraryCompositionSettings != null) { - myLibraryCompositionOptionsPanel = new LibraryOptionsPanel(libraryCompositionSettings, librariesContainer, myConfigurable.getComponent() != null); - } - else { - myLibraryCompositionOptionsPanel = null; - } - } + public LibraryOptionsPanel getLibraryCompositionOptionsPanel() { return myLibraryCompositionOptionsPanel; } + public void setLibraryCompositionOptionsPanel(LibraryOptionsPanel libraryCompositionOptionsPanel) { + myLibraryCompositionOptionsPanel = libraryCompositionOptionsPanel; + } + public void setConfigurableComponentEnabled(final boolean enable) { JComponent component = getConfigurable().getComponent(); if (component != null) {