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:
Binary file not shown.
@@ -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() {
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -42,6 +42,7 @@ import org.diylc.common.IPlugInPort;
|
||||
import org.diylc.core.IView;
|
||||
import org.diylc.lang.LangUtil;
|
||||
import org.diylc.presenter.Presenter;
|
||||
import org.diylc.serialization.ProjectFileManager;
|
||||
import org.diylc.swing.gui.MainFrame;
|
||||
import org.diylc.swing.gui.TemplateDialog;
|
||||
import org.diylc.swingframework.FontChooserComboBox;
|
||||
@@ -49,6 +50,7 @@ import org.diylc.utils.ResourceLoader;
|
||||
|
||||
import com.apple.eawt.AppEvent;
|
||||
import com.apple.eawt.Application;
|
||||
import com.thoughtworks.xstream.XStream;
|
||||
|
||||
/**
|
||||
* Main class that runs DIYLC.
|
||||
@@ -88,8 +90,12 @@ public class DIYLCStarter {
|
||||
} catch (Exception e) {
|
||||
LOG.error("Could not initialize log4j configuration", e);
|
||||
}
|
||||
|
||||
ConfigurationManager.initialize("diylc");
|
||||
|
||||
// initialize configuration
|
||||
ConfigurationManager configurationManager = ConfigurationManager.getInstance();
|
||||
XStream xStream = configurationManager.getSerializer();
|
||||
ProjectFileManager.configure(xStream);
|
||||
configurationManager.initialize("diylc");
|
||||
|
||||
// disable HIGHLIGHT_CONTINUITY_AREA config, keep it transient
|
||||
ConfigurationManager.getInstance().writeValue(IPlugInPort.HIGHLIGHT_CONTINUITY_AREA, false);
|
||||
|
||||
@@ -86,9 +86,9 @@ public class CanvasPanel extends JComponent implements Autoscroll {
|
||||
|
||||
private HashMap<String, ComponentType> componentTypeCache;
|
||||
|
||||
private IConfigurationManager configManager;
|
||||
private IConfigurationManager<?> configManager;
|
||||
|
||||
public CanvasPanel(IPlugInPort plugInPort, IConfigurationManager configManager) {
|
||||
public CanvasPanel(IPlugInPort plugInPort, IConfigurationManager<?> configManager) {
|
||||
this.plugInPort = plugInPort;
|
||||
this.configManager = configManager;
|
||||
|
||||
|
||||
@@ -117,9 +117,9 @@ public class CanvasPlugin implements IPlugIn, ClipboardOwner {
|
||||
|
||||
private double zoomLevel = 1;
|
||||
|
||||
private IConfigurationManager configManager;
|
||||
private IConfigurationManager<?> configManager;
|
||||
|
||||
public CanvasPlugin(ISwingUI swingUI, IConfigurationManager configManager) {
|
||||
public CanvasPlugin(ISwingUI swingUI, IConfigurationManager<?> configManager) {
|
||||
this.swingUI = swingUI;
|
||||
this.configManager = configManager;
|
||||
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
|
||||
|
||||
@@ -17,7 +17,7 @@ public class TestBase {
|
||||
protected IView view;
|
||||
|
||||
public TestBase() {
|
||||
ConfigurationManager.initialize("diylc-test");
|
||||
ConfigurationManager.getInstance().initialize("diylc-test");
|
||||
view = new MockView();
|
||||
presenter = new Presenter(view, InMemoryConfigurationManager.getInstance());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user