eliminating dependencies from compiler-impl to idea-ui

This commit is contained in:
Nikolay Chashnikov
2009-09-02 11:28:01 +04:00
parent d8d34feffb
commit d7bcad06b3
20 changed files with 149 additions and 100 deletions
@@ -2,7 +2,6 @@ package com.intellij.packaging.impl.elements;
import com.intellij.openapi.compiler.CompilerBundle;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ui.configuration.artifacts.ChooseArtifactsDialog;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.artifacts.ArtifactPointerManager;
import com.intellij.packaging.elements.CompositePackagingElement;
@@ -40,14 +39,10 @@ public class ArtifactElementType extends PackagingElementType<ArtifactPackagingE
public List<? extends ArtifactPackagingElement> chooseAndCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact,
@NotNull CompositePackagingElement<?> parent) {
final Project project = context.getProject();
ChooseArtifactsDialog dialog = new ChooseArtifactsDialog(project, getAvailableArtifacts(context, artifact),
CompilerBundle.message("dialog.title.choose.artifacts"), "");
dialog.show();
List<Artifact> artifacts = context.chooseArtifacts(getAvailableArtifacts(context, artifact), CompilerBundle.message("dialog.title.choose.artifacts"));
final List<ArtifactPackagingElement> elements = new ArrayList<ArtifactPackagingElement>();
if (dialog.isOK()) {
for (Artifact selected : dialog.getChosenElements()) {
elements.add(new ArtifactPackagingElement(project, ArtifactPointerManager.getInstance(project).create(selected.getName())));
}
for (Artifact selected : artifacts) {
elements.add(new ArtifactPackagingElement(project, ArtifactPointerManager.getInstance(project).create(selected.getName())));
}
return elements;
}
@@ -5,7 +5,7 @@ import com.intellij.facet.FacetTypeId;
import com.intellij.facet.FacetTypeRegistry;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ui.configuration.libraryEditor.ChooseElementsDialog;
import com.intellij.ide.util.ChooseElementsDialog;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.elements.CompositePackagingElement;
import com.intellij.packaging.elements.PackagingElement;
@@ -44,14 +44,13 @@ public abstract class FacetBasedPackagingElementType<E extends PackagingElement<
@NotNull
@Override
public List<? extends E> chooseAndCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact, @NotNull CompositePackagingElement<?> parent) {
final Project project = context.getProject();
final List<F> facets = getFacets(context);
ChooseFacetsDialog dialog = new ChooseFacetsDialog(context.getProject(), facets, getDialogTitle(), getDialogDescription());
dialog.show();
if (dialog.isOK()) {
final List<E> elements = new ArrayList<E>();
for (F facet : dialog.getChosenElements()) {
elements.add(createElement(project, facet));
elements.add(createElement(context.getProject(), facet));
}
return elements;
}
@@ -5,7 +5,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectBundle;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar;
import com.intellij.openapi.roots.ui.configuration.packaging.ChooseLibrariesDialog;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.elements.CompositePackagingElement;
import com.intellij.packaging.elements.PackagingElementType;
@@ -41,15 +40,10 @@ public class LibraryElementType extends PackagingElementType<LibraryPackagingEle
@NotNull
public List<? extends LibraryPackagingElement> chooseAndCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact,
@NotNull CompositePackagingElement<?> parent) {
ChooseLibrariesDialog dialog = new ChooseLibrariesDialog(context.getProject(), getAllLibraries(context),
ProjectBundle.message("dialog.title.packaging.choose.library"), "");
dialog.show();
final List<Library> selected = dialog.getChosenElements();
final List<Library> selected = context.chooseLibraries(getAllLibraries(context), ProjectBundle.message("dialog.title.packaging.choose.library"));
final List<LibraryPackagingElement> elements = new ArrayList<LibraryPackagingElement>();
if (dialog.isOK()) {
for (Library library : selected) {
elements.add(new LibraryPackagingElement(library.getTable().getTableLevel(), library.getName()));
}
for (Library library : selected) {
elements.add(new LibraryPackagingElement(library.getTable().getTableLevel(), library.getName()));
}
return elements;
}
@@ -1,7 +1,6 @@
package com.intellij.packaging.impl.elements;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.ui.configuration.artifacts.sourceItems.LibrarySourceItem;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
@@ -56,7 +55,7 @@ public class LibraryPackagingElement extends ComplexPackagingElement<LibraryPack
@Override
public PackagingElementOutputKind getFilesKind(PackagingElementResolvingContext context) {
final Library library = findLibrary(context);
return library != null ? LibrarySourceItem.getKindForLibrary(library) : PackagingElementOutputKind.OTHER;
return library != null ? getKindForLibrary(library) : PackagingElementOutputKind.OTHER;
}
public PackagingElementPresentation createPresentation(@NotNull ArtifactEditorContext context) {
@@ -110,4 +109,18 @@ public class LibraryPackagingElement extends ComplexPackagingElement<LibraryPack
public Library findLibrary(@NotNull PackagingElementResolvingContext context) {
return LibraryLink.findLibrary(myName, myLevel, context.getProject());
}
public static PackagingElementOutputKind getKindForLibrary(final Library library) {
boolean containsDirectories = false;
boolean containsJars = false;
for (VirtualFile file : library.getFiles(OrderRootType.CLASSES)) {
if (file.isInLocalFileSystem()) {
containsDirectories = true;
}
else {
containsJars = true;
}
}
return new PackagingElementOutputKind(containsDirectories, containsJars);
}
}
@@ -4,7 +4,6 @@ import com.intellij.openapi.compiler.CompilerBundle;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectBundle;
import com.intellij.openapi.roots.ui.configuration.libraryEditor.ChooseModulesDialog;
import com.intellij.openapi.util.IconLoader;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.elements.CompositePackagingElement;
@@ -15,7 +14,6 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
@@ -41,7 +39,7 @@ public class ModuleOutputElementType extends PackagingElementType<ModuleOutputPa
@NotNull
public List<? extends ModuleOutputPackagingElement> chooseAndCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact,
@NotNull CompositePackagingElement<?> parent) {
List<Module> modules = chooseModules(context, artifact);
List<Module> modules = chooseModules(context);
final List<ModuleOutputPackagingElement> elements = new ArrayList<ModuleOutputPackagingElement>();
for (Module module : modules) {
elements.add(new ModuleOutputPackagingElement(module.getName()));
@@ -49,14 +47,8 @@ public class ModuleOutputElementType extends PackagingElementType<ModuleOutputPa
return elements;
}
public static List<Module> chooseModules(ArtifactEditorContext context, Artifact artifact) {
ChooseModulesDialog dialog = new ChooseModulesDialog(context.getProject(), Arrays.asList(context.getModulesProvider().getModules()), ProjectBundle.message("dialog.title.packaging.choose.module"), "");
dialog.show();
List<Module> modules = dialog.getChosenElements();
if (!dialog.isOK()) {
modules = Collections.emptyList();
}
return modules;
public static List<Module> chooseModules(ArtifactEditorContext context) {
return context.chooseModules(Arrays.asList(context.getModulesProvider().getModules()), ProjectBundle.message("dialog.title.packaging.choose.module"));
}
@NotNull
@@ -35,7 +35,7 @@ public class ModuleOutputPackagingElement extends PackagingElement<ModuleOutputP
}
public PackagingElementPresentation createPresentation(@NotNull ArtifactEditorContext context) {
return new DelegatedPackagingElementPresentation(new ModuleElementPresentation(myModuleName, findModule(context)));
return new DelegatedPackagingElementPresentation(new ModuleElementPresentation(myModuleName, findModule(context), context));
}
@Override
@@ -37,7 +37,7 @@ public class ModuleWithDependenciesElementType extends PackagingElementType<Modu
public List<? extends ModuleWithDependenciesPackagingElement> chooseAndCreate(@NotNull ArtifactEditorContext context,
@NotNull Artifact artifact,
@NotNull CompositePackagingElement<?> parent) {
final List<Module> modules = ModuleOutputElementType.chooseModules(context, artifact);
final List<Module> modules = ModuleOutputElementType.chooseModules(context);
final List<ModuleWithDependenciesPackagingElement> elements = new ArrayList<ModuleWithDependenciesPackagingElement>();
for (Module module : modules) {
elements.add(new ModuleWithDependenciesPackagingElement(module.getName()));
@@ -70,7 +70,7 @@ public class ModuleWithDependenciesPackagingElement extends ComplexPackagingElem
}
public PackagingElementPresentation createPresentation(@NotNull ArtifactEditorContext context) {
return new DelegatedPackagingElementPresentation(new ModuleElementPresentation(myModuleName, findModule(context)) {
return new DelegatedPackagingElementPresentation(new ModuleElementPresentation(myModuleName, findModule(context), context) {
@Override
protected String getNodeText() {
return CompilerBundle.message("node.text.0.with.dependencies", getPresentableName());
@@ -1,7 +1,6 @@
package com.intellij.packaging.impl.ui;
import com.intellij.ide.projectView.PresentationData;
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.artifacts.ArtifactPointer;
import com.intellij.packaging.impl.artifacts.PlainArtifactType;
@@ -36,7 +35,7 @@ public class ArtifactElementPresentation extends TreeNodePresentation {
@Override
public void navigateToSource() {
ProjectStructureConfigurable.getInstance(myContext.getProject()).select(myArtifact, true);
myContext.selectArtifact(myArtifact);
}
public void render(@NotNull PresentationData presentationData, SimpleTextAttributes mainAttributes, SimpleTextAttributes commentAttributes) {
@@ -2,8 +2,11 @@ package com.intellij.packaging.impl.ui;
import com.intellij.ide.projectView.PresentationData;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable;
import com.intellij.openapi.roots.ui.configuration.packaging.PackagingEditorUtil;
import com.intellij.openapi.roots.libraries.LibraryTable;
import com.intellij.openapi.roots.libraries.LibraryTablePresentation;
import com.intellij.openapi.roots.impl.ModuleLibraryTable;
import com.intellij.openapi.roots.impl.libraries.LibraryImpl;
import com.intellij.openapi.module.Module;
import com.intellij.packaging.ui.ArtifactEditorContext;
import com.intellij.packaging.ui.PackagingElementPresentation;
import com.intellij.packaging.ui.PackagingElementWeights;
@@ -41,14 +44,14 @@ public class LibraryElementPresentation extends PackagingElementPresentation {
@Override
public void navigateToSource() {
ProjectStructureConfigurable.getInstance(myContext.getProject()).selectProjectOrGlobalLibrary(myLibrary, true);
myContext.selectLibrary(myLibrary);
}
public void render(@NotNull PresentationData presentationData, SimpleTextAttributes mainAttributes, SimpleTextAttributes commentAttributes) {
if (myLibrary != null) {
presentationData.setIcons(Icons.LIBRARY_ICON);
presentationData.addText(myName, mainAttributes);
presentationData.addText(PackagingEditorUtil.getLibraryTableComment(myLibrary), commentAttributes);
presentationData.addText(getLibraryTableComment(myLibrary), commentAttributes);
}
else {
presentationData.addText(myName, SimpleTextAttributes.ERROR_ATTRIBUTES);
@@ -60,4 +63,23 @@ public class LibraryElementPresentation extends PackagingElementPresentation {
return PackagingElementWeights.LIBRARY;
}
public static String getLibraryTableDisplayName(final Library library) {
LibraryTable table = library.getTable();
LibraryTablePresentation presentation = table != null ? table.getPresentation() : ModuleLibraryTable.MODULE_LIBRARY_TABLE_PRESENTATION;
return presentation.getDisplayName(false);
}
public static String getLibraryTableComment(final Library library) {
LibraryTable libraryTable = library.getTable();
String displayName;
if (libraryTable != null) {
displayName = libraryTable.getPresentation().getDisplayName(false);
}
else {
Module module = ((LibraryImpl)library).getModule();
String tableName = getLibraryTableDisplayName(library);
displayName = module != null ? "'" + module.getName() + "' " + tableName : tableName;
}
return " (" + displayName + ")";
}
}
@@ -3,9 +3,9 @@ package com.intellij.packaging.impl.ui;
import com.intellij.ide.projectView.PresentationData;
import com.intellij.openapi.compiler.CompilerBundle;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable;
import com.intellij.packaging.ui.PackagingElementWeights;
import com.intellij.packaging.ui.TreeNodePresentation;
import com.intellij.packaging.ui.ArtifactEditorContext;
import com.intellij.ui.SimpleTextAttributes;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -15,11 +15,13 @@ import org.jetbrains.annotations.Nullable;
*/
public class ModuleElementPresentation extends TreeNodePresentation {
private final String myName;
private final ArtifactEditorContext myContext;
private final Module myModule;
public ModuleElementPresentation(@NotNull String name, @Nullable Module module) {
public ModuleElementPresentation(@NotNull String name, @Nullable Module module, ArtifactEditorContext context) {
myModule = module;
myName = name;
myContext = context;
}
public String getPresentableName() {
@@ -38,7 +40,7 @@ public class ModuleElementPresentation extends TreeNodePresentation {
@Override
public void navigateToSource() {
ProjectStructureConfigurable.getInstance(myModule.getProject()).select(myModule.getName(), null, true);
myContext.selectModule(myModule);
}
public void render(@NotNull PresentationData presentationData, SimpleTextAttributes mainAttributes, SimpleTextAttributes commentAttributes) {
@@ -1,12 +1,17 @@
package com.intellij.packaging.ui;
import com.intellij.facet.Facet;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.artifacts.ArtifactType;
import com.intellij.packaging.artifacts.ModifiableArtifactModel;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.elements.CompositePackagingElement;
import com.intellij.packaging.elements.PackagingElementResolvingContext;
import org.jetbrains.annotations.NotNull;
import java.util.List;
/**
* @author nik
*/
@@ -28,4 +33,20 @@ public interface ArtifactEditorContext extends PackagingElementResolvingContext
void ensureRootIsWritable(@NotNull Artifact originalArtifact);
ArtifactEditor getOrCreateEditor(Artifact originalArtifact);
void selectArtifact(@NotNull Artifact artifact);
void selectFacet(@NotNull Facet<?> facet);
void selectModule(@NotNull Module module);
void selectLibrary(@NotNull Library library);
List<Artifact> chooseArtifacts(List<? extends Artifact> artifacts, String title);
List<Module> chooseModules(List<Module> modules, final String title);
List<Library> chooseLibraries(List<Library> libraries, String title);
}
@@ -3,6 +3,11 @@ package com.intellij.openapi.roots.ui.configuration.artifacts;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ui.configuration.FacetsProvider;
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable;
import com.intellij.openapi.roots.ui.configuration.packaging.ChooseLibrariesDialog;
import com.intellij.openapi.roots.ui.configuration.libraryEditor.ChooseModulesDialog;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.module.Module;
import com.intellij.packaging.artifacts.Artifact;
import com.intellij.packaging.artifacts.ArtifactModel;
import com.intellij.packaging.artifacts.ArtifactType;
@@ -11,8 +16,12 @@ import com.intellij.packaging.elements.CompositePackagingElement;
import com.intellij.packaging.ui.ArtifactEditor;
import com.intellij.packaging.ui.ArtifactEditorContext;
import com.intellij.packaging.ui.ManifestFileConfiguration;
import com.intellij.facet.Facet;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Collections;
/**
* @author nik
*/
@@ -53,6 +62,29 @@ public class ArtifactEditorContextImpl implements ArtifactEditorContext {
return myParent.getOrCreateEditor(artifact);
}
public void selectArtifact(@NotNull Artifact artifact) {
ProjectStructureConfigurable.getInstance(getProject()).select(artifact, true);
}
public void selectFacet(@NotNull Facet<?> facet) {
ProjectStructureConfigurable.getInstance(getProject()).select(facet, true);
}
public void selectModule(@NotNull Module module) {
ProjectStructureConfigurable.getInstance(getProject()).select(module.getName(), null, true);
}
public void selectLibrary(@NotNull Library library) {
ProjectStructureConfigurable.getInstance(getProject()).selectProjectOrGlobalLibrary(library, true);
}
public List<Artifact> chooseArtifacts(final List<? extends Artifact> artifacts, final String title) {
ChooseArtifactsDialog dialog = new ChooseArtifactsDialog(getProject(), artifacts, title, "");
dialog.show();
return dialog.isOK() ? dialog.getChosenElements() : Collections.<Artifact>emptyList();
}
@NotNull
public ArtifactModel getArtifactModel() {
return myParent.getArtifactModel();
@@ -84,4 +116,18 @@ public class ArtifactEditorContextImpl implements ArtifactEditorContext {
public void setValidationMananger(ArtifactValidationManagerImpl validationManager) {
myValidationManager = validationManager;
}
public List<Module> chooseModules(final List<Module> modules, final String title) {
ChooseModulesDialog dialog = new ChooseModulesDialog(getProject(), modules, title, "");
dialog.show();
List<Module> selected = dialog.getChosenElements();
return dialog.isOK() ? selected : Collections.<Module>emptyList();
}
public List<Library> chooseLibraries(final List<Library> libraries, final String title) {
ChooseLibrariesDialog dialog = new ChooseLibrariesDialog(getProject(), libraries, title, "");
dialog.show();
return dialog.isOK() ? dialog.getChosenElements() : Collections.<Library>emptyList();
}
}
@@ -1,7 +1,7 @@
package com.intellij.openapi.roots.ui.configuration.artifacts;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ui.configuration.libraryEditor.ChooseElementsDialog;
import com.intellij.ide.util.ChooseElementsDialog;
import com.intellij.packaging.artifacts.Artifact;
import javax.swing.*;
@@ -3,12 +3,13 @@ package com.intellij.openapi.roots.ui.configuration.artifacts.sourceItems;
import com.intellij.ide.projectView.PresentationData;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.ui.configuration.packaging.PackagingEditorUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.packaging.elements.PackagingElement;
import com.intellij.packaging.elements.PackagingElementFactory;
import com.intellij.packaging.elements.PackagingElementOutputKind;
import com.intellij.packaging.ui.*;
import com.intellij.packaging.impl.ui.LibraryElementPresentation;
import com.intellij.packaging.impl.elements.LibraryPackagingElement;
import com.intellij.ui.SimpleTextAttributes;
import com.intellij.util.Icons;
import org.jetbrains.annotations.NotNull;
@@ -46,21 +47,7 @@ public class LibrarySourceItem extends PackagingSourceItem {
@NotNull
@Override
public PackagingElementOutputKind getKindOfProducedElements() {
return getKindForLibrary(myLibrary);
}
public static PackagingElementOutputKind getKindForLibrary(final Library library) {
boolean containsDirectories = false;
boolean containsJars = false;
for (VirtualFile file : library.getFiles(OrderRootType.CLASSES)) {
if (file.isInLocalFileSystem()) {
containsDirectories = true;
}
else {
containsJars = true;
}
}
return new PackagingElementOutputKind(containsDirectories, containsJars);
return LibraryPackagingElement.getKindForLibrary(myLibrary);
}
@NotNull
@@ -92,7 +79,7 @@ public class LibrarySourceItem extends PackagingSourceItem {
if (name != null) {
presentationData.setIcons(Icons.LIBRARY_ICON);
presentationData.addText(name, mainAttributes);
presentationData.addText(PackagingEditorUtil.getLibraryTableComment(myLibrary), commentAttributes);
presentationData.addText(LibraryElementPresentation.getLibraryTableComment(myLibrary), commentAttributes);
}
else {
final VirtualFile[] files = myLibrary.getFiles(OrderRootType.CLASSES);
@@ -31,7 +31,7 @@ public class ModuleOutputSourceItem extends PackagingSourceItem {
@Override
public SourceItemPresentation createPresentation(@NotNull ArtifactEditorContext context) {
return new DelegatedSourceItemPresentation(new ModuleElementPresentation(myModule.getName(), myModule)) {
return new DelegatedSourceItemPresentation(new ModuleElementPresentation(myModule.getName(), myModule, context)) {
@Override
public int getWeight() {
return SourceItemWeights.MODULE_OUTPUT_WEIGHT;
@@ -1,114 +0,0 @@
package com.intellij.openapi.roots.ui.configuration.libraryEditor;
import com.intellij.ide.util.ElementsChooser;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.ui.ScrollPaneFactory;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Comparator;
/**
* @author nik
*/
public abstract class ChooseElementsDialog<T> extends DialogWrapper {
protected ElementsChooser<T> myChooser;
private String myDescription;
public ChooseElementsDialog(Project project, List<? extends T> items, String title, final String description) {
super(project, true);
myDescription = description;
initializeDialog(items, title);
}
public ChooseElementsDialog(Component parent, List<T> items, String title) {
this(parent, items, title, false);
}
public ChooseElementsDialog(Component parent, List<T> items, String title, final boolean sort) {
super(parent, true);
if (sort) {
Collections.sort(items, new Comparator<T>() {
public int compare(final T o1, final T o2) {
return getItemText(o1).compareToIgnoreCase(getItemText(o2));
}
});
}
initializeDialog(items, title);
}
private void initializeDialog(final List<? extends T> items, final String title) {
setTitle(title);
myChooser = new ElementsChooser<T>(false) {
protected String getItemText(@NotNull final T item) {
return ChooseElementsDialog.this.getItemText(item);
}
};
myChooser.setColorUnmarkedElements(false);
setElements(items, items.size() > 0 ? items.subList(0, 1) : Collections.<T>emptyList());
myChooser.getComponent().registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doOKAction();
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_FOCUSED);
myChooser.getComponent().addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 && !e.isPopupTrigger() && !e.isConsumed()) {
e.consume();
doOKAction();
}
}
});
init();
}
protected abstract String getItemText(T item);
public List<T> getChosenElements() {
return myChooser.getSelectedElements();
}
public JComponent getPreferredFocusedComponent() {
return myChooser.getComponent();
}
protected JComponent createCenterPanel() {
final JPanel panel = new JPanel(new BorderLayout());
panel.add(ScrollPaneFactory.createScrollPane(myChooser.getComponent()), BorderLayout.CENTER);
if (myDescription != null) {
panel.add(new JLabel(myDescription), BorderLayout.NORTH);
}
return panel;
}
private void setElements(final Collection<? extends T> elements, final Collection<? extends T> elementsToSelect) {
myChooser.clear();
for (final T item : elements) {
myChooser.addElement(item, false, createElementProperties(item));
}
myChooser.selectElements(elementsToSelect);
}
private ElementsChooser.ElementProperties createElementProperties(final T item) {
return new ElementsChooser.ElementProperties() {
public Icon getIcon() {
return getItemIcon(item);
}
public Color getColor() {
return null;
}
};
}
@Nullable
protected abstract Icon getItemIcon(T item);
}
@@ -12,6 +12,7 @@ package com.intellij.openapi.roots.ui.configuration.libraryEditor;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.ide.util.ChooseElementsDialog;
import javax.swing.*;
import java.awt.*;
@@ -2,7 +2,7 @@ package com.intellij.openapi.roots.ui.configuration.packaging;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.ui.configuration.libraryEditor.ChooseElementsDialog;
import com.intellij.ide.util.ChooseElementsDialog;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.project.Project;
import com.intellij.util.Icons;
@@ -3,17 +3,16 @@ package com.intellij.openapi.roots.ui.configuration.packaging;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.ProjectBundle;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.roots.impl.ModuleLibraryTable;
import com.intellij.openapi.roots.impl.OrderEntryUtil;
import com.intellij.openapi.roots.impl.libraries.LibraryImpl;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.LibraryTable;
import com.intellij.openapi.roots.libraries.LibraryTablePresentation;
import com.intellij.openapi.roots.ui.util.OrderEntryCellAppearanceUtils;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.ColoredTreeCellRenderer;
import com.intellij.ui.SimpleTextAttributes;
import com.intellij.util.Icons;
import com.intellij.packaging.impl.ui.LibraryElementPresentation;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@@ -27,19 +26,13 @@ public class PackagingEditorUtil {
private PackagingEditorUtil() {
}
private static String getLibraryTableDisplayName(final Library library) {
LibraryTable table = library.getTable();
LibraryTablePresentation presentation = table != null ? table.getPresentation() : ModuleLibraryTable.MODULE_LIBRARY_TABLE_PRESENTATION;
return presentation.getDisplayName(false);
}
public static void renderLibraryNode(final ColoredTreeCellRenderer renderer, final Library library,
final SimpleTextAttributes mainAttributes, final SimpleTextAttributes commentAttributes) {
String name = library.getName();
if (name != null) {
renderer.setIcon(Icons.LIBRARY_ICON);
renderer.append(name, mainAttributes);
renderer.append(getLibraryTableComment(library), commentAttributes);
renderer.append(LibraryElementPresentation.getLibraryTableComment(library), commentAttributes);
}
else {
VirtualFile[] files = library.getFiles(OrderRootType.CLASSES);
@@ -47,7 +40,7 @@ public class PackagingEditorUtil {
VirtualFile file = files[0];
renderer.setIcon(file.getIcon());
renderer.append(file.getName(), mainAttributes);
renderer.append(getLibraryTableComment(library), commentAttributes);
renderer.append(LibraryElementPresentation.getLibraryTableComment(library), commentAttributes);
}
else {
OrderEntryCellAppearanceUtils.forLibrary(library).customize(renderer);
@@ -55,20 +48,6 @@ public class PackagingEditorUtil {
}
}
public static String getLibraryTableComment(final Library library) {
LibraryTable libraryTable = library.getTable();
String displayName;
if (libraryTable != null) {
displayName = libraryTable.getPresentation().getDisplayName(false);
}
else {
Module module = ((LibraryImpl)library).getModule();
String tableName = getLibraryTableDisplayName(library);
displayName = module != null ? "'" + module.getName() + "' " + tableName : tableName;
}
return " (" + displayName + ")";
}
public static void renderLibraryFile(final ColoredTreeCellRenderer renderer, final Library library, final VirtualFile file,
final SimpleTextAttributes mainAttributes, final SimpleTextAttributes commentAttributes) {
renderer.setIcon(file.getIcon());
@@ -78,7 +57,7 @@ public class PackagingEditorUtil {
if (name != null) {
StringBuilder comment = new StringBuilder();
comment.append(" ('").append(name).append("' ");
comment.append(getLibraryTableDisplayName(library));
comment.append(LibraryElementPresentation.getLibraryTableDisplayName(library));
comment.append(")");
renderer.append(comment.toString(), commentAttributes);
}
@@ -86,7 +65,7 @@ public class PackagingEditorUtil {
Module module = ((LibraryImpl)library).getModule();
String comment;
if (module == null) {
comment = " (" + getLibraryTableDisplayName(library) + ")";
comment = " (" + LibraryElementPresentation.getLibraryTableDisplayName(library) + ")";
}
else {
comment = " " + ProjectBundle.message("node.text.library.of.module", module.getName());
@@ -99,13 +78,13 @@ public class PackagingEditorUtil {
String name = library.getName();
VirtualFile[] files = library.getFiles(OrderRootType.CLASSES);
if (name != null) {
return "'" + name + "' " + getLibraryTableDisplayName(library);
return "'" + name + "' " + LibraryElementPresentation.getLibraryTableDisplayName(library);
}
else if (files.length > 0) {
Module module = ((LibraryImpl)library).getModule();
final String description;
if (module == null) {
description = "(" + getLibraryTableDisplayName(library) + ")";
description = "(" + LibraryElementPresentation.getLibraryTableDisplayName(library) + ")";
}
else {
description = ProjectBundle.message("node.text.library.of.module", module.getName());
@@ -121,10 +100,10 @@ public class PackagingEditorUtil {
String name = library.getName();
VirtualFile[] files = library.getFiles(OrderRootType.CLASSES);
if (name != null) {
return name + (includeTableName ? getLibraryTableComment(library) : "");
return name + (includeTableName ? LibraryElementPresentation.getLibraryTableComment(library) : "");
}
else if (files.length > 0) {
return files[0].getName() + (includeTableName ? getLibraryTableComment(library) : "");
return files[0].getName() + (includeTableName ? LibraryElementPresentation.getLibraryTableComment(library) : "");
}
else {
return ProjectBundle.message("library.empty.item");