diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddLibraryAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddLibraryAction.java index 532c29d29dcb..f5c7a10df676 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddLibraryAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddLibraryAction.java @@ -23,13 +23,16 @@ import com.intellij.openapi.roots.OrderEntry; import com.intellij.openapi.roots.impl.libraries.LibraryTableBase; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; +import com.intellij.openapi.roots.libraries.LibraryType; import com.intellij.openapi.roots.ui.configuration.libraries.LibraryEditingUtil; import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesModifiableModel; import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.popup.PopupStep; +import com.intellij.util.ParameterizedRunnable; import com.intellij.util.PlatformIcons; import com.intellij.util.ui.classpath.ChooseLibrariesFromTablesDialog; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -53,7 +56,12 @@ class AddLibraryAction extends AddItemPopupAction { @Override public PopupStep createSubStep() { - return AddNewLibraryItemAction.createChooseTypeStep(myClasspathPanel, myContext, null); + return LibraryEditingUtil.createChooseTypeStep(myClasspathPanel, new ParameterizedRunnable() { + @Override + public void run(LibraryType libraryType) { + new AddNewLibraryItemAction(myClasspathPanel, myContext, libraryType).execute(); + } + }); } @Override @@ -88,12 +96,17 @@ class AddLibraryAction extends AddItemPopupAction { final OrderEntry[] orderEntries = rootModel.getOrderEntries(); for (OrderEntry orderEntry : orderEntries) { if (orderEntry instanceof LibraryOrderEntry) { - if (item.getName().equals(((LibraryOrderEntry)orderEntry).getLibraryName())) { + final LibraryOrderEntry libraryOrderEntry = (LibraryOrderEntry)orderEntry; + if (item.equals(libraryOrderEntry.getLibrary())) { + return ClasspathTableItem.createLibItem(libraryOrderEntry, myContext); + } + if (item.getName().equals(libraryOrderEntry.getLibraryName())) { if (orderEntry.isValid()) { - Messages.showErrorDialog(ProjectBundle.message("classpath.message.library.already.added",item.getName()), + Messages.showErrorDialog(ProjectBundle.message("classpath.message.library.already.added", item.getName()), ProjectBundle.message("classpath.title.adding.dependency")); return null; - } else { + } + else { rootModel.removeOrderEntry(orderEntry); } } @@ -112,6 +125,7 @@ class AddLibraryAction extends AddItemPopupAction { } class ExistingLibraryChooser implements ClasspathElementChooser { + @NotNull public List chooseElements() { final Predicate condition = LibraryEditingUtil.getNotAddedLibrariesCondition(myClasspathPanel.getRootModel()); ProjectStructureChooseLibrariesDialog dialog = new ProjectStructureChooseLibrariesDialog(myClasspathPanel, myContext, diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddNewLibraryItemAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddNewLibraryItemAction.java index 982aa09f7f48..a8892d9667b4 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddNewLibraryItemAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddNewLibraryItemAction.java @@ -15,19 +15,15 @@ */ package com.intellij.openapi.roots.ui.configuration.classpath; -import com.intellij.ide.IdeBundle; import com.intellij.openapi.roots.LibraryOrderEntry; import com.intellij.openapi.roots.OrderEntry; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryType; import com.intellij.openapi.roots.ui.configuration.libraries.LibraryEditingUtil; import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; -import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.ui.popup.ListPopup; -import com.intellij.openapi.ui.popup.PopupStep; -import com.intellij.openapi.ui.popup.util.BaseListPopupStep; -import com.intellij.util.PlatformIcons; +import com.intellij.util.ParameterizedRunnable; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -38,7 +34,7 @@ import javax.swing.*; */ class AddNewLibraryItemAction extends ChooseAndAddAction { private final StructureConfigurableContext myContext; - private LibraryType myLibraryType; + private final LibraryType myLibraryType; public AddNewLibraryItemAction(final ClasspathPanel classpathPanel, StructureConfigurableContext context, LibraryType libraryType) { @@ -64,45 +60,34 @@ class AddNewLibraryItemAction extends ChooseAndAddAction { return new NewLibraryChooser(myClasspathPanel.getProject(), myClasspathPanel.getRootModel(), myLibraryType, myContext, myClasspathPanel.getComponent()); } - public static void chooseTypeAndExecute(final ClasspathPanel classpathPanel, - final StructureConfigurableContext context, - final DialogWrapper parentDialog, - JButton contextButton) { + public static void chooseTypeAndCreate(final ClasspathPanel classpathPanel, + final StructureConfigurableContext context, + final JButton contextButton, @NotNull final LibraryCreatedCallback callback) { if (LibraryEditingUtil.hasSuitableTypes(classpathPanel)) { - final ListPopup popup = JBPopupFactory.getInstance().createListPopup(createChooseTypeStep(classpathPanel, context, parentDialog)); + final ListPopup popup = JBPopupFactory.getInstance().createListPopup(LibraryEditingUtil.createChooseTypeStep(classpathPanel, new ParameterizedRunnable() { + @Override + public void run(LibraryType libraryType) { + doCreateLibrary(classpathPanel, context, callback, contextButton, libraryType); + } + })); popup.showUnderneathOf(contextButton); } else { - if (parentDialog != null) parentDialog.close(DialogWrapper.CANCEL_EXIT_CODE); - new AddNewLibraryItemAction(classpathPanel, context, null).execute(); + doCreateLibrary(classpathPanel, context, callback, contextButton, null); } } - public static BaseListPopupStep createChooseTypeStep(final ClasspathPanel classpathPanel, - final StructureConfigurableContext context, - final @Nullable DialogWrapper parentDialog) { - return new BaseListPopupStep("Select Library Type", LibraryEditingUtil.getSuitableTypes(classpathPanel)) { - @NotNull - @Override - public String getTextFor(LibraryType value) { - return value != null ? value.getCreateActionName() : IdeBundle.message("create.default.library.type.action.name"); - } + private static void doCreateLibrary(ClasspathPanel classpathPanel, + StructureConfigurableContext context, + LibraryCreatedCallback callback, final JComponent component, final @Nullable LibraryType libraryType) { + final NewLibraryChooser chooser = new NewLibraryChooser(classpathPanel.getProject(), classpathPanel.getRootModel(), libraryType, context, component); + final Library library = chooser.createLibrary(); + if (library != null) { + callback.libraryCreated(library); + } + } - @Override - public Icon getIconFor(LibraryType aValue) { - return aValue != null ? aValue.getIcon() : PlatformIcons.LIBRARY_ICON; - } - - @Override - public PopupStep onChosen(final LibraryType selectedValue, boolean finalChoice) { - return doFinalStep(new Runnable() { - @Override - public void run() { - if (parentDialog != null) parentDialog.close(DialogWrapper.CANCEL_EXIT_CODE); - new AddNewLibraryItemAction(classpathPanel, context, selectedValue).execute(); - } - }); - } - }; + interface LibraryCreatedCallback { + void libraryCreated(@NotNull Library library); } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathElementChooser.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathElementChooser.java index b5e1a67c607b..1ac8aca30a90 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathElementChooser.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathElementChooser.java @@ -15,11 +15,14 @@ */ package com.intellij.openapi.roots.ui.configuration.classpath; +import org.jetbrains.annotations.NotNull; + import java.util.List; /** * @author nik */ interface ClasspathElementChooser { + @NotNull List chooseElements(); } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java index f2f291abefce..ac201730ea3c 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java @@ -688,6 +688,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { myDescription = description; } + @NotNull public List chooseElements() { ChooseModulesDialog dialog = new ChooseModulesDialog(ClasspathPanelImpl.this, myItems, myTitle, myDescription); dialog.show(); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/CreateModuleLibraryChooser.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/CreateModuleLibraryChooser.java index 7faa13ed7f2a..f4eaecf64894 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/CreateModuleLibraryChooser.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/CreateModuleLibraryChooser.java @@ -32,6 +32,7 @@ import com.intellij.openapi.roots.ui.configuration.libraryEditor.RootDetectionUt import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.ArrayUtil; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.util.*; @@ -44,7 +45,6 @@ public class CreateModuleLibraryChooser implements ClasspathElementChooser myLibraryTypes; - private LibraryType myLibraryType; private final DefaultLibraryRootsComponentDescriptor myDefaultDescriptor; public CreateModuleLibraryChooser(ClasspathPanel classpathPanel, LibraryTable.ModifiableModel moduleLibraryModel) { @@ -111,6 +111,7 @@ public class CreateModuleLibraryChooser implements ClasspathElementChooser chooseElements() { final FileChooserDescriptor chooserDescriptor; final List> descriptors = new ArrayList>(); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/NewLibraryChooser.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/NewLibraryChooser.java index 63f32a1c942c..bf03699a3bf5 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/NewLibraryChooser.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/NewLibraryChooser.java @@ -16,7 +16,6 @@ package com.intellij.openapi.roots.ui.configuration.classpath; import com.intellij.ide.DataManager; -import com.intellij.openapi.actionSystem.DataKeys; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; @@ -28,10 +27,12 @@ import com.intellij.openapi.roots.libraries.LibraryType; import com.intellij.openapi.roots.ui.configuration.libraryEditor.CreateNewLibraryDialog; import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor; import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.Arrays; -import java.util.Collections; import java.util.List; /** @@ -54,7 +55,13 @@ class NewLibraryChooser implements ClasspathElementChooser { myProject = project; } + @NotNull public List chooseElements() { + return ContainerUtil.createMaybeSingletonList(createLibrary()); + } + + @Nullable + public Library createLibrary() { final NewLibraryEditor libraryEditor; if (myLibraryType == null) { libraryEditor = new NewLibraryEditor(); @@ -73,8 +80,8 @@ class NewLibraryChooser implements ClasspathElementChooser { dialog.setContextModule(contextModule); dialog.show(); if (dialog.isOK()) { - return Collections.singletonList(dialog.createLibrary()); + return dialog.createLibrary(); } - return Collections.emptyList(); + return null; } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ProjectStructureChooseLibrariesDialog.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ProjectStructureChooseLibrariesDialog.java index 44485486b5c5..1904b6e4c4bc 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ProjectStructureChooseLibrariesDialog.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ProjectStructureChooseLibrariesDialog.java @@ -18,7 +18,9 @@ package com.intellij.openapi.roots.ui.configuration.classpath; import com.google.common.base.Predicate; import com.intellij.ide.projectView.PresentationData; import com.intellij.ide.util.treeView.NodeDescriptor; +import com.intellij.openapi.application.Application; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.impl.libraries.LibraryTableImplUtil; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; import com.intellij.openapi.roots.ui.configuration.libraries.LibraryPresentationManager; @@ -27,18 +29,24 @@ import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigur import com.intellij.ui.SimpleTextAttributes; import com.intellij.util.ui.classpath.ChooseLibrariesFromTablesDialog; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; /** * @author nik */ public class ProjectStructureChooseLibrariesDialog extends ChooseLibrariesFromTablesDialog { private final ClasspathPanel myClasspathPanel; - private StructureConfigurableContext myContext; - private Predicate myAcceptedLibraries; + private final StructureConfigurableContext myContext; + private final Predicate myAcceptedLibraries; + private final List myCreatedModuleLibraries = new ArrayList(); private JButton myCreateLibraryButton; public ProjectStructureChooseLibrariesDialog(ClasspathPanel classpathPanel, @@ -52,16 +60,48 @@ public class ProjectStructureChooseLibrariesDialog extends ChooseLibrariesFromTa init(); } + @Override + protected void doOKAction() { + super.doOKAction(); + removeCreatedModuleLibraries(getSelectedLibraries()); + } + + @Override + public void doCancelAction() { + super.doCancelAction(); + removeCreatedModuleLibraries(Collections.emptyList()); + } + + private void removeCreatedModuleLibraries(Collection selected) { + for (Library library : myCreatedModuleLibraries) { + if (!selected.contains(library)) { + myClasspathPanel.getRootModel().getModuleLibraryTable().removeLibrary(library); + } + } + } + + @Override + protected void collectChildren(Object element, List result) { + if (element instanceof Application && !myCreatedModuleLibraries.isEmpty()) { + result.add(myClasspathPanel.getRootModel().getModuleLibraryTable()); + } + super.collectChildren(element, result); + } + @NotNull @Override protected Library[] getLibraries(@NotNull LibraryTable table) { + if (table.getTableLevel().equals(LibraryTableImplUtil.MODULE_LEVEL)) { + return myCreatedModuleLibraries.toArray(new Library[myCreatedModuleLibraries.size()]); + } final LibrariesModifiableModel model = getLibrariesModifiableModel(table); if (model == null) return Library.EMPTY_ARRAY; return model.getLibraries(); } + @Nullable private LibrariesModifiableModel getLibrariesModifiableModel(LibraryTable table) { - return myContext.myLevel2Providers.get(table.getTableLevel()); + return table != null ? myContext.myLevel2Providers.get(table.getTableLevel()) : null; } @Override @@ -129,7 +169,16 @@ public class ProjectStructureChooseLibrariesDialog extends ChooseLibrariesFromTa @Override protected void doAction(ActionEvent e) { - AddNewLibraryItemAction.chooseTypeAndExecute(myClasspathPanel, myContext, ProjectStructureChooseLibrariesDialog.this, myCreateLibraryButton); + AddNewLibraryItemAction.chooseTypeAndCreate(myClasspathPanel, myContext, myCreateLibraryButton, + new AddNewLibraryItemAction.LibraryCreatedCallback() { + @Override + public void libraryCreated(@NotNull Library library) { + if (library.getTable() == null) { + myCreatedModuleLibraries.add(library); + } + queueUpdateAndSelect(library); + } + }); } } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/LibraryEditingUtil.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/LibraryEditingUtil.java index 3c43d9e8ddff..7f4b3b52ebed 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/LibraryEditingUtil.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/LibraryEditingUtil.java @@ -16,6 +16,7 @@ package com.intellij.openapi.roots.ui.configuration.libraries; import com.google.common.base.Predicate; +import com.intellij.ide.IdeBundle; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; @@ -31,12 +32,17 @@ import com.intellij.openapi.roots.libraries.*; import com.intellij.openapi.roots.libraries.ui.OrderRoot; import com.intellij.openapi.roots.ui.configuration.classpath.ClasspathPanel; import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesModifiableModel; +import com.intellij.openapi.ui.popup.PopupStep; +import com.intellij.openapi.ui.popup.util.BaseListPopupStep; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.util.ParameterizedRunnable; import com.intellij.util.PathUtil; +import com.intellij.util.PlatformIcons; import org.jetbrains.annotations.NotNull; +import javax.swing.*; import java.util.*; /** @@ -167,4 +173,30 @@ public class LibraryEditingUtil { public static boolean hasSuitableTypes(ClasspathPanel panel) { return getSuitableTypes(panel).size() > 1; } + + public static BaseListPopupStep createChooseTypeStep(final ClasspathPanel classpathPanel, + final ParameterizedRunnable action) { + return new BaseListPopupStep(IdeBundle.message("popup.title.select.library.type"), getSuitableTypes(classpathPanel)) { + @NotNull + @Override + public String getTextFor(LibraryType value) { + return value != null ? value.getCreateActionName() : IdeBundle.message("create.default.library.type.action.name"); + } + + @Override + public Icon getIconFor(LibraryType aValue) { + return aValue != null ? aValue.getIcon() : PlatformIcons.LIBRARY_ICON; + } + + @Override + public PopupStep onChosen(final LibraryType selectedValue, boolean finalChoice) { + return doFinalStep(new Runnable() { + @Override + public void run() { + action.run(selectedValue); + } + }); + } + }; + } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryDialog.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryDialog.java index 4b8ea74abf26..8e9fd1b1aeac 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryDialog.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryDialog.java @@ -35,8 +35,8 @@ import java.util.List; */ public class CreateNewLibraryDialog extends LibraryEditorDialogBase { private final StructureConfigurableContext myContext; - private NewLibraryEditor myLibraryEditor; - private ComboBox myLibraryLevelCombobox; + private final NewLibraryEditor myLibraryEditor; + private final ComboBox myLibraryLevelCombobox; public CreateNewLibraryDialog(@NotNull JComponent parent, @NotNull StructureConfigurableContext context, @NotNull NewLibraryEditor libraryEditor, @NotNull List libraryTables, int selectedTable) { @@ -82,7 +82,7 @@ public class CreateNewLibraryDialog extends LibraryEditorDialogBase { @Override protected void addNorthComponents(FormBuilder formBuilder) { - formBuilder.addLabeledComponent("Level:", myLibraryLevelCombobox); + formBuilder.addLabeledComponent("&Level:", myLibraryLevelCombobox); } protected boolean shouldCheckName(String newName) { diff --git a/platform/lang-impl/src/com/intellij/util/ui/classpath/ChooseLibrariesDialogBase.java b/platform/lang-impl/src/com/intellij/util/ui/classpath/ChooseLibrariesDialogBase.java index 75bef8e15566..dfe0d01e5125 100644 --- a/platform/lang-impl/src/com/intellij/util/ui/classpath/ChooseLibrariesDialogBase.java +++ b/platform/lang-impl/src/com/intellij/util/ui/classpath/ChooseLibrariesDialogBase.java @@ -134,6 +134,15 @@ public abstract class ChooseLibrariesDialogBase extends DialogWrapper { return myResult == null? Collections.emptyList() : myResult; } + protected void queueUpdateAndSelect(@NotNull final Library library) { + myBuilder.queueUpdate().doWhenDone(new Runnable() { + @Override + public void run() { + myBuilder.select(library); + } + }); + } + private boolean processSelection(final Processor processor) { for (Object element : myBuilder.getSelectedElements()) { if (element instanceof Library) { diff --git a/platform/lang-impl/src/com/intellij/util/ui/classpath/ChooseLibrariesFromTablesDialog.java b/platform/lang-impl/src/com/intellij/util/ui/classpath/ChooseLibrariesFromTablesDialog.java index 0d8ca8c06ac8..c09fb08ef667 100644 --- a/platform/lang-impl/src/com/intellij/util/ui/classpath/ChooseLibrariesFromTablesDialog.java +++ b/platform/lang-impl/src/com/intellij/util/ui/classpath/ChooseLibrariesFromTablesDialog.java @@ -17,6 +17,7 @@ package com.intellij.util.ui.classpath; import com.intellij.openapi.application.Application; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.impl.libraries.LibraryTableImplUtil; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar; @@ -32,8 +33,8 @@ import java.util.List; * @author nik */ public class ChooseLibrariesFromTablesDialog extends ChooseLibrariesDialogBase { - private @Nullable Project myProject; - private boolean myShowCustomLibraryTables; + private @Nullable final Project myProject; + private final boolean myShowCustomLibraryTables; private ChooseLibrariesFromTablesDialog(@NotNull String title, @NotNull Project project, final boolean showCustomLibraryTables) { super(project, title); @@ -113,9 +114,10 @@ public class ChooseLibrariesFromTablesDialog extends ChooseLibrariesDialogBase { @Override protected int getLibraryTableWeight(@NotNull LibraryTable libraryTable) { - if (isProjectLibraryTable(libraryTable)) return 0; - if (isApplicationLibraryTable(libraryTable)) return 1; - return 2; + if (libraryTable.getTableLevel().equals(LibraryTableImplUtil.MODULE_LEVEL)) return 0; + if (isProjectLibraryTable(libraryTable)) return 1; + if (isApplicationLibraryTable(libraryTable)) return 2; + return 3; } private static boolean isApplicationLibraryTable(LibraryTable libraryTable) { diff --git a/platform/platform-impl/src/com/intellij/ide/util/ChooseElementsDialog.java b/platform/platform-impl/src/com/intellij/ide/util/ChooseElementsDialog.java index c7a73dbbd8c9..06a5c624aa37 100644 --- a/platform/platform-impl/src/com/intellij/ide/util/ChooseElementsDialog.java +++ b/platform/platform-impl/src/com/intellij/ide/util/ChooseElementsDialog.java @@ -98,6 +98,7 @@ public abstract class ChooseElementsDialog extends DialogWrapper { @Nullable protected abstract Icon getItemIcon(T item); + @NotNull public List getChosenElements() { return isOK() ? myChooser.getSelectedElements() : Collections.emptyList(); } diff --git a/platform/platform-impl/src/com/intellij/ide/util/ElementsChooser.java b/platform/platform-impl/src/com/intellij/ide/util/ElementsChooser.java index 3c6202d1c92e..348285494b1e 100644 --- a/platform/platform-impl/src/com/intellij/ide/util/ElementsChooser.java +++ b/platform/platform-impl/src/com/intellij/ide/util/ElementsChooser.java @@ -309,6 +309,7 @@ public class ElementsChooser extends JPanel implements ComponentWithEmptyText return myTable.getSelectedRow(); } + @NotNull public List getSelectedElements() { final List elements = new ArrayList(); final int[] selectedRows = myTable.getSelectedRows(); diff --git a/platform/platform-resources-en/src/messages/IdeBundle.properties b/platform/platform-resources-en/src/messages/IdeBundle.properties index 59d410d0de06..232268c521a2 100644 --- a/platform/platform-resources-en/src/messages/IdeBundle.properties +++ b/platform/platform-resources-en/src/messages/IdeBundle.properties @@ -978,6 +978,7 @@ new.library.file.chooser.title=New Library Files new.library.file.chooser.description=Select jar files in which library classes are located create.default.library.type.action.name=Java +popup.title.select.library.type=Select Library Type file.chooser.show.path=Show path file.chooser.hide.path=Hide path