diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java index 2c0b6686ddb9..e2489df17ff1 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java @@ -252,7 +252,7 @@ public class LibraryOptionsPanel implements Disposable { private void doCreate() { final NewLibraryConfiguration libraryConfiguration = mySettings.getLibraryDescription().createNewLibrary(myPanel, getBaseDirectory()); if (libraryConfiguration != null) { - final NewLibraryEditor libraryEditor = new NewLibraryEditor(); + final NewLibraryEditor libraryEditor = new NewLibraryEditor(libraryConfiguration.getLibraryType(), libraryConfiguration.getProperties()); libraryEditor.setName(myLibrariesContainer.suggestUniqueLibraryName(libraryConfiguration.getDefaultLibraryName())); libraryConfiguration.addRoots(libraryEditor); if (myLibraryComboBoxModel.get(0) == null) { diff --git a/java/idea-ui/src/com/intellij/framework/library/impl/DownloadableLibraryEditor.java b/java/idea-ui/src/com/intellij/framework/library/impl/DownloadableLibraryEditor.java index a52040e9758d..8869844290bd 100644 --- a/java/idea-ui/src/com/intellij/framework/library/impl/DownloadableLibraryEditor.java +++ b/java/idea-ui/src/com/intellij/framework/library/impl/DownloadableLibraryEditor.java @@ -57,6 +57,7 @@ public class DownloadableLibraryEditor extends LibraryPropertiesEditor { myLibraryType = libraryType; updateDescription(); myCurrentVersionString = myEditorComponent.getProperties().getVersionString(); + myChangeVersionButton.setVisible(!myEditorComponent.isNewLibrary()); myChangeVersionButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/CustomLibraryDescriptionBase.java b/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/CustomLibraryDescriptionBase.java index 3e4c1bfa40b9..f38787f33257 100644 --- a/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/CustomLibraryDescriptionBase.java +++ b/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/CustomLibraryDescriptionBase.java @@ -15,6 +15,7 @@ */ package com.intellij.ide.util.frameworkSupport; +import com.intellij.framework.library.LibraryVersionProperties; import com.intellij.ide.IdeBundle; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; @@ -46,7 +47,7 @@ public abstract class CustomLibraryDescriptionBase extends CustomLibraryDescript if (files.length == 0) { return null; } - return new NewLibraryConfiguration(myDefaultLibraryName) { + return new NewLibraryConfiguration(myDefaultLibraryName, getDownloadableLibraryType(), new LibraryVersionProperties()) { @Override public void addRoots(@NotNull LibraryEditor editor) { for (VirtualFile file : files) { diff --git a/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/CustomLibraryDescriptionImpl.java b/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/CustomLibraryDescriptionImpl.java index 1b862cb1abca..15cb3b424ddd 100644 --- a/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/CustomLibraryDescriptionImpl.java +++ b/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/CustomLibraryDescriptionImpl.java @@ -17,6 +17,7 @@ package com.intellij.ide.util.frameworkSupport; import com.intellij.framework.library.DownloadableLibraryDescription; import com.intellij.framework.library.DownloadableLibraryType; +import com.intellij.framework.library.LibraryVersionProperties; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.roots.libraries.LibraryType; import com.intellij.openapi.roots.ui.configuration.libraries.LibraryFilter; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/CreateCustomLibraryAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/CreateCustomLibraryAction.java index 27c8a73c43b9..d6f6a71232b3 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/CreateCustomLibraryAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/CreateCustomLibraryAction.java @@ -57,7 +57,7 @@ public class CreateCustomLibraryAction extends CustomLibraryActionBase { return; } - final NewLibraryEditor libraryEditor = new NewLibraryEditor(); + final NewLibraryEditor libraryEditor = new NewLibraryEditor(libraryConfiguration.getLibraryType(), libraryConfiguration.getProperties()); libraryEditor.setName(libraryConfiguration.getDefaultLibraryName()); libraryConfiguration.addRoots(libraryEditor); LibraryTablesRegistrar registrar = LibraryTablesRegistrar.getInstance(); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/NewLibraryConfiguration.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/NewLibraryConfiguration.java index 0d49470d9f40..1aa57a1ec1d2 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/NewLibraryConfiguration.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/NewLibraryConfiguration.java @@ -15,17 +15,36 @@ */ package com.intellij.openapi.roots.ui.configuration.libraries; +import com.intellij.openapi.roots.libraries.LibraryProperties; +import com.intellij.openapi.roots.libraries.LibraryType; import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * @author nik */ public abstract class NewLibraryConfiguration { - private String myDefaultLibraryName; + private final String myDefaultLibraryName; + private final LibraryType myLibraryType; + private final LibraryProperties myProperties; - protected NewLibraryConfiguration(String defaultLibraryName) { + protected NewLibraryConfiguration(@NotNull String defaultLibraryName) { + this(defaultLibraryName, null, null); + } + + protected

NewLibraryConfiguration(@NotNull String defaultLibraryName, @Nullable LibraryType

libraryType, @Nullable P properties) { myDefaultLibraryName = defaultLibraryName; + myLibraryType = libraryType; + myProperties = properties; + } + + public LibraryType getLibraryType() { + return myLibraryType; + } + + public LibraryProperties getProperties() { + return myProperties; } public String getDefaultLibraryName() { diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java index 6fd95fc5b1f9..05a50f69dbc2 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java @@ -125,6 +125,11 @@ public class LibraryRootsComponent implements Disposable, LibraryEditorComponent return getLibraryEditor().getProperties(); } + @Override + public boolean isNewLibrary() { + return getLibraryEditor() instanceof NewLibraryEditor; + } + public void updatePropertiesLabel() { StringBuilder text = new StringBuilder(); for (String description : LibraryPresentationManager.getInstance().getDescriptions(getLibraryEditor().getFiles(OrderRootType.CLASSES))) { diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/NewLibraryEditor.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/NewLibraryEditor.java index 7020888eacb8..60906d471313 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/NewLibraryEditor.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/NewLibraryEditor.java @@ -47,7 +47,7 @@ public class NewLibraryEditor extends LibraryEditorBase { this(null, null); } - public NewLibraryEditor(LibraryType type, LibraryProperties properties) { + public NewLibraryEditor(@Nullable LibraryType type, @Nullable LibraryProperties properties) { myType = type; myProperties = properties; myRoots = new MultiMap(); diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryImpl.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryImpl.java index 649f05317175..6528132643cd 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryImpl.java @@ -352,7 +352,7 @@ public class LibraryImpl implements LibraryEx.ModifiableModelEx, LibraryEx { final Object state = myProperties.getState(); if (state != null) { final Element propertiesElement = XmlSerializer.serialize(state, SERIALIZATION_FILTERS); - if (propertiesElement != null) { + if (propertiesElement != null && (!propertiesElement.getContent().isEmpty() || !propertiesElement.getAttributes().isEmpty())) { element.addContent(propertiesElement.setName(PROPERTIES_ELEMENT)); } } diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/libraries/ui/LibraryEditorComponent.java b/platform/lang-impl/src/com/intellij/openapi/roots/libraries/ui/LibraryEditorComponent.java index 1162c9dd469b..1d816d2514cc 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/libraries/ui/LibraryEditorComponent.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/libraries/ui/LibraryEditorComponent.java @@ -27,7 +27,9 @@ import org.jetbrains.annotations.Nullable; public interface LibraryEditorComponent

{ @NotNull P getProperties(); - + + boolean isNewLibrary(); + LibraryEditor getLibraryEditor(); @Nullable diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryDescription.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryDescription.java index 36aa97da258a..7b46d9a2cb8c 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryDescription.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/GroovyLibraryDescription.java @@ -19,7 +19,6 @@ import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.roots.libraries.LibraryKind; import com.intellij.openapi.roots.libraries.LibraryPresentationProvider; -import com.intellij.openapi.roots.libraries.LibraryProperties; import com.intellij.openapi.roots.libraries.LibraryType; import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription; import com.intellij.openapi.roots.ui.configuration.libraries.LibraryFilter; @@ -147,7 +146,7 @@ public class GroovyLibraryDescription extends CustomLibraryDescription { } @Nullable - private VirtualFile findFile(String path) { + private static VirtualFile findFile(String path) { if (path != null && path.length() > 0) { return LocalFileSystem.getInstance().findFileByPath(FileUtil.toSystemIndependentName(path)); }