diff --git a/java/idea-ui/src/com/intellij/openapi/projectRoots/ui/SdkEditor.java b/java/idea-ui/src/com/intellij/openapi/projectRoots/ui/SdkEditor.java index d1c7ed1c22ac..3dcfaf2d750c 100644 --- a/java/idea-ui/src/com/intellij/openapi/projectRoots/ui/SdkEditor.java +++ b/java/idea-ui/src/com/intellij/openapi/projectRoots/ui/SdkEditor.java @@ -62,7 +62,7 @@ import java.util.Set; public class SdkEditor implements Configurable, Place.Navigator { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.projectRoots.ui.SdkEditor"); private Sdk mySdk; - private final Map myPathEditors = new HashMap(); + private final Map myPathEditors = new HashMap(); private TextFieldWithBrowseButton myHomeComponent; private final Map myAdditionalDataConfigurables = new HashMap(); @@ -131,7 +131,7 @@ public class SdkEditor implements Configurable, Place.Navigator { myTabbedPane = new TabbedPaneWrapper(myDisposable); for (OrderRootType type : OrderRootType.getAllTypes()) { if (mySdk == null || showTabForType(type)) { - final PathEditor pathEditor = OrderRootTypeUIFactory.FACTORY.getByKey(type).createPathEditor(mySdk); + final SdkPathEditor pathEditor = OrderRootTypeUIFactory.FACTORY.getByKey(type).createPathEditor(mySdk); if (pathEditor != null) { myTabbedPane.addTab(pathEditor.getDisplayName(), pathEditor.createComponent()); myPathEditors.put(type, pathEditor); @@ -201,7 +201,7 @@ public class SdkEditor implements Configurable, Place.Navigator { myInitialPath = mySdk.getHomePath(); final SdkModificator sdkModificator = mySdk.getSdkModificator(); sdkModificator.setHomePath(getHomeValue().replace(File.separatorChar, '/')); - for (PathEditor pathEditor : myPathEditors.values()) { + for (SdkPathEditor pathEditor : myPathEditors.values()) { pathEditor.apply(sdkModificator); } ApplicationManager.getApplication().runWriteAction(new Runnable() { // fix SCR #29193 @@ -219,7 +219,7 @@ public class SdkEditor implements Configurable, Place.Navigator { public void reset(){ if (mySdk == null){ setHomePathValue(""); - for (PathEditor pathEditor : myPathEditors.values()) { + for (SdkPathEditor pathEditor : myPathEditors.values()) { pathEditor.reset(null); } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/AnnotationsOrderRootTypeUIFactory.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/AnnotationsOrderRootTypeUIFactory.java index 6d6daa4b2f69..77948135226c 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/AnnotationsOrderRootTypeUIFactory.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/AnnotationsOrderRootTypeUIFactory.java @@ -23,7 +23,7 @@ package com.intellij.openapi.roots.ui.configuration.libraryEditor; import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.projectRoots.ui.PathEditor; +import com.intellij.openapi.projectRoots.ui.SdkPathEditor; import com.intellij.openapi.roots.AnnotationOrderRootType; import com.intellij.openapi.roots.ui.OrderRootTypeUIFactory; import com.intellij.openapi.util.IconLoader; @@ -43,8 +43,8 @@ public class AnnotationsOrderRootTypeUIFactory implements OrderRootTypeUIFactory return ProjectBundle.message("sdk.configure.annotations.tab"); } - public PathEditor createPathEditor(Sdk sdk) { - return new PathEditor(ProjectBundle.message("sdk.configure.annotations.tab"), AnnotationOrderRootType.getInstance(), + public SdkPathEditor createPathEditor(Sdk sdk) { + return new SdkPathEditor(ProjectBundle.message("sdk.configure.annotations.tab"), AnnotationOrderRootType.getInstance(), FileChooserDescriptorFactory.createSingleFolderDescriptor()); } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/ClassesOrderRootTypeUIFactory.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/ClassesOrderRootTypeUIFactory.java index 5670ef01b81f..8ec292373297 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/ClassesOrderRootTypeUIFactory.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/ClassesOrderRootTypeUIFactory.java @@ -23,7 +23,7 @@ package com.intellij.openapi.roots.ui.configuration.libraryEditor; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.projectRoots.ui.PathEditor; +import com.intellij.openapi.projectRoots.ui.SdkPathEditor; import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.ui.OrderRootTypeUIFactory; import com.intellij.openapi.util.IconLoader; @@ -33,8 +33,8 @@ import javax.swing.*; public class ClassesOrderRootTypeUIFactory implements OrderRootTypeUIFactory { private static final Icon ICON = IconLoader.getIcon("/nodes/compiledClassesFolder.png"); - public PathEditor createPathEditor(Sdk sdk) { - return new PathEditor(ProjectBundle.message("sdk.configure.classpath.tab"), OrderRootType.CLASSES, new FileChooserDescriptor(true, true, true, false, true, true)); + public SdkPathEditor createPathEditor(Sdk sdk) { + return new SdkPathEditor(ProjectBundle.message("sdk.configure.classpath.tab"), OrderRootType.CLASSES, new FileChooserDescriptor(true, true, true, false, true, true)); } @Override diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/JavadocOrderRootTypeUIFactory.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/JavadocOrderRootTypeUIFactory.java index 1ce1106df716..803ea45c1ae3 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/JavadocOrderRootTypeUIFactory.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/JavadocOrderRootTypeUIFactory.java @@ -20,13 +20,12 @@ */ package com.intellij.openapi.roots.ui.configuration.libraryEditor; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.projectRoots.JavaSdkVersion; import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.projectRoots.ui.PathEditor; +import com.intellij.openapi.projectRoots.ui.SdkPathEditor; import com.intellij.openapi.projectRoots.ui.Util; import com.intellij.openapi.roots.JavadocOrderRootType; import com.intellij.openapi.roots.ui.OrderRootTypeUIFactory; @@ -38,7 +37,7 @@ import javax.swing.*; public class JavadocOrderRootTypeUIFactory implements OrderRootTypeUIFactory { private static final Icon ICON = IconLoader.getIcon("/nodes/javaDocFolder.png"); - public PathEditor createPathEditor(Sdk sdk) { + public SdkPathEditor createPathEditor(Sdk sdk) { return new JavadocPathsEditor(sdk); } @@ -52,7 +51,7 @@ public class JavadocOrderRootTypeUIFactory implements OrderRootTypeUIFactory { return ProjectBundle.message("library.javadocs.node"); } - static class JavadocPathsEditor extends PathEditor { + static class JavadocPathsEditor extends SdkPathEditor { private final Sdk mySdk; public JavadocPathsEditor(Sdk sdk) { diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/SourcesOrderRootTypeUIFactory.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/SourcesOrderRootTypeUIFactory.java index a0f58c5ac57e..4edc0f1a2ee8 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/SourcesOrderRootTypeUIFactory.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/SourcesOrderRootTypeUIFactory.java @@ -23,9 +23,9 @@ package com.intellij.openapi.roots.ui.configuration.libraryEditor; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.roots.ui.OrderRootTypeUIFactory; -import com.intellij.openapi.projectRoots.ui.PathEditor; +import com.intellij.openapi.projectRoots.ui.SdkPathEditor; import com.intellij.openapi.roots.OrderRootType; +import com.intellij.openapi.roots.ui.OrderRootTypeUIFactory; import com.intellij.openapi.roots.ui.configuration.PathUIUtils; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.vfs.VirtualFile; @@ -36,8 +36,8 @@ import java.awt.*; public class SourcesOrderRootTypeUIFactory implements OrderRootTypeUIFactory { private static final Icon ICON = IconLoader.getIcon("/nodes/sourceFolder.png"); - public PathEditor createPathEditor(Sdk sdk) { - return new PathEditor(ProjectBundle.message("sdk.configure.sourcepath.tab"), OrderRootType.SOURCES, new FileChooserDescriptor(true, true, true, false, true, true)) { + public SdkPathEditor createPathEditor(Sdk sdk) { + return new SdkPathEditor(ProjectBundle.message("sdk.configure.sourcepath.tab"), OrderRootType.SOURCES, new FileChooserDescriptor(true, true, true, false, true, true)) { @Override protected VirtualFile[] adjustAddedFileSet(final Component component, final VirtualFile[] files) { return PathUIUtils.scanAndSelectDetectedJavaSourceRoots(component, files); diff --git a/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/PathEditor.java b/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/PathEditor.java index 3dbd72a2b024..8d8e1174b486 100644 --- a/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/PathEditor.java +++ b/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/PathEditor.java @@ -15,7 +15,6 @@ */ package com.intellij.openapi.projectRoots.ui; -import com.google.common.collect.Lists; import com.intellij.ide.DataManager; import com.intellij.openapi.actionSystem.CommonShortcuts; import com.intellij.openapi.actionSystem.PlatformDataKeys; @@ -28,8 +27,6 @@ import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; -import com.intellij.openapi.projectRoots.SdkModificator; -import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.vfs.JarFileSystem; @@ -45,7 +42,6 @@ import com.intellij.util.containers.HashSet; import com.intellij.util.ui.UIUtil; import gnu.trove.TIntArrayList; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.event.ListSelectionEvent; @@ -77,21 +73,14 @@ public class PathEditor { private boolean myEnabled = false; private static final Icon ICON_INVALID = IconLoader.getIcon("/nodes/ppInvalid.png"); private static final Icon ICON_EMPTY = IconLoader.getIcon("/nodes/emptyNode.png"); - private final String myDisplayName; - private final OrderRootType myOrderRootType; private final FileChooserDescriptor myDescriptor; - public PathEditor(final String displayName, - final OrderRootType orderRootType, - final FileChooserDescriptor descriptor) { - myDisplayName = displayName; - myOrderRootType = orderRootType; + public PathEditor(final FileChooserDescriptor descriptor) { myDescriptor = descriptor; myDescriptor.putUserData(FileChooserDialog.PREFER_LAST_OVER_TO_SELECT, Boolean.TRUE); myModel = createListModel(); } - protected void setEnabled(boolean enabled) { myEnabled = enabled; } @@ -103,10 +92,6 @@ public class PathEditor { protected void onSpecifyUrlButtonClicked() { } - public String getDisplayName() { - return myDisplayName; - } - protected void setModified(boolean modified) { myModified = modified; } @@ -115,20 +100,6 @@ public class PathEditor { return myModified; } - public OrderRootType getOrderRootType() { - return myOrderRootType; - } - - public void apply(SdkModificator sdkModificator) { - sdkModificator.removeRoots(myOrderRootType); - // add all items - for (int i = 0; i < getRowCount(); i++) { - sdkModificator.addRoot(getValueAt(i), myOrderRootType); - } - setModified(false); - updateButtons(); - } - public VirtualFile[] getRoots() { final int count = getRowCount(); if (count == 0) { @@ -152,15 +123,6 @@ public class PathEditor { updateButtons(); } - public void reset(@Nullable SdkModificator modificator) { - if (modificator != null) { - resetPath(Lists.newArrayList(modificator.getRoots(myOrderRootType))); - } - else { - setEnabled(false); - } - } - public JComponent createComponent() { myPanel = new JPanel(new GridBagLayout()); @@ -282,7 +244,7 @@ public class PathEditor { return files; } - protected void updateButtons() { + public void updateButtons() { Object[] values = getSelectedRoots(); myRemoveButton.setEnabled((values.length > 0) && myEnabled); myAddButton.setEnabled(myEnabled); @@ -389,11 +351,11 @@ public class PathEditor { return myList.getSelectedValues(); } - private int getRowCount() { + protected int getRowCount() { return getListModel().getSize(); } - private VirtualFile getValueAt(int row) { + protected VirtualFile getValueAt(int row) { return (VirtualFile)getListModel().get(row); } diff --git a/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/SdkPathEditor.java b/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/SdkPathEditor.java new file mode 100644 index 000000000000..09621f3c8fc5 --- /dev/null +++ b/platform/lang-api/src/com/intellij/openapi/projectRoots/ui/SdkPathEditor.java @@ -0,0 +1,61 @@ +/* + * Copyright 2000-2011 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.projectRoots.ui; + +import com.google.common.collect.Lists; +import com.intellij.openapi.fileChooser.FileChooserDescriptor; +import com.intellij.openapi.projectRoots.SdkModificator; +import com.intellij.openapi.roots.OrderRootType; +import org.jetbrains.annotations.Nullable; + +public class SdkPathEditor extends PathEditor { + private final String myDisplayName; + private final OrderRootType myOrderRootType; + + public SdkPathEditor(String displayName, OrderRootType orderRootType, FileChooserDescriptor descriptor) { + super(descriptor); + myDisplayName = displayName; + myOrderRootType = orderRootType; + } + + public String getDisplayName() { + return myDisplayName; + } + + public OrderRootType getOrderRootType() { + return myOrderRootType; + } + + public void apply(SdkModificator sdkModificator) { + sdkModificator.removeRoots(myOrderRootType); + // add all items + for (int i = 0; i < getRowCount(); i++) { + sdkModificator.addRoot(getValueAt(i), myOrderRootType); + } + setModified(false); + updateButtons(); + } + + public void reset(@Nullable SdkModificator modificator) { + if (modificator != null) { + resetPath(Lists.newArrayList(modificator.getRoots(myOrderRootType))); + } + else { + setEnabled(false); + } + } + +} diff --git a/platform/lang-api/src/com/intellij/openapi/roots/ui/OrderRootTypeUIFactory.java b/platform/lang-api/src/com/intellij/openapi/roots/ui/OrderRootTypeUIFactory.java index 11e8c96a4275..b86a37a89a37 100644 --- a/platform/lang-api/src/com/intellij/openapi/roots/ui/OrderRootTypeUIFactory.java +++ b/platform/lang-api/src/com/intellij/openapi/roots/ui/OrderRootTypeUIFactory.java @@ -22,6 +22,7 @@ package com.intellij.openapi.roots.ui; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.ui.PathEditor; +import com.intellij.openapi.projectRoots.ui.SdkPathEditor; import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.util.KeyedExtensionFactory; @@ -34,7 +35,7 @@ public interface OrderRootTypeUIFactory { } }; - PathEditor createPathEditor(Sdk sdk); + SdkPathEditor createPathEditor(Sdk sdk); Icon getIcon(); diff --git a/platform/lang-api/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/DocumentationOrderRootTypeUIFactory.java b/platform/lang-api/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/DocumentationOrderRootTypeUIFactory.java index 8fb371be99b9..1c0ec6cf198d 100644 --- a/platform/lang-api/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/DocumentationOrderRootTypeUIFactory.java +++ b/platform/lang-api/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/DocumentationOrderRootTypeUIFactory.java @@ -17,7 +17,7 @@ package com.intellij.openapi.roots.ui.configuration.libraryEditor; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.projectRoots.ui.PathEditor; +import com.intellij.openapi.projectRoots.ui.SdkPathEditor; import com.intellij.openapi.roots.ui.OrderRootTypeUIFactory; import com.intellij.openapi.util.IconLoader; import org.jetbrains.annotations.Nullable; @@ -33,7 +33,7 @@ public class DocumentationOrderRootTypeUIFactory implements OrderRootTypeUIFacto @Override @Nullable - public PathEditor createPathEditor(Sdk sdk) { + public SdkPathEditor createPathEditor(Sdk sdk) { return null; }