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 1c4103c6bb04..c392afa1df99 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 @@ -68,7 +68,7 @@ class AddLibraryAction extends AddItemPopupAction { } @Nullable - protected ClasspathTableItem createTableItem(final Library item) { + protected ClasspathTableItem createTableItem(final Library item) { // clear invalid order entry corresponding to added library if any final ModifiableRootModel rootModel = myClasspathPanel.getRootModel(); final OrderEntry[] orderEntries = rootModel.getOrderEntries(); @@ -85,7 +85,7 @@ class AddLibraryAction extends AddItemPopupAction { } } } - return ClasspathTableItem.createLibItem(rootModel.addLibraryEntry(item)); + return ClasspathTableItem.createLibItem(rootModel.addLibraryEntry(item), myContext); } protected ClasspathElementChooser createChooser() { 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 55179b2df49f..0242fe83344c 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 @@ -32,17 +32,17 @@ class AddNewLibraryItemAction extends ChooseAndAddAction { myContext = context; } - protected ClasspathTableItem createTableItem(final Library item) { + protected ClasspathTableItem createTableItem(final Library item) { final OrderEntry[] entries = myClasspathPanel.getRootModel().getOrderEntries(); for (OrderEntry entry : entries) { if (entry instanceof LibraryOrderEntry) { final LibraryOrderEntry libraryOrderEntry = (LibraryOrderEntry)entry; if (item.equals(libraryOrderEntry.getLibrary())) { - return ClasspathTableItem.createLibItem(libraryOrderEntry); + return ClasspathTableItem.createLibItem(libraryOrderEntry, myContext); } } } - return ClasspathTableItem.createLibItem(myClasspathPanel.getRootModel().addLibraryEntry(item)); + return ClasspathTableItem.createLibItem(myClasspathPanel.getRootModel().addLibraryEntry(item), myContext); } protected ClasspathElementChooser createChooser() { diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddSingleEntryModuleLibraryAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddSingleEntryModuleLibraryAction.java index 480c5ab6993c..e71657f8c199 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddSingleEntryModuleLibraryAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/AddSingleEntryModuleLibraryAction.java @@ -21,6 +21,7 @@ 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.LibraryTable; +import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; import com.intellij.util.Icons; /** @@ -28,18 +29,22 @@ import com.intellij.util.Icons; */ class AddSingleEntryModuleLibraryAction extends AddItemPopupAction { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.roots.ui.configuration.classpath.AddSingleEntryModuleLibraryAction"); + private StructureConfigurableContext myContext; - public AddSingleEntryModuleLibraryAction(final ClasspathPanel classpathPanel, int actionIndex) { + public AddSingleEntryModuleLibraryAction(final ClasspathPanel classpathPanel, + int actionIndex, + StructureConfigurableContext context) { super(classpathPanel, actionIndex, ProjectBundle.message("classpath.add.simple.module.library.action"), Icons.JAR_ICON); + myContext = context; } - protected ClasspathTableItem createTableItem(final Library item) { + protected ClasspathTableItem createTableItem(final Library item) { final OrderEntry[] entries = myClasspathPanel.getRootModel().getOrderEntries(); for (OrderEntry entry : entries) { if (entry instanceof LibraryOrderEntry) { final LibraryOrderEntry libraryOrderEntry = (LibraryOrderEntry)entry; if (item.equals(libraryOrderEntry.getLibrary())) { - return ClasspathTableItem.createLibItem(libraryOrderEntry); + return ClasspathTableItem.createLibItem(libraryOrderEntry, myContext); } } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ChooseAndAddAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ChooseAndAddAction.java index 7cdb4f578343..40b3e0b1ab92 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ChooseAndAddAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ChooseAndAddAction.java @@ -44,9 +44,9 @@ public abstract class ChooseAndAddAction extends ClasspathPanelAction if (chosen.isEmpty()) { return; } - List toAdd = new ArrayList(); + List> toAdd = new ArrayList>(); for (ItemType item : chosen) { - final ClasspathTableItem tableItem = createTableItem(item); + final ClasspathTableItem tableItem = createTableItem(item); if (tableItem != null) { toAdd.add(tableItem); } @@ -59,7 +59,7 @@ public abstract class ChooseAndAddAction extends ClasspathPanelAction } @Nullable - protected abstract ClasspathTableItem createTableItem(final ItemType item); + protected abstract ClasspathTableItem createTableItem(final ItemType item); @Nullable protected abstract ClasspathElementChooser createChooser(); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanel.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanel.java index 93303e504f51..1bb2a80b76cc 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanel.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanel.java @@ -27,7 +27,7 @@ import java.util.List; public interface ClasspathPanel { void runClasspathPanelAction(Runnable action); - void addItems(List toAdd); + void addItems(List> toAdd); ModifiableRootModel getRootModel(); 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 dd023a9a6d21..046e26fdc72e 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 @@ -76,7 +76,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { super(new BorderLayout()); myState = state; - myModel = new ClasspathTableModel(state); + myModel = new ClasspathTableModel(state, getStructureConfigurableContext()); myEntryTable = new Table(myModel); myEntryTable.setShowGrid(false); myEntryTable.setDragEnabled(false); @@ -111,7 +111,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { } public String getElementText(Object element) { - return getCellAppearance((ClasspathTableItem)element, getStructureConfigurableContext(), false).getText(); + return getCellAppearance((ClasspathTableItem)element, getStructureConfigurableContext(), false).getText(); } public void selectElement(Object element, String selectedText) { @@ -137,7 +137,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { final int[] selectedRows = myEntryTable.getSelectedRows(); boolean currentlyMarked = true; for (final int selectedRow : selectedRows) { - final ClasspathTableItem item = myModel.getItemAt(myEntryTable.convertRowIndexToModel(selectedRow)); + final ClasspathTableItem item = myModel.getItemAt(myEntryTable.convertRowIndexToModel(selectedRow)); if (selectedRow < 0 || !item.isExportable()) { return; } @@ -262,7 +262,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { for (final int selectedRow : selectedRows) { minRow = Math.min(minRow, selectedRow); maxRow = Math.max(maxRow, selectedRow); - final ClasspathTableItem item = myModel.getItemAt(selectedRow); + final ClasspathTableItem item = myModel.getItemAt(selectedRow); if (!item.isRemovable()) { removeButtonEnabled = false; } @@ -270,7 +270,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { upButton.setEnabled(minRow > 0 && minRow < myEntryTable.getRowCount()); downButton.setEnabled(maxRow >= 0 && maxRow < myEntryTable.getRowCount() - 1); removeButton.setEnabled(removeButtonEnabled); - ClasspathTableItem selectedItem = selectedRows.length == 1 ? myModel.getItemAt(selectedRows[0]) : null; + ClasspathTableItem selectedItem = selectedRows.length == 1 ? myModel.getItemAt(selectedRows[0]) : null; myEditButton.setEnabled(selectedItem != null && selectedItem.isEditable()); } }); @@ -339,7 +339,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { return; } for (final Object removedRow : removedRows) { - final ClasspathTableItem item = (ClasspathTableItem)((Object[])removedRow)[ClasspathTableModel.ITEM_COLUMN]; + final ClasspathTableItem item = (ClasspathTableItem)((Object[])removedRow)[ClasspathTableModel.ITEM_COLUMN]; final OrderEntry orderEntry = item.getEntry(); if (orderEntry == null) { continue; @@ -358,7 +358,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { myEditButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { final int row = myEntryTable.getSelectedRow(); - final ClasspathTableItem item = myModel.getItemAt(row); + final ClasspathTableItem item = myModel.getItemAt(row); final OrderEntry entry = item.getEntry(); if (!(entry instanceof LibraryOrderEntry)) return; @@ -417,8 +417,8 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { } @Override - public void addItems(List toAdd) { - for (ClasspathTableItem item : toAdd) { + public void addItems(List> toAdd) { + for (ClasspathTableItem item : toAdd) { myModel.addItem(item); } myModel.fireTableDataChanged(); @@ -453,12 +453,13 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { if (myPopupActions == null) { int actionIndex = 1; final List> actions = new ArrayList>(); - actions.add(new AddSingleEntryModuleLibraryAction(this, actionIndex++)); - actions.add(new AddLibraryAction(this, actionIndex++, ProjectBundle.message("classpath.add.library.action"), getStructureConfigurableContext())); + final StructureConfigurableContext context = getStructureConfigurableContext(); + actions.add(new AddSingleEntryModuleLibraryAction(this, actionIndex++, context)); + actions.add(new AddLibraryAction(this, actionIndex++, ProjectBundle.message("classpath.add.library.action"), context)); actions.add(new AddItemPopupAction(this, actionIndex, ProjectBundle.message("classpath.add.module.dependency.action"), StdModuleTypes.JAVA.getNodeIcon(false)) { - protected ClasspathTableItem createTableItem(final Module item) { - return ClasspathTableItem.createItem(getRootModel().addModuleOrderEntry(item)); + protected ClasspathTableItem createTableItem(final Module item) { + return ClasspathTableItem.createItem(getRootModel().addModuleOrderEntry(item), context); } protected ClasspathElementChooser createChooser() { final List chooseItems = getDependencyModules(); @@ -533,7 +534,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { private int moveRow(final int row, final int increment) { int newIndex = Math.abs(row + increment) % myModel.getRowCount(); - final ClasspathTableItem item = myModel.removeDataRow(row); + final ClasspathTableItem item = myModel.removeDataRow(row); myModel.addItemAt(item, newIndex); return newIndex; } @@ -593,7 +594,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { } - private static CellAppearance getCellAppearance(final ClasspathTableItem item, + private static CellAppearance getCellAppearance(final ClasspathTableItem item, StructureConfigurableContext context, final boolean selected) { if (item instanceof InvalidJdkItem) { @@ -616,8 +617,13 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { setPaintFocusBorder(false); setFocusBorderAroundIcon(true); setBorder(NO_FOCUS_BORDER); - if (value instanceof ClasspathTableItem) { - getCellAppearance((ClasspathTableItem)value, myContext, selected).customize(this); + if (value instanceof ClasspathTableItem) { + final ClasspathTableItem tableItem = (ClasspathTableItem)value; + getCellAppearance(tableItem, myContext, selected).customize(this); + String tooltip = tableItem.getTooltipText(); + if (tooltip != null) { + setToolTipText(tooltip); + } } } } @@ -666,7 +672,7 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { protected ProjectStructureElement getSelectedElement() { int row = myEntryTable.getSelectedRow(); if (0 <= row && row < myModel.getRowCount()) { - ClasspathTableItem item = myModel.getItemAt(row); + ClasspathTableItem item = myModel.getItemAt(row); final OrderEntry entry = item.getEntry(); if (entry instanceof LibraryOrderEntry) { final Library library = ((LibraryOrderEntry)entry).getLibrary(); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathTableItem.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathTableItem.java index 3b6689d3383a..f11e2295eaec 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathTableItem.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathTableItem.java @@ -16,41 +16,38 @@ package com.intellij.openapi.roots.ui.configuration.classpath; import com.intellij.openapi.roots.*; +import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; import org.jetbrains.annotations.Nullable; /** * @author nik */ -class ClasspathTableItem { - @Nullable protected final OrderEntry myEntry; +class ClasspathTableItem { + @Nullable protected final T myEntry; private final boolean myRemovable; @Nullable - public static ClasspathTableItem createItem(OrderEntry orderEntry) { + public static ClasspathTableItem createItem(OrderEntry orderEntry, StructureConfigurableContext context) { if (orderEntry instanceof JdkOrderEntry) { - return new ClasspathTableItem(orderEntry, false); + return new ClasspathTableItem(orderEntry, false); } else if (orderEntry instanceof LibraryOrderEntry) { - return createLibItem((LibraryOrderEntry)orderEntry); + return createLibItem((LibraryOrderEntry)orderEntry, context); } else if (orderEntry instanceof ModuleOrderEntry) { - return new ClasspathTableItem(orderEntry, true); + return new ClasspathTableItem(orderEntry, true); } else if (orderEntry instanceof ModuleSourceOrderEntry) { - return new ClasspathTableItem(orderEntry, false); + return new ClasspathTableItem(orderEntry, false); } return null; } - public static ClasspathTableItem createLibItem(LibraryOrderEntry orderEntry) { - return new ClasspathTableItem(orderEntry, true) { - public boolean isEditable() { - return myEntry != null && myEntry.isValid(); - } - }; + public static ClasspathTableItem createLibItem(final LibraryOrderEntry orderEntry, final StructureConfigurableContext context) { + return new LibraryItem(orderEntry, context); } - protected ClasspathTableItem(@Nullable OrderEntry entry, boolean removable) { + protected ClasspathTableItem(@Nullable T entry, boolean removable) { myEntry = entry; myRemovable = removable; } @@ -81,7 +78,7 @@ class ClasspathTableItem { } @Nullable - public final OrderEntry getEntry() { + public final T getEntry() { return myEntry; } @@ -92,4 +89,10 @@ class ClasspathTableItem { public boolean isEditable() { return false; } + + @Nullable + public String getTooltipText() { + return null; + } + } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathTableModel.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathTableModel.java index 554b319af505..9bc20263db10 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathTableModel.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathTableModel.java @@ -19,6 +19,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationState; +import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; import com.intellij.util.ui.ItemRemovable; import javax.swing.table.AbstractTableModel; @@ -35,11 +36,13 @@ class ClasspathTableModel extends AbstractTableModel implements ItemRemovable { public static final int EXPORT_COLUMN = 0; public static final int ITEM_COLUMN = 1; public static final int SCOPE_COLUMN = 2; - private final List myItems = new ArrayList(); + private final List> myItems = new ArrayList>(); private final ModuleConfigurationState myState; + private StructureConfigurableContext myContext; - public ClasspathTableModel(final ModuleConfigurationState state) { + public ClasspathTableModel(final ModuleConfigurationState state, StructureConfigurableContext context) { myState = state; + myContext = context; init(); } @@ -54,26 +57,26 @@ class ClasspathTableModel extends AbstractTableModel implements ItemRemovable { if (orderEntry instanceof JdkOrderEntry) { hasJdkOrderEntry = true; } - addItem(ClasspathTableItem.createItem(orderEntry)); + addItem(ClasspathTableItem.createItem(orderEntry, myContext)); } if (!hasJdkOrderEntry) { addItemAt(new InvalidJdkItem(), 0); } } - public ClasspathTableItem getItemAt(int row) { + public ClasspathTableItem getItemAt(int row) { return myItems.get(row); } - public void addItem(ClasspathTableItem item) { + public void addItem(ClasspathTableItem item) { myItems.add(item); } - public void addItemAt(ClasspathTableItem item, int row) { + public void addItemAt(ClasspathTableItem item, int row) { myItems.add(row, item); } - public ClasspathTableItem removeDataRow(int row) { + public ClasspathTableItem removeDataRow(int row) { return myItems.remove(row); } @@ -90,7 +93,7 @@ class ClasspathTableModel extends AbstractTableModel implements ItemRemovable { } public Object getValueAt(int rowIndex, int columnIndex) { - final ClasspathTableItem item = myItems.get(rowIndex); + final ClasspathTableItem item = myItems.get(rowIndex); if (columnIndex == EXPORT_COLUMN) { return item.isExported(); } @@ -105,7 +108,7 @@ class ClasspathTableModel extends AbstractTableModel implements ItemRemovable { } public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - final ClasspathTableItem item = myItems.get(rowIndex); + final ClasspathTableItem item = myItems.get(rowIndex); if (columnIndex == EXPORT_COLUMN) { item.setExported(((Boolean)aValue).booleanValue()); } @@ -143,7 +146,7 @@ class ClasspathTableModel extends AbstractTableModel implements ItemRemovable { public boolean isCellEditable(int row, int column) { if (column == EXPORT_COLUMN || column == SCOPE_COLUMN) { - final ClasspathTableItem item = myItems.get(row); + final ClasspathTableItem item = myItems.get(row); return item != null && item.isExportable(); } return false; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/InvalidJdkItem.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/InvalidJdkItem.java index b9da44577a5c..551a30891ea1 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/InvalidJdkItem.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/InvalidJdkItem.java @@ -15,10 +15,12 @@ */ package com.intellij.openapi.roots.ui.configuration.classpath; +import com.intellij.openapi.roots.OrderEntry; + /** * @author nik */ -public class InvalidJdkItem extends ClasspathTableItem { +public class InvalidJdkItem extends ClasspathTableItem { public InvalidJdkItem() { super(null, false); } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/LibraryItem.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/LibraryItem.java new file mode 100644 index 000000000000..193cc4ae2326 --- /dev/null +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/LibraryItem.java @@ -0,0 +1,51 @@ +/* + * Copyright 2000-2010 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.roots.ui.configuration.classpath; + +import com.intellij.openapi.roots.LibraryOrderEntry; +import com.intellij.openapi.roots.libraries.Library; +import com.intellij.openapi.roots.ui.configuration.libraries.LibraryPresentationManager; +import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; +import com.intellij.openapi.util.text.StringUtil; + +import java.util.List; + +/** +* @author nik +*/ +class LibraryItem extends ClasspathTableItem { + private final StructureConfigurableContext myContext; + + public LibraryItem(LibraryOrderEntry orderEntry, StructureConfigurableContext context) { + super(orderEntry, true); + myContext = context; + } + + public boolean isEditable() { + return myEntry != null && myEntry.isValid(); + } + + @Override + public String getTooltipText() { + if (myEntry == null) return null; + + final Library library = myEntry.getLibrary(); + if (library == null) return null; + + final List descriptions = LibraryPresentationManager.getInstance().getDescriptions(library, myContext); + return "" + StringUtil.join(descriptions, "
") + ""; + } +} diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryPresentationProvider.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryPresentationProvider.java index 64b9cb4aa8cb..45cd17473487 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryPresentationProvider.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryPresentationProvider.java @@ -38,12 +38,19 @@ public class GroovyLibraryPresentationProvider extends LibraryPresentationProvid return properties.getManager().getIcon(); } + @Override + public String getDescription(@NotNull GroovyLibraryProperties properties) { + final String version = properties.getVersion(); + return properties.getManager().getLibraryCategoryName() + " library" + (version != null ? " of version " + version : ":"); + } + @Override public GroovyLibraryProperties detect(@NotNull List classesRoots) { final VirtualFile[] libraryFiles = classesRoots.toArray(new VirtualFile[classesRoots.size()]); final LibraryManager manager = LibraryManager.findManagerFor(AbstractGroovyLibraryManager.EP_NAME.getExtensions(), libraryFiles); if (manager != null) { - return new GroovyLibraryProperties(manager); + final String version = manager.getLibraryVersion(libraryFiles); + return new GroovyLibraryProperties(manager, version); } return null; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryProperties.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryProperties.java index 0bf1976c6927..b3625bf5d354 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryProperties.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryProperties.java @@ -16,21 +16,29 @@ package org.jetbrains.plugins.groovy.config; import com.intellij.openapi.roots.libraries.LibraryProperties; +import org.jetbrains.annotations.Nullable; /** * @author nik */ public class GroovyLibraryProperties extends LibraryProperties { private LibraryManager myManager; + private String myVersion; - public GroovyLibraryProperties(LibraryManager manager) { + public GroovyLibraryProperties(LibraryManager manager, String version) { myManager = manager; + myVersion = version; } public LibraryManager getManager() { return myManager; } + @Nullable + public String getVersion() { + return myVersion; + } + @Override public GroovyLibraryProperties getState() { return null;