update copyright
[fedora-idea.git] / java / java-impl / src / com / intellij / openapi / projectRoots / impl / JavaAwareProjectJdkTableImpl.java
blob25c66a44db93fa8dc1640a34e61c4d087a20fb10
1 /*
2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 * User: anna
19 * Date: 19-Feb-2008
21 package com.intellij.openapi.projectRoots.impl;
23 import com.intellij.openapi.components.RoamingType;
24 import com.intellij.openapi.components.ServiceManager;
25 import com.intellij.openapi.components.State;
26 import com.intellij.openapi.components.Storage;
27 import com.intellij.openapi.project.ProjectBundle;
28 import com.intellij.openapi.projectRoots.JavaSdk;
29 import com.intellij.openapi.projectRoots.ProjectJdkTable;
30 import com.intellij.openapi.projectRoots.Sdk;
31 import com.intellij.openapi.projectRoots.SdkType;
32 import com.intellij.util.SystemProperties;
33 import org.jdom.Element;
35 @State(
36 name="ProjectJdkTable",
37 roamingType = RoamingType.DISABLED,
38 storages= {
39 @Storage(
40 id="other",
41 file = "$APP_CONFIG$/jdk.table.xml"
44 public class JavaAwareProjectJdkTableImpl extends ProjectJdkTableImpl {
45 public static JavaAwareProjectJdkTableImpl getInstanceEx() {
46 return (JavaAwareProjectJdkTableImpl)ServiceManager.getService(ProjectJdkTable.class);
49 private final JavaSdk myJavaSdk;
50 private Sdk myInternalJdk;
52 public JavaAwareProjectJdkTableImpl(final JavaSdk javaSdk) {
53 myJavaSdk = javaSdk;
56 public Sdk getInternalJdk() {
57 if (myInternalJdk == null) {
58 final String jdkHome = SystemProperties.getJavaHome();
59 final String versionName = ProjectBundle.message("sdk.java.name.template", SystemProperties.getJavaVersion());
60 myInternalJdk = myJavaSdk.createJdk(versionName, jdkHome);
62 return myInternalJdk;
65 @Override
66 public void removeJdk(final Sdk jdk) {
67 super.removeJdk(jdk);
68 if (jdk.equals(myInternalJdk)) {
69 myInternalJdk = null;
73 @Override
74 public SdkType getDefaultSdkType() {
75 return myJavaSdk;
78 @Override
79 public void loadState(final Element element) {
80 myInternalJdk = null;
81 try {
82 super.loadState(element);
84 finally {
85 getInternalJdk();
89 @Override
90 protected String getSdkTypeName(final String type) {
91 return type != null ? type : JavaSdk.getInstance().getName();