From 9f6f03e82772047db7b6e541a10414b87e9768b1 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Sat, 24 Sep 2011 00:15:00 +0200 Subject: [PATCH] Unused --- .../ui/classpath/SimpleClasspathPanel.java | 425 ------------------ 1 file changed, 425 deletions(-) delete mode 100644 platform/lang-impl/src/com/intellij/util/ui/classpath/SimpleClasspathPanel.java diff --git a/platform/lang-impl/src/com/intellij/util/ui/classpath/SimpleClasspathPanel.java b/platform/lang-impl/src/com/intellij/util/ui/classpath/SimpleClasspathPanel.java deleted file mode 100644 index 3d06a19d9c61..000000000000 --- a/platform/lang-impl/src/com/intellij/util/ui/classpath/SimpleClasspathPanel.java +++ /dev/null @@ -1,425 +0,0 @@ -/* - * Copyright (c) 2000-2006 JetBrains s.r.o. All Rights Reserved. - */ - -package com.intellij.util.ui.classpath; - -import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.ActionManager; -import com.intellij.openapi.actionSystem.ActionPlaces; -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.DefaultActionGroup; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; -import com.intellij.openapi.fileChooser.ex.FileChooserDialogImpl; -import com.intellij.openapi.project.DumbAwareAction; -import com.intellij.openapi.project.ProjectBundle; -import com.intellij.openapi.roots.OrderRootType; -import com.intellij.openapi.roots.impl.libraries.LibraryTableImplUtil; -import com.intellij.openapi.roots.libraries.Library; -import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar; -import com.intellij.openapi.roots.ui.util.OrderEntryCellAppearanceUtils; -import com.intellij.openapi.roots.ui.util.SimpleTextCellAppearance; -import com.intellij.openapi.ui.Messages; -import com.intellij.openapi.ui.ex.MultiLineLabel; -import com.intellij.openapi.ui.popup.JBPopup; -import com.intellij.openapi.ui.popup.JBPopupFactory; -import com.intellij.openapi.ui.popup.PopupStep; -import com.intellij.openapi.ui.popup.util.BaseListPopupStep; -import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.util.IconLoader; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.ui.ColoredListCellRenderer; -import com.intellij.ui.ReorderableListController; -import com.intellij.ui.ScrollPaneFactory; -import com.intellij.ui.components.JBList; -import com.intellij.util.PathUtil; -import com.intellij.util.PlatformIcons; -import com.intellij.util.containers.ContainerUtil; -import gnu.trove.THashSet; -import org.jetbrains.annotations.NotNull; - -import javax.swing.*; -import javax.swing.event.ListDataEvent; -import javax.swing.event.ListDataListener; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.*; -import java.util.List; - -/** - * @author Gregory.Shrago - */ -public class SimpleClasspathPanel extends JPanel { - - private final JList myList = new JBList(); - private final DefaultListModel myListModel = new DefaultListModel(); - private URLClassLoader myClassLoader; - private final Disposable myDisposable; - - - public SimpleClasspathPanel(final List classpathElements, final Disposable parentDisposable) { - myDisposable = parentDisposable; - for (Library library : getLibrariesList(classpathElements, parentDisposable)) { - myListModel.addElement(library); - } - init(); - } - - private void init() { - setLayout(new BorderLayout()); - myList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); - myList.setModel(myListModel); - final DefaultActionGroup actionGroup = new DefaultActionGroup(); - final ReorderableListController controller = ReorderableListController.create(myList, actionGroup); - controller.addAction(new AddAction()); - controller.addRemoveAction(ProjectBundle.message("module.remove.action")); - controller.addMoveUpAction(); - controller.addMoveDownAction(); - customizeToolbarActions(actionGroup); - myList.setCellRenderer(new ColoredListCellRenderer() { - protected void customizeCellRenderer(JList list, Object value, int index, boolean selected, boolean hasFocus) { - if (value instanceof Library) { - final Library library = (Library)value; - if (library.getName() != null && library.getUrls(OrderRootType.CLASSES).length == 0) { - SimpleTextCellAppearance.invalid(library.getName(), PlatformIcons.LIBRARY_ICON).customize(this); - } - else { - OrderEntryCellAppearanceUtils.forLibrary(library).customize(this); - } - } - } - }); - add(ActionManager.getInstance().createActionToolbar(ActionPlaces.PROJECT_VIEW_TOOLBAR, actionGroup, true).getComponent(), BorderLayout.NORTH); - final JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myList); - add(scrollPane, BorderLayout.CENTER); - final FontMetrics fontMetrics = myList.getFontMetrics(myList.getFont()); - scrollPane.setPreferredSize(new Dimension(0, fontMetrics.getHeight() * 12)); - myList.getModel().addListDataListener(new ListDataListener() { - public void intervalAdded(ListDataEvent e) { - } - - public void intervalRemoved(ListDataEvent e) { - listChanged(e); - } - - public void contentsChanged(ListDataEvent e) { - } - }); - } - - protected void customizeToolbarActions(DefaultActionGroup actionGroup) { - } - - private void listChanged(final ListDataEvent e) { - myClassLoader = null; - processClasspathChanged(); - } - - public void processClasspathChanged() { - } - - public List getOrderedLibraries() { - final ArrayList result = new ArrayList(); - for (final Enumeration enumeration = myListModel.elements(); enumeration.hasMoreElements(); ) { - result.add((Library)enumeration.nextElement()); - } - return result; - } - - public Set getVirtualFiles() { - final THashSet result = new THashSet(); - for (final Enumeration enumeration = myListModel.elements(); enumeration.hasMoreElements(); ) { - final Library library = (Library)enumeration.nextElement(); - ContainerUtil.addAll(result, library.getFiles(OrderRootType.CLASSES)); - } - return result; - } - - public URLClassLoader getClasspathLoader(ClassLoader parent) { - if (myClassLoader == null || myClassLoader.getParent() != parent) { - ArrayList urlList = new ArrayList(); - for (Library library : getOrderedLibraries()) { - for (VirtualFile virtualFile : library.getFiles(OrderRootType.CLASSES)) { - final File file = new File(PathUtil.toPresentableUrl(virtualFile.getUrl())); - try { - urlList.add(file.toURL()); - } - catch (MalformedURLException e) { - } - } - } - URL[] urls = urlList.toArray(new URL[urlList.size()]); - myClassLoader = new URLClassLoader(urls, parent); - } - return myClassLoader; - } - - public static void scrollSelectionToVisible(JList list){ - ListSelectionModel selectionModel = list.getSelectionModel(); - int maxSelectionIndex = selectionModel.getMaxSelectionIndex(); - int minSelectionIndex = selectionModel.getMinSelectionIndex(); - if(maxSelectionIndex == -1){ - return; - } - Rectangle cellRect = list.getCellBounds(minSelectionIndex, maxSelectionIndex); - list.scrollRectToVisible(cellRect); - } - - private static Collection ensureApplicationLevel(final Library library, final Set existingFiles, - final Disposable parentDisposable) { - if (library.getTable() == null || !LibraryTablesRegistrar.APPLICATION_LEVEL.equals(library.getTable().getTableLevel())) { - final ArrayList result = new ArrayList(); - for (VirtualFile file : library.getFiles(OrderRootType.CLASSES)) { - if (!existingFiles.add(file)) continue; - final Library newLibrary = LibraryTableImplUtil.createModuleLevelLibrary(null, null, null); - Disposer.register(parentDisposable, newLibrary); - final Library.ModifiableModel libModel = newLibrary.getModifiableModel(); - libModel.addRoot(file, OrderRootType.CLASSES); - libModel.commit(); - result.add(newLibrary); - } - return result; - } - return Collections.singletonList(library); - } - - public abstract static class PopupAction implements ActionListener { - private final String myTitle; - private final Icon myIcon; - private final int myIndex; - - protected PopupAction(String title, Icon icon, final int index) { - myTitle = title; - myIcon = icon; - myIndex = index; - } - - public String getTitle() { - return myTitle; - } - - public Icon getIcon() { - return myIcon; - } - - public int getIndex() { - return myIndex; - } - - protected abstract void executeImpl(); - - public void execute() { - executeImpl(); - } - - public void actionPerformed(ActionEvent e) { - executeImpl(); - } - } - - public static abstract class PopupActionGroupAction extends DumbAwareAction { - private PopupAction[] myPopupActions; - private Icon[] myIcons; - - protected PopupActionGroupAction(String text, String description, Icon icon) { - super(text, description, icon); - } - - private void initPopupActions() { - if (myPopupActions == null) { - myPopupActions = createPopupActions(); - - myIcons = new Icon[myPopupActions.length]; - for (int idx = 0; idx < myPopupActions.length; idx++) { - myIcons[idx] = myPopupActions[idx].getIcon(); - } - } - } - - protected abstract PopupAction[] createPopupActions(); - - public void actionPerformed(final AnActionEvent e) { - initPopupActions(); - final JBPopup popup = JBPopupFactory.getInstance().createListPopup(new BaseListPopupStep(null, myPopupActions, myIcons) { - public boolean isMnemonicsNavigationEnabled() { - return true; - } - - public PopupStep onChosen(final PopupAction selectedValue, final boolean finalChoice) { - return doFinalStep(new Runnable() { - public void run() { - selectedValue.execute(); - } - }); - } - - @NotNull - public String getTextFor(PopupAction value) { - return "&" + value.getIndex() + " " + value.getTitle(); - } - }); - popup.showUnderneathOf(e.getInputEvent().getComponent()); - } - } - - private class AddAction extends PopupActionGroupAction { - - public AddAction() { - super(ProjectBundle.message("module.add.action"), null, IconLoader.getIcon("/general/add.png")); - } - - protected PopupAction[] createPopupActions() { - int index = 1; - final List actions = new ArrayList(); - actions.add(new ChooseAndAddAction(index++, "Jar...", PlatformIcons.JAR_ICON) { - @NotNull - protected List doChoose() { - final ChooseJarDialog dialog = new ChooseJarDialog(SimpleClasspathPanel.this, getVirtualFiles(), myDisposable); - dialog.doChoose(); - return dialog.getChosenElements(); - } - }); - actions.add(new ChooseAndAddAction(index++, "Library...", PlatformIcons.LIBRARY_ICON) { - - @NotNull - protected List doChoose() { - final Set existingFiles = getVirtualFiles(); - final ChooseLibrariesDialogBase dialog = new SimpleClasspathChooseLibrariesDialog(SimpleClasspathPanel.this, existingFiles); - dialog.show(); - final List libraries = dialog.getSelectedLibraries(); - final ArrayList result = new ArrayList(); - for (Library o : libraries) { - result.addAll(ensureApplicationLevel(o, existingFiles, myDisposable)); - } - return result; - } - }); - return actions.toArray(new PopupAction[actions.size()]); - } - - } - - private static class SimpleClasspathChooseLibrariesDialog extends ChooseLibrariesDialogBase { - private final Set myExistingFiles; - - public SimpleClasspathChooseLibrariesDialog(JComponent parentComponent, Set existingFiles) { - super(parentComponent, "Choose Existing Libraries"); - myExistingFiles = existingFiles; - init(); - } - - @Override - protected boolean acceptsElement(final Object element) { - if (!(element instanceof Library)) return true; - final Library library = (Library)element; - return !myExistingFiles.containsAll(Arrays.asList(library.getFiles(OrderRootType.CLASSES))); - } - - @Override - protected JComponent createCenterPanel() { - final JPanel panel = new JPanel(new BorderLayout()); - panel.add(super.createCenterPanel(), BorderLayout.CENTER); - final MultiLineLabel label = new MultiLineLabel("Please note that project-level and module-level libraries will not be\n\n" + - " added as a whole but will be converted to jars and folders instead."); - label.setIcon(Messages.getWarningIcon()); - label.setIcon(Messages.getWarningIcon()); - panel.add(label, BorderLayout.SOUTH); - return panel; - } - } - - - private abstract class ChooseAndAddAction extends PopupAction { - public ChooseAndAddAction(int index, String title, Icon icon) { - super(title, icon, index); - } - - protected final void executeImpl() { - final List libraries = doChoose(); - if (libraries.isEmpty()) return; - final int index0 = myListModel.size(); - for (Library library : libraries) { - myListModel.addElement(library); - } - final int index1 = myListModel.size()-1; - final ListSelectionModel selectionModel = myList.getSelectionModel(); - final int rowCount = myList.getModel().getSize(); - selectionModel.setSelectionInterval(rowCount - libraries.size(), rowCount - 1); - scrollSelectionToVisible(myList); - listChanged(new ListDataEvent(myListModel, ListDataEvent.INTERVAL_ADDED, index0, index1)); - } - - @NotNull - protected abstract List doChoose(); - } - - private static class ChooseJarDialog extends FileChooserDialogImpl { - private VirtualFile[] myLastChosen; - private final Disposable myParentDisposable; - - public ChooseJarDialog(Component parent, final Set existingFiles, final Disposable disposable) { - super(new FileChooserDescriptor(false, true, true, false, false, true) { - @Override - public boolean isFileVisible(final VirtualFile file, final boolean showHiddenFiles) { - if (!super.isFileVisible(file, showHiddenFiles)) return false; - return file.isDirectory() || !existingFiles.contains(file); - } - }, parent); - myParentDisposable = disposable; - } - - public List getChosenElements() { - if (myLastChosen == null) { - return Collections.emptyList(); - } - final VirtualFile[] files = myLastChosen; - if (files.length == 0) { - return Collections.emptyList(); - } - final List addedLibraries = new ArrayList(files.length); - for (VirtualFile file : files) { - final Library library = LibraryTableImplUtil.createModuleLevelLibrary(null, null, null); - Disposer.register(myParentDisposable, library); - final Library.ModifiableModel libModel = library.getModifiableModel(); - libModel.addRoot(file, OrderRootType.CLASSES); - libModel.commit(); - addedLibraries.add(library); - } - return addedLibraries; - } - - public void doChoose() { - myLastChosen = choose(null, null); - } - } - - private static List getLibrariesList(final List classpathElements, final Disposable disposable) { - ArrayList result = new ArrayList(); - for (SimpleClasspathElement classpathElement : classpathElements) { - final Library library = classpathElement.getLibrary(); - if (library != null && library.getTable() != null) { - result.add(library); - } - else { - final Library newLibrary = LibraryTableImplUtil.createModuleLevelLibrary(null, null, null); - Disposer.register(disposable, newLibrary); - final Library.ModifiableModel libModel = newLibrary.getModifiableModel(); - final String libName = classpathElement.getLibraryName(); - if (libName != null) libModel.setName(libName); - List fileUrls = classpathElement.getClassesRootUrls(); - for (final String fileUrl : fileUrls) { - libModel.addRoot(fileUrl, OrderRootType.CLASSES); - } - libModel.commit(); - result.add(newLibrary); - } - } - return result; - } - -}