AppletConfiguration — don't save defaults (initial, not all default values are skipped)

This commit is contained in:
Vladimir Krivosheev
2014-11-06 07:13:30 +01:00
parent 705f1e5b0a
commit cf11aaabd1
7 changed files with 125 additions and 51 deletions
@@ -28,7 +28,6 @@ import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.DefaultJDOMExternalizer;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.util.io.FileUtil;
@@ -36,6 +35,8 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.refactoring.listeners.RefactoringElementListener;
import com.intellij.util.xmlb.SmartSerializer;
import com.intellij.util.xmlb.annotations.Transient;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -60,6 +61,7 @@ public class AppletConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
private AppletParameter[] myAppletParameters;
public boolean ALTERNATIVE_JRE_PATH_ENABLED;
public String ALTERNATIVE_JRE_PATH;
@NonNls
protected static final String NAME_ATTR = "name";
@NonNls
@@ -67,8 +69,12 @@ public class AppletConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
@NonNls
protected static final String PARAMETER_ELEMENT_NAME = "parameter";
public AppletConfiguration(final Project project, ConfigurationFactory factory) {
private final SmartSerializer mySerializer;
public AppletConfiguration(@NotNull Project project, ConfigurationFactory factory) {
super(new JavaRunConfigurationModule(project, false), factory);
mySerializer = new SmartSerializer(project.isDefault(), true);
}
@Override
@@ -134,14 +140,15 @@ public class AppletConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
return null;
}
public void setPolicyFile(final String localPath) {
POLICY_FILE = ExternalizablePath.urlValue(localPath);
}
@Transient
public String getPolicyFile() {
return ExternalizablePath.localPathValue(POLICY_FILE);
}
public void setPolicyFile(final String localPath) {
POLICY_FILE = ExternalizablePath.urlValue(localPath);
}
public static class AppletParameter {
public String myName;
public String myValue;
@@ -185,7 +192,7 @@ public class AppletConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
@Override
public void readExternal(final Element parentNode) throws InvalidDataException {
DefaultJDOMExternalizer.readExternal(this, parentNode);
mySerializer.readExternal(this, parentNode);
readModule(parentNode);
final ArrayList<AppletParameter> parameters = new ArrayList<AppletParameter>();
for (final Element element : parentNode.getChildren(PARAMETER_ELEMENT_NAME)) {
@@ -194,10 +201,15 @@ public class AppletConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
myAppletParameters = parameters.toArray(new AppletParameter[parameters.size()]);
}
@Override
protected boolean isNewSerializationUsed() {
return true;
}
@Override
public void writeExternal(final Element parentNode) throws WriteExternalException {
writeModule(parentNode);
DefaultJDOMExternalizer.writeExternal(this, parentNode);
mySerializer.writeExternal(this, parentNode);
if (myAppletParameters != null) {
for (AppletParameter myAppletParameter : myAppletParameters) {
final Element element = new Element(PARAMETER_ELEMENT_NAME);
@@ -263,11 +275,12 @@ public class AppletConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
throw new RuntimeConfigurationWarning("URL " + HTML_FILE_NAME + " is not valid: " + ex.getLocalizedMessage());
}
@Transient
public AppletParameter[] getAppletParameters() {
return myAppletParameters;
}
public void setAppletParameters(final AppletParameter[] appletParameters) {
public void setAppletParameters(AppletParameter[] appletParameters) {
myAppletParameters = appletParameters;
}