eclipse: collapse src/srclink paths in .iml; compare ids by equals

This commit is contained in:
anna
2010-07-09 20:03:31 +04:00
parent 34371aecb1
commit 78e92b352c
@@ -20,6 +20,7 @@ import com.intellij.openapi.components.*;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleServiceManager;
import com.intellij.openapi.roots.impl.storage.ClasspathStorage;
import com.intellij.openapi.util.text.StringUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
@@ -45,8 +46,9 @@ public class EclipseModuleManager implements PersistentStateComponent<Element>{
private final Set<String> myEclipseUrls = new LinkedHashSet<String>();
private final Set<String> myUnknownCons = new LinkedHashSet<String>();
private boolean myForceConfigureJDK = false;
private static final String SRC_PREFIX = "src:";
private static final String SRC_LINK_PREFIX = "linksrc:";
@NonNls private static final String SRC_PREFIX = "src:";
@NonNls private static final String SRC_LINK_PREFIX = "linksrc:";
@NonNls private static final String PREFIX_ATTR = "kind";
private final Module myModule;
@NonNls private static final String LIBELEMENT = "libelement";
@@ -115,7 +117,7 @@ public class EclipseModuleManager implements PersistentStateComponent<Element>{
}
public Element getState() {
if (ClasspathStorage.getStorageType(myModule) != EclipseClasspathStorageProvider.ID) {
if (!ClasspathStorage.getStorageType(myModule).equals(EclipseClasspathStorageProvider.ID)) {
if (!myEclipseUrls.isEmpty() || !myEclipseVariablePaths.isEmpty() || myForceConfigureJDK || !myUnknownCons.isEmpty()) {
Element root = new Element("EclipseModuleSettings");
for (String eclipseUrl : myEclipseUrls) {
@@ -125,7 +127,15 @@ public class EclipseModuleManager implements PersistentStateComponent<Element>{
}
for (String var : myEclipseVariablePaths.keySet()) {
Element varElement = new Element(VARELEMENT);
varElement.setAttribute(VAR_ATTRIBUTE, var);
if (var.startsWith(SRC_PREFIX)) {
varElement.setAttribute(VAR_ATTRIBUTE, StringUtil.trimStart(var, SRC_PREFIX));
varElement.setAttribute(PREFIX_ATTR, SRC_PREFIX);
} else if (var.startsWith(SRC_LINK_PREFIX)) {
varElement.setAttribute(VAR_ATTRIBUTE, StringUtil.trimStart(var, SRC_LINK_PREFIX));
varElement.setAttribute(PREFIX_ATTR, SRC_LINK_PREFIX);
} else {
varElement.setAttribute(VAR_ATTRIBUTE, var);
}
varElement.setAttribute(VALUE_ATTR, myEclipseVariablePaths.get(var));
root.addContent(varElement);
}
@@ -150,7 +160,8 @@ public class EclipseModuleManager implements PersistentStateComponent<Element>{
}
for (Object o : state.getChildren(VARELEMENT)) {
myEclipseVariablePaths.put(((Element)o).getAttributeValue(VAR_ATTRIBUTE), ((Element)o).getAttributeValue(VALUE_ATTR));
final String prefix = ((Element)o).getAttributeValue(PREFIX_ATTR);
myEclipseVariablePaths.put(((Element)o).getAttributeValue(VAR_ATTRIBUTE), (prefix != null ? prefix : "") + ((Element)o).getAttributeValue(VALUE_ATTR));
}
for (Object o : state.getChildren(CONELEMENT)) {