From e40851408433ba783791fba1a50476afde5d0f18 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 18 May 2012 19:15:06 +0200 Subject: [PATCH] ProjectJdkImpl -> projectModel-impl --- .../projectRoot/JdkConfigurable.java | 7 ++++--- .../openapi/projectRoots/SdkType.java | 3 +-- .../impl/ProjectJdkTableImpl.java | 17 +++++++++++++++- .../openapi/projectRoots/ProjectJdkTable.java | 2 ++ .../openapi/projectRoots/SdkTypeId.java | 11 ++++++++++ .../projectRoots/impl/ProjectJdkImpl.java | 20 +++++-------------- 6 files changed, 39 insertions(+), 21 deletions(-) rename platform/{lang-impl => projectModel-impl}/src/com/intellij/openapi/projectRoots/impl/ProjectJdkImpl.java (95%) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkConfigurable.java index 092a8be9c07d..ed1a4fa31a08 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkConfigurable.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 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. @@ -20,6 +20,7 @@ import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.projectRoots.SdkType; import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl; import com.intellij.openapi.projectRoots.ui.SdkEditor; import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureElement; @@ -78,13 +79,13 @@ public class JdkConfigurable extends ProjectStructureElementConfigurable im } public Icon getIcon() { - return myProjectJdk.getSdkType().getIcon(); + return ((SdkType) myProjectJdk.getSdkType()).getIcon(); } @Nullable @NonNls public String getHelpTopic() { - return myProjectJdk.getSdkType().getHelpTopic(); + return ((SdkType) myProjectJdk.getSdkType()).getHelpTopic(); } diff --git a/platform/lang-api/src/com/intellij/openapi/projectRoots/SdkType.java b/platform/lang-api/src/com/intellij/openapi/projectRoots/SdkType.java index bf87b86cf7c3..487d53c44b16 100644 --- a/platform/lang-api/src/com/intellij/openapi/projectRoots/SdkType.java +++ b/platform/lang-api/src/com/intellij/openapi/projectRoots/SdkType.java @@ -65,6 +65,7 @@ public abstract class SdkType implements SdkTypeId { public abstract boolean isValidSdkHome(String path); + @Override @Nullable public String getVersionString(Sdk sdk) { return getVersionString(sdk.getHomePath()); @@ -92,8 +93,6 @@ public abstract class SdkType implements SdkTypeId { @Nullable public abstract AdditionalDataConfigurable createAdditionalDataConfigurable(SdkModel sdkModel, SdkModificator sdkModificator); - public abstract void saveAdditionalData(SdkAdditionalData additionalData, Element additional); - @Nullable public SdkAdditionalData loadAdditionalData(Element additional) { return null; diff --git a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkTableImpl.java b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkTableImpl.java index b9e76f1ee391..ad4e6af7a972 100644 --- a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkTableImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkTableImpl.java @@ -223,8 +223,23 @@ public class ProjectJdkTableImpl extends ProjectJdkTable implements PersistentSt return UnknownSdkType.getInstance(null); } + @Override + public SdkTypeId getSdkTypeByName(String sdkTypeName) { + return findSdkTypeByName(sdkTypeName); + } + + public static SdkTypeId findSdkTypeByName(String sdkTypeName) { + final SdkType[] allSdkTypes = SdkType.getAllTypes(); + for (final SdkType type : allSdkTypes) { + if (type.getName().equals(sdkTypeName)) { + return type; + } + } + return UnknownSdkType.getInstance(sdkTypeName); + } + public Sdk createSdk(final String name, final SdkTypeId sdkType) { - return new ProjectJdkImpl(name, (SdkType) sdkType); + return new ProjectJdkImpl(name, sdkType); } public void loadState(Element element) { diff --git a/platform/projectModel-api/src/com/intellij/openapi/projectRoots/ProjectJdkTable.java b/platform/projectModel-api/src/com/intellij/openapi/projectRoots/ProjectJdkTable.java index 93587c9e380f..be74ba224ba0 100644 --- a/platform/projectModel-api/src/com/intellij/openapi/projectRoots/ProjectJdkTable.java +++ b/platform/projectModel-api/src/com/intellij/openapi/projectRoots/ProjectJdkTable.java @@ -70,6 +70,8 @@ public abstract class ProjectJdkTable { public abstract SdkTypeId getDefaultSdkType(); + public abstract SdkTypeId getSdkTypeByName(String name); + public abstract Sdk createSdk(final String name, final SdkTypeId sdkType); public static Topic JDK_TABLE_TOPIC = Topic.create("Project JDK table", Listener.class); diff --git a/platform/projectModel-api/src/com/intellij/openapi/projectRoots/SdkTypeId.java b/platform/projectModel-api/src/com/intellij/openapi/projectRoots/SdkTypeId.java index 895b321f7d72..b4ff27528aab 100644 --- a/platform/projectModel-api/src/com/intellij/openapi/projectRoots/SdkTypeId.java +++ b/platform/projectModel-api/src/com/intellij/openapi/projectRoots/SdkTypeId.java @@ -15,9 +15,20 @@ */ package com.intellij.openapi.projectRoots; +import org.jdom.Element; +import org.jetbrains.annotations.Nullable; + /** * @author yole */ public interface SdkTypeId { String getName(); + + @Nullable + String getVersionString(Sdk sdk); + + void saveAdditionalData(SdkAdditionalData additionalData, Element additional); + + @Nullable + SdkAdditionalData loadAdditionalData(Sdk currentSdk, Element additional); } diff --git a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkImpl.java similarity index 95% rename from platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkImpl.java rename to platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkImpl.java index 1b48bbbcbdce..89bf71de3008 100644 --- a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkImpl.java @@ -48,7 +48,7 @@ public class ProjectJdkImpl extends UserDataHolderBase implements JDOMExternaliz private final MyRootProvider myRootProvider = new MyRootProvider(); private ProjectJdkImpl myOrigin = null; private SdkAdditionalData myAdditionalData = null; - private SdkType mySdkType; + private SdkTypeId mySdkType; @NonNls public static final String ELEMENT_NAME = "name"; @NonNls public static final String ATTRIBUTE_VALUE = "value"; @NonNls public static final String ELEMENT_TYPE = "type"; @@ -61,7 +61,7 @@ public class ProjectJdkImpl extends UserDataHolderBase implements JDOMExternaliz @NonNls public static final String ELEMENT_HOMEPATH = "homePath"; @NonNls private static final String ELEMENT_ADDITIONAL = "additional"; - public ProjectJdkImpl(String name, SdkType sdkType) { + public ProjectJdkImpl(String name, SdkTypeId sdkType) { mySdkType = sdkType; myRootContainer = new ProjectRootContainerImpl(true); myName = name; @@ -69,9 +69,9 @@ public class ProjectJdkImpl extends UserDataHolderBase implements JDOMExternaliz } @NotNull - public SdkType getSdkType() { + public SdkTypeId getSdkType() { if (mySdkType == null) { - mySdkType = (SdkType)ProjectJdkTable.getInstance().getDefaultSdkType(); + mySdkType = ProjectJdkTable.getInstance().getDefaultSdkType(); } return mySdkType; } @@ -121,7 +121,7 @@ public class ProjectJdkImpl extends UserDataHolderBase implements JDOMExternaliz final Element typeChild = element.getChild(ELEMENT_TYPE); final String sdkTypeName = typeChild != null? typeChild.getAttributeValue(ATTRIBUTE_VALUE) : null; if (sdkTypeName != null) { - mySdkType = getSdkTypeByName(sdkTypeName); + mySdkType = ProjectJdkTable.getInstance().getSdkTypeByName(sdkTypeName); } final Element version = element.getChild(ELEMENT_VERSION); @@ -164,16 +164,6 @@ public class ProjectJdkImpl extends UserDataHolderBase implements JDOMExternaliz } } - private static SdkType getSdkTypeByName(String sdkTypeName) { - final SdkType[] allSdkTypes = SdkType.getAllTypes(); - for (final SdkType type : allSdkTypes) { - if (type.getName().equals(sdkTypeName)) { - return type; - } - } - return UnknownSdkType.getInstance(sdkTypeName); - } - public void writeExternal(Element element) throws WriteExternalException { element.setAttribute(ELEMENT_VERSION, "2");