void (final String homePath, final SdkType sdkType) { if (homePath == null) { return; } setHomePathValue(homePath.replace('/', File.separatorChar)); try { final Sdk dummySdk = (Sdk)mySdk.clone(); SdkModificator sdkModificator = dummySdk.getSdkModificator(); sdkModificator.setHomePath(homePath); sdkModificator.removeAllRoots(); sdkModificator.commitChanges(); sdkType.setupSdkPaths(dummySdk, mySdkModel); clearAllPaths(); myVersionString = dummySdk.getVersionString(); if (myVersionString == null) { Messages.showMessageDialog(ProjectBundle.message("sdk.java.corrupt.error", homePath), ProjectBundle.message("sdk.java.corrupt.title"), Messages.getErrorIcon()); } sdkModificator = dummySdk.getSdkModificator(); for (OrderRootType type : myPathEditors.keySet()) { SdkPathEditor pathEditor = myPathEditors.get(type); pathEditor.setAddBaseDir(dummySdk.getHomeDirectory()); pathEditor.addPaths(sdkModificator.getRoots(type)); } mySdkModel.getMulticaster().sdkHomeSelected(dummySdk, homePath); } catch (CloneNotSupportedException e) { LOG.error(e); // should not happen in normal program } }