extract SdkPathEditor subclass from PathEditor (to make it easier to use it for editing lists of paths in places which are unrelated to an SDK)

This commit is contained in:
Dmitry Jemerov
2011-09-28 13:57:50 +02:00
parent b95ae38eeb
commit 1b4f1ccebf
9 changed files with 86 additions and 63 deletions
@@ -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<OrderRootType, PathEditor> myPathEditors = new HashMap<OrderRootType, PathEditor>();
private final Map<OrderRootType, SdkPathEditor> myPathEditors = new HashMap<OrderRootType, SdkPathEditor>();
private TextFieldWithBrowseButton myHomeComponent;
private final Map<SdkType, AdditionalDataConfigurable> myAdditionalDataConfigurables = new HashMap<SdkType, AdditionalDataConfigurable>();
@@ -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);
}
}
@@ -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());
}
}
@@ -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
@@ -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) {
@@ -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);