RunnerLayout — don't write defaults

This commit is contained in:
Vladimir Krivosheev
2014-10-07 11:45:19 +02:00
parent 245b22d1b2
commit 91385467d6
3 changed files with 18 additions and 36 deletions
@@ -24,6 +24,8 @@ import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.content.Content;
import com.intellij.util.containers.hash.LinkedHashMap;
import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters;
import com.intellij.util.xmlb.XmlSerializer;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
@@ -38,7 +40,7 @@ public class RunnerLayout {
public static final Key<Integer> DROP_INDEX = Key.create("RunnerLayoutDropIndex");
private final String myID;
protected Map<String, ViewImpl> myViews = new HashMap<String, ViewImpl>();
protected Map<String, ViewImpl> myViews = new LinkedHashMap<String, ViewImpl>();
private final Map<String, ViewImpl.Default> myDefaultViews = new HashMap<String, ViewImpl.Default>();
protected Set<TabImpl> myTabs = new TreeSet<TabImpl>(new Comparator<TabImpl>() {
@@ -138,10 +140,11 @@ public class RunnerLayout {
@NotNull
public Element read(@NotNull Element parentNode) {
List tabs = parentNode.getChildren(StringUtil.getShortName(TabImpl.class.getName()));
for (Object eachTabElement : tabs) {
TabImpl eachTab = new TabImpl((Element)eachTabElement);
getOrCreateTab(eachTab.getIndex()).read((Element)eachTabElement);
List<Element> tabs = parentNode.getChildren(StringUtil.getShortName(TabImpl.class.getName()));
for (Element eachTabElement : tabs) {
TabImpl eachTab = XmlSerializer.deserialize(eachTabElement, TabImpl.class);
assert eachTab != null;
XmlSerializer.deserializeInto(getOrCreateTab(eachTab.getIndex()), eachTabElement);
}
final List views = parentNode.getChildren(StringUtil.getShortName(ViewImpl.class.getName()));
@@ -158,16 +161,17 @@ public class RunnerLayout {
@NotNull
public Element write(@NotNull Element parentNode) {
for (ViewImpl eachState : myViews.values()) {
eachState.write(parentNode);
parentNode.addContent(XmlSerializer.serialize(eachState));
}
SkipDefaultValuesSerializationFilters filter = new SkipDefaultValuesSerializationFilters();
for (TabImpl eachTab : myTabs) {
if (isUsed(eachTab)) {
eachTab.write(parentNode);
parentNode.addContent(XmlSerializer.serialize(eachTab, filter));
}
}
parentNode.addContent(XmlSerializer.serialize(myGeneral));
parentNode.addContent(XmlSerializer.serialize(myGeneral, filter));
return parentNode;
}
@@ -213,12 +217,11 @@ public class RunnerLayout {
@NotNull
private ViewImpl getOrCreateView(@NotNull String id) {
if (myViews.containsKey(id)) {
return myViews.get(id);
ViewImpl view = myViews.get(id);
if (view == null) {
view = getOrCreateDefault(id).createView(this);
myViews.put(id, view);
}
final ViewImpl.Default defaultView = getOrCreateDefault(id);
final ViewImpl view = defaultView.createView(this);
myViews.put(id, view);
return view;
}
@@ -16,23 +16,12 @@
package com.intellij.execution.ui.layout.impl;
import com.intellij.execution.ui.layout.Tab;
import com.intellij.execution.ui.layout.PlaceInGrid;
import com.intellij.util.xmlb.XmlSerializer;
import org.jdom.Element;
import com.intellij.execution.ui.layout.Tab;
import javax.swing.*;
public class TabImpl extends AbstractTab implements Tab {
public TabImpl(Element element) {
read(element);
}
public void read(final Element element) {
XmlSerializer.deserializeInto(this, element);
}
TabImpl() {
}
@@ -66,12 +55,6 @@ public class TabImpl extends AbstractTab implements Tab {
myDisplayName = displayName;
}
public void write(final Element parentNode) {
final Element element = XmlSerializer.serialize(this);
parentNode.addContent(element);
}
public float getLeftProportion() {
return myLeftProportion;
}
@@ -16,9 +16,9 @@
package com.intellij.execution.ui.layout.impl;
import com.intellij.execution.ui.layout.PlaceInGrid;
import com.intellij.execution.ui.layout.Tab;
import com.intellij.execution.ui.layout.View;
import com.intellij.execution.ui.layout.PlaceInGrid;
import com.intellij.openapi.util.Key;
import com.intellij.util.xmlb.XmlSerializer;
import org.jdom.Element;
@@ -51,10 +51,6 @@ public class ViewImpl implements View {
assignTab(settings.getOrCreateTab(myTabIndex));
}
public void write(final Element content) {
content.addContent(XmlSerializer.serialize(this));
}
@Override
public Tab getTab() {
return myTab;