mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-11 01:32:08 +10:00
serialize config using the same XStream as for the project
This commit is contained in:
@@ -110,9 +110,9 @@ public class DrawingManager {
|
||||
private long statReportFrequencyMs = 1000 * 60;
|
||||
private Counter totalStats = new Counter();
|
||||
|
||||
private IConfigurationManager configManager;
|
||||
private IConfigurationManager<?> configManager;
|
||||
|
||||
public DrawingManager(MessageDispatcher<EventType> messageDispatcher, IConfigurationManager configManager) {
|
||||
public DrawingManager(MessageDispatcher<EventType> messageDispatcher, IConfigurationManager<?> configManager) {
|
||||
super();
|
||||
this.messageDispatcher = messageDispatcher;
|
||||
this.configManager = configManager;
|
||||
|
||||
@@ -191,7 +191,7 @@ public class Presenter implements IPlugInPort {
|
||||
private Rectangle selectionRect;
|
||||
|
||||
private final IView view;
|
||||
private IConfigurationManager configManager;
|
||||
private IConfigurationManager<?> configManager;
|
||||
|
||||
private MessageDispatcher<EventType> messageDispatcher;
|
||||
|
||||
@@ -209,7 +209,7 @@ public class Presenter implements IPlugInPort {
|
||||
|
||||
private DIYTest test = null;
|
||||
|
||||
public Presenter(IView view, IConfigurationManager configManager) {
|
||||
public Presenter(IView view, IConfigurationManager<?> configManager) {
|
||||
super();
|
||||
this.view = view;
|
||||
this.configManager = configManager;
|
||||
|
||||
@@ -3209,5 +3209,25 @@
|
||||
</changes>
|
||||
<url>https://github.com/bancika/diy-layout-creator/releases</url>
|
||||
</org.diylc.appframework.update.Version>
|
||||
<org.diylc.appframework.update.Version>
|
||||
<versionNumber>
|
||||
<major>4</major>
|
||||
<minor>10</minor>
|
||||
<build>0</build>
|
||||
</versionNumber>
|
||||
<releaseDate>2020-09-18 00:00:00.000 CET</releaseDate>
|
||||
<name></name>
|
||||
<changes>
|
||||
<org.diylc.appframework.update.Change>
|
||||
<changeType>IMPROVEMENT</changeType>
|
||||
<description>Store configuration using the same XML format used for serializing DIY files</description>
|
||||
</org.diylc.appframework.update.Change>
|
||||
<org.diylc.appframework.update.Change>
|
||||
<changeType>BUG_FIX</changeType>
|
||||
<description>Favorites on building blocks show up as "null"</description>
|
||||
</org.diylc.appframework.update.Change>
|
||||
</changes>
|
||||
<url>https://github.com/bancika/diy-layout-creator/releases</url>
|
||||
</org.diylc.appframework.update.Version>
|
||||
</a>
|
||||
</java.util.Arrays_-ArrayList>
|
||||
|
||||
@@ -125,7 +125,9 @@ public class AreaConverter implements Converter {
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public boolean canConvert(Class clazz) {
|
||||
public boolean canConvert(Class clazz) {
|
||||
if (clazz == null)
|
||||
return false;
|
||||
return Area.class.isAssignableFrom(clazz);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,9 @@ public class ColorConverter extends com.thoughtworks.xstream.converters.extended
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public boolean canConvert(Class clazz) {
|
||||
public boolean canConvert(Class clazz) {
|
||||
if (clazz == null)
|
||||
return false;
|
||||
return Color.class.isAssignableFrom(clazz);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,9 @@ public class FontConverter extends com.thoughtworks.xstream.converters.extended.
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public boolean canConvert(Class clazz) {
|
||||
public boolean canConvert(Class clazz) {
|
||||
if (clazz == null)
|
||||
return false;
|
||||
return Font.class.isAssignableFrom(clazz);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,9 @@ public class MeasureConverter implements Converter {
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public boolean canConvert(Class clazz) {
|
||||
public boolean canConvert(Class clazz) {
|
||||
if (clazz == null)
|
||||
return false;
|
||||
return AbstractMeasure.class.isAssignableFrom(clazz);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,15 +47,29 @@ public class PointConverter implements Converter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
|
||||
double x = Double.parseDouble(reader.getAttribute("x"));
|
||||
double y = Double.parseDouble(reader.getAttribute("y"));
|
||||
return new Point2D.Double(x * Constants.PIXELS_PER_INCH, y * Constants.PIXELS_PER_INCH);
|
||||
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
|
||||
double x;
|
||||
double y;
|
||||
if (reader.hasMoreChildren()) {
|
||||
reader.moveDown();
|
||||
x = Double.parseDouble(reader.getValue());
|
||||
reader.moveUp();
|
||||
reader.moveDown();
|
||||
y = Double.parseDouble(reader.getValue());
|
||||
reader.moveUp();
|
||||
return new Point2D.Double(x, y);
|
||||
} else {
|
||||
x = Double.parseDouble(reader.getAttribute("x"));
|
||||
y = Double.parseDouble(reader.getAttribute("y"));
|
||||
return new Point2D.Double(x * Constants.PIXELS_PER_INCH, y * Constants.PIXELS_PER_INCH);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Override
|
||||
public boolean canConvert(Class clazz) {
|
||||
public boolean canConvert(Class clazz) {
|
||||
if (clazz == null)
|
||||
return false;
|
||||
return Point2D.class.isAssignableFrom(clazz);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,13 +96,21 @@ public class ProjectFileManager {
|
||||
};
|
||||
}
|
||||
};
|
||||
configure(xStream);
|
||||
this.xStreamOld = new XStream(new DomDriver());
|
||||
xStreamOld.autodetectAnnotations(true);
|
||||
this.messageDispatcher = messageDispatcher;
|
||||
}
|
||||
|
||||
public static void configure(XStream xStream) {
|
||||
xStream.autodetectAnnotations(true);
|
||||
xStream.alias("point", java.awt.geom.Point2D.class);
|
||||
xStream.alias("point", java.awt.geom.Point2D.Double.class);
|
||||
xStream.alias("font", java.awt.Font.class);
|
||||
// xStream.alias("color", java.awt.Color.class);
|
||||
xStream.alias("project", Project.class);
|
||||
xStream.aliasPackage("diylc", "org.diylc.components");
|
||||
xStream.registerConverter(new PointConverter());
|
||||
xStream.aliasPackage("diylc", "org.diylc.components");
|
||||
xStream.registerConverter(new PointConverter());
|
||||
xStream.registerConverter(new ColorConverter());
|
||||
xStream.registerConverter(new FontConverter());
|
||||
xStream.registerConverter(new MeasureConverter());
|
||||
@@ -116,10 +124,7 @@ public class ProjectFileManager {
|
||||
xStream.addImmutableType(org.diylc.core.measures.Current.class);
|
||||
xStream.addImmutableType(org.diylc.core.measures.Power.class);
|
||||
xStream.addImmutableType(org.diylc.core.measures.Inductance.class);
|
||||
xStream.addImmutableType(org.diylc.core.measures.Size.class);
|
||||
this.xStreamOld = new XStream(new DomDriver());
|
||||
xStreamOld.autodetectAnnotations(true);
|
||||
this.messageDispatcher = messageDispatcher;
|
||||
xStream.addImmutableType(org.diylc.core.measures.Size.class);
|
||||
}
|
||||
|
||||
public void startNewFile() {
|
||||
|
||||
Reference in New Issue
Block a user