mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-11 01:32:08 +10:00
add default building blocks functionality
This commit is contained in:
@@ -25,7 +25,8 @@ import java.io.IOException;
|
||||
|
||||
public interface IBlockProcessor {
|
||||
|
||||
public static final String BLOCKS_KEY = "buildingBlocks";
|
||||
public static final String BLOCKS_KEY = "buildingBlocks";
|
||||
public static final String DEFAULT_BLOCKS_IMPORTED_KEY = "defaultBlocksImported";
|
||||
|
||||
void saveSelectionAsBlock(String blockName);
|
||||
|
||||
|
||||
@@ -191,6 +191,7 @@ public class Presenter implements IPlugInPort {
|
||||
// visibleLayers = EnumSet.allOf(ComponentLayer.class);
|
||||
upgradeVariants();
|
||||
importDefaultVariants();
|
||||
importDefaultBlocks();
|
||||
}
|
||||
|
||||
public void installPlugin(IPlugIn plugIn) {
|
||||
@@ -2457,6 +2458,40 @@ public class Presenter implements IPlugInPort {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void importDefaultBlocks() {
|
||||
// import default templates from variants.xml file only if we didn't do it already
|
||||
if (!ConfigurationManager.getInstance().readBoolean(DEFAULT_BLOCKS_IMPORTED_KEY, false)) {
|
||||
try {
|
||||
URL resource = Presenter.class.getResource("blocks.xml");
|
||||
if (resource != null) {
|
||||
BufferedInputStream in = new BufferedInputStream(resource.openStream());
|
||||
XStream xStream = new XStream(new DomDriver());
|
||||
Map<String, List<IDIYComponent<?>>> defaults = (Map<String, List<IDIYComponent<?>>>) xStream.fromXML(in);
|
||||
in.close();
|
||||
|
||||
Map<String, List<IDIYComponent<?>>> blocksMap =
|
||||
(Map<String, List<IDIYComponent<?>>>) ConfigurationManager.getInstance().readObject(BLOCKS_KEY, null);
|
||||
if (blocksMap == null)
|
||||
blocksMap = new HashMap<String, List<IDIYComponent<?>>>();
|
||||
|
||||
// merge default blocks with user's
|
||||
for (Map.Entry<String, List<IDIYComponent<?>>> entry : defaults.entrySet()) {
|
||||
if (!blocksMap.containsKey(entry.getKey()))
|
||||
blocksMap.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
|
||||
// update templates and a flag marking that we imported them
|
||||
ConfigurationManager.getInstance().writeValue(DEFAULT_BLOCKS_IMPORTED_KEY, true);
|
||||
ConfigurationManager.getInstance().writeValue(BLOCKS_KEY, blocksMap);
|
||||
LOG.info(String.format("Imported %d default building blocks", defaults == null ? 0 : defaults.size()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOG.error("Could not load default blocks", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
@@ -2667,7 +2702,31 @@ public class Presenter implements IPlugInPort {
|
||||
}
|
||||
});
|
||||
blocks.put(blockName, blockComponents);
|
||||
ConfigurationManager.getInstance().writeValue(BLOCKS_KEY, blocks);
|
||||
|
||||
if (System.getProperty("org.diylc.WriteStaticBlocks", "false").equalsIgnoreCase("true")) {
|
||||
Map<String, List<IDIYComponent<?>>> defaultBlockMap = new HashMap<String, List<IDIYComponent<?>>>();
|
||||
// unify default and user-variants
|
||||
for (Map.Entry<String, List<IDIYComponent<?>>> entry : blocks.entrySet()) {
|
||||
if (defaultBlockMap.containsKey(entry.getKey())) {
|
||||
defaultBlockMap.get(entry.getKey()).addAll(entry.getValue());
|
||||
} else {
|
||||
defaultBlockMap.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
try {
|
||||
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("blocks.xml"));
|
||||
XStream xStream = new XStream(new DomDriver());
|
||||
xStream.toXML(defaultBlockMap, out);
|
||||
out.close();
|
||||
// no more user variants
|
||||
ConfigurationManager.getInstance().writeValue(BLOCKS_KEY, null);
|
||||
LOG.info("Saved default blocks");
|
||||
} catch (IOException e) {
|
||||
LOG.error("Could not save default blocks", e);
|
||||
}
|
||||
} else {
|
||||
ConfigurationManager.getInstance().writeValue(BLOCKS_KEY, blocks);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
@@ -0,0 +1,385 @@
|
||||
<map>
|
||||
<entry>
|
||||
<string>TO-92 w/ 2 Leads</string>
|
||||
<list>
|
||||
<org.diylc.components.connectivity.Jumper>
|
||||
<name>J1</name>
|
||||
<alpha>127</alpha>
|
||||
<points>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>720</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>740</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>1320</x>
|
||||
<y>250</y>
|
||||
</java.awt.Point>
|
||||
</points>
|
||||
<bodyColor>
|
||||
<red>255</red>
|
||||
<green>255</green>
|
||||
<blue>255</blue>
|
||||
<alpha>255</alpha>
|
||||
</bodyColor>
|
||||
<borderColor>
|
||||
<red>0</red>
|
||||
<green>0</green>
|
||||
<blue>0</blue>
|
||||
<alpha>255</alpha>
|
||||
</borderColor>
|
||||
<labelColor reference="../borderColor"/>
|
||||
<leadColor>
|
||||
<red>117</red>
|
||||
<green>157</green>
|
||||
<blue>175</blue>
|
||||
<alpha>255</alpha>
|
||||
</leadColor>
|
||||
<display>NAME</display>
|
||||
<flipStanding>false</flipStanding>
|
||||
<labelOriantation>Directional</labelOriantation>
|
||||
<moveLabel>false</moveLabel>
|
||||
<style>SOLID</style>
|
||||
</org.diylc.components.connectivity.Jumper>
|
||||
<org.diylc.components.connectivity.Jumper>
|
||||
<name>J2</name>
|
||||
<alpha>127</alpha>
|
||||
<points>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>780</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>760</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>-177</x>
|
||||
<y>1259</y>
|
||||
</java.awt.Point>
|
||||
</points>
|
||||
<bodyColor>
|
||||
<red>255</red>
|
||||
<green>255</green>
|
||||
<blue>255</blue>
|
||||
<alpha>255</alpha>
|
||||
</bodyColor>
|
||||
<borderColor>
|
||||
<red>0</red>
|
||||
<green>0</green>
|
||||
<blue>0</blue>
|
||||
<alpha>255</alpha>
|
||||
</borderColor>
|
||||
<labelColor reference="../borderColor"/>
|
||||
<leadColor>
|
||||
<red>117</red>
|
||||
<green>157</green>
|
||||
<blue>175</blue>
|
||||
<alpha>255</alpha>
|
||||
</leadColor>
|
||||
<display>NAME</display>
|
||||
<flipStanding>false</flipStanding>
|
||||
<labelOriantation>Directional</labelOriantation>
|
||||
<moveLabel>false</moveLabel>
|
||||
<style>SOLID</style>
|
||||
</org.diylc.components.connectivity.Jumper>
|
||||
<org.diylc.components.semiconductors.TransistorTO92>
|
||||
<name>Q1</name>
|
||||
<alpha>100</alpha>
|
||||
<value></value>
|
||||
<orientation>DEFAULT</orientation>
|
||||
<controlPoints>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>740</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>750</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>760</y>
|
||||
</java.awt.Point>
|
||||
</controlPoints>
|
||||
<bodyColor>
|
||||
<red>128</red>
|
||||
<green>128</green>
|
||||
<blue>128</blue>
|
||||
<alpha>255</alpha>
|
||||
</bodyColor>
|
||||
<borderColor>
|
||||
<red>89</red>
|
||||
<green>89</green>
|
||||
<blue>89</blue>
|
||||
<alpha>255</alpha>
|
||||
</borderColor>
|
||||
<labelColor reference="../../org.diylc.components.connectivity.Jumper/borderColor"/>
|
||||
<display>NAME</display>
|
||||
<folded>false</folded>
|
||||
<pinSpacing>
|
||||
<value>0.05</value>
|
||||
<unit class="org.diylc.core.measures.SizeUnit">in</unit>
|
||||
</pinSpacing>
|
||||
</org.diylc.components.semiconductors.TransistorTO92>
|
||||
</list>
|
||||
</entry>
|
||||
<entry>
|
||||
<string>TO-92 w/ 3 Leads</string>
|
||||
<list>
|
||||
<org.diylc.components.connectivity.Jumper>
|
||||
<name>J1</name>
|
||||
<alpha>127</alpha>
|
||||
<points>
|
||||
<java.awt.Point>
|
||||
<x>720</x>
|
||||
<y>620</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>760</x>
|
||||
<y>640</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>650</x>
|
||||
<y>-41</y>
|
||||
</java.awt.Point>
|
||||
</points>
|
||||
<bodyColor>
|
||||
<red>255</red>
|
||||
<green>255</green>
|
||||
<blue>255</blue>
|
||||
<alpha>255</alpha>
|
||||
</bodyColor>
|
||||
<borderColor>
|
||||
<red>0</red>
|
||||
<green>0</green>
|
||||
<blue>0</blue>
|
||||
<alpha>255</alpha>
|
||||
</borderColor>
|
||||
<labelColor reference="../borderColor"/>
|
||||
<leadColor>
|
||||
<red>117</red>
|
||||
<green>157</green>
|
||||
<blue>175</blue>
|
||||
<alpha>255</alpha>
|
||||
</leadColor>
|
||||
<display>NAME</display>
|
||||
<flipStanding>false</flipStanding>
|
||||
<labelOriantation>Directional</labelOriantation>
|
||||
<moveLabel>false</moveLabel>
|
||||
<style>SOLID</style>
|
||||
</org.diylc.components.connectivity.Jumper>
|
||||
<org.diylc.components.connectivity.Jumper>
|
||||
<name>J2</name>
|
||||
<alpha>127</alpha>
|
||||
<points>
|
||||
<java.awt.Point>
|
||||
<x>720</x>
|
||||
<y>680</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>760</x>
|
||||
<y>660</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>-206</x>
|
||||
<y>95</y>
|
||||
</java.awt.Point>
|
||||
</points>
|
||||
<bodyColor>
|
||||
<red>255</red>
|
||||
<green>255</green>
|
||||
<blue>255</blue>
|
||||
<alpha>255</alpha>
|
||||
</bodyColor>
|
||||
<borderColor>
|
||||
<red>0</red>
|
||||
<green>0</green>
|
||||
<blue>0</blue>
|
||||
<alpha>255</alpha>
|
||||
</borderColor>
|
||||
<labelColor reference="../borderColor"/>
|
||||
<leadColor>
|
||||
<red>117</red>
|
||||
<green>157</green>
|
||||
<blue>175</blue>
|
||||
<alpha>255</alpha>
|
||||
</leadColor>
|
||||
<display>NAME</display>
|
||||
<flipStanding>false</flipStanding>
|
||||
<labelOriantation>Directional</labelOriantation>
|
||||
<moveLabel>false</moveLabel>
|
||||
<style>SOLID</style>
|
||||
</org.diylc.components.connectivity.Jumper>
|
||||
<org.diylc.components.connectivity.Jumper>
|
||||
<name>J3</name>
|
||||
<alpha>127</alpha>
|
||||
<points>
|
||||
<java.awt.Point>
|
||||
<x>719</x>
|
||||
<y>650</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>760</x>
|
||||
<y>650</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>147</x>
|
||||
<y>-279</y>
|
||||
</java.awt.Point>
|
||||
</points>
|
||||
<bodyColor>
|
||||
<red>255</red>
|
||||
<green>255</green>
|
||||
<blue>255</blue>
|
||||
<alpha>255</alpha>
|
||||
</bodyColor>
|
||||
<borderColor>
|
||||
<red>0</red>
|
||||
<green>0</green>
|
||||
<blue>0</blue>
|
||||
<alpha>255</alpha>
|
||||
</borderColor>
|
||||
<labelColor reference="../borderColor"/>
|
||||
<leadColor>
|
||||
<red>117</red>
|
||||
<green>157</green>
|
||||
<blue>175</blue>
|
||||
<alpha>255</alpha>
|
||||
</leadColor>
|
||||
<display>NAME</display>
|
||||
<flipStanding>false</flipStanding>
|
||||
<labelOriantation>Directional</labelOriantation>
|
||||
<moveLabel>false</moveLabel>
|
||||
<style>SOLID</style>
|
||||
</org.diylc.components.connectivity.Jumper>
|
||||
<org.diylc.components.semiconductors.TransistorTO92>
|
||||
<name>Q1</name>
|
||||
<alpha>100</alpha>
|
||||
<value></value>
|
||||
<orientation>DEFAULT</orientation>
|
||||
<controlPoints>
|
||||
<java.awt.Point>
|
||||
<x>760</x>
|
||||
<y>640</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>760</x>
|
||||
<y>650</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>760</x>
|
||||
<y>660</y>
|
||||
</java.awt.Point>
|
||||
</controlPoints>
|
||||
<bodyColor>
|
||||
<red>128</red>
|
||||
<green>128</green>
|
||||
<blue>128</blue>
|
||||
<alpha>255</alpha>
|
||||
</bodyColor>
|
||||
<borderColor>
|
||||
<red>89</red>
|
||||
<green>89</green>
|
||||
<blue>89</blue>
|
||||
<alpha>255</alpha>
|
||||
</borderColor>
|
||||
<labelColor reference="../../org.diylc.components.connectivity.Jumper/borderColor"/>
|
||||
<display>NAME</display>
|
||||
<folded>false</folded>
|
||||
<pinSpacing>
|
||||
<value>0.05</value>
|
||||
<unit class="org.diylc.core.measures.SizeUnit">in</unit>
|
||||
</pinSpacing>
|
||||
</org.diylc.components.semiconductors.TransistorTO92>
|
||||
</list>
|
||||
</entry>
|
||||
<entry>
|
||||
<string>TO-92 w/ 2 Leads</string>
|
||||
<list>
|
||||
<org.diylc.components.connectivity.Jumper>
|
||||
<name>J1</name>
|
||||
<alpha>127</alpha>
|
||||
<points>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>720</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>740</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>1320</x>
|
||||
<y>250</y>
|
||||
</java.awt.Point>
|
||||
</points>
|
||||
<bodyColor reference="../../../../entry/list/org.diylc.components.connectivity.Jumper/bodyColor"/>
|
||||
<borderColor reference="../../../../entry/list/org.diylc.components.connectivity.Jumper/borderColor"/>
|
||||
<labelColor reference="../../../../entry/list/org.diylc.components.connectivity.Jumper/borderColor"/>
|
||||
<leadColor reference="../../../../entry/list/org.diylc.components.connectivity.Jumper/leadColor"/>
|
||||
<display>NAME</display>
|
||||
<flipStanding>false</flipStanding>
|
||||
<labelOriantation>Directional</labelOriantation>
|
||||
<moveLabel>false</moveLabel>
|
||||
<style>SOLID</style>
|
||||
</org.diylc.components.connectivity.Jumper>
|
||||
<org.diylc.components.connectivity.Jumper>
|
||||
<name>J2</name>
|
||||
<alpha>127</alpha>
|
||||
<points>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>780</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>760</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>-177</x>
|
||||
<y>1259</y>
|
||||
</java.awt.Point>
|
||||
</points>
|
||||
<bodyColor reference="../../../../entry/list/org.diylc.components.connectivity.Jumper[2]/bodyColor"/>
|
||||
<borderColor reference="../../../../entry/list/org.diylc.components.connectivity.Jumper[2]/borderColor"/>
|
||||
<labelColor reference="../../../../entry/list/org.diylc.components.connectivity.Jumper[2]/borderColor"/>
|
||||
<leadColor reference="../../../../entry/list/org.diylc.components.connectivity.Jumper[2]/leadColor"/>
|
||||
<display>NAME</display>
|
||||
<flipStanding>false</flipStanding>
|
||||
<labelOriantation>Directional</labelOriantation>
|
||||
<moveLabel>false</moveLabel>
|
||||
<style>SOLID</style>
|
||||
</org.diylc.components.connectivity.Jumper>
|
||||
<org.diylc.components.semiconductors.TransistorTO92>
|
||||
<name>Q1</name>
|
||||
<alpha>100</alpha>
|
||||
<value></value>
|
||||
<orientation>DEFAULT</orientation>
|
||||
<controlPoints>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>740</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>750</y>
|
||||
</java.awt.Point>
|
||||
<java.awt.Point>
|
||||
<x>580</x>
|
||||
<y>760</y>
|
||||
</java.awt.Point>
|
||||
</controlPoints>
|
||||
<bodyColor reference="../../../../entry/list/org.diylc.components.semiconductors.TransistorTO92/bodyColor"/>
|
||||
<borderColor reference="../../../../entry/list/org.diylc.components.semiconductors.TransistorTO92/borderColor"/>
|
||||
<labelColor reference="../../../../entry/list/org.diylc.components.connectivity.Jumper/borderColor"/>
|
||||
<display>NAME</display>
|
||||
<folded>false</folded>
|
||||
<pinSpacing reference="../../../../entry/list/org.diylc.components.semiconductors.TransistorTO92/pinSpacing"/>
|
||||
</org.diylc.components.semiconductors.TransistorTO92>
|
||||
</list>
|
||||
</entry>
|
||||
</map>
|
||||
@@ -2849,10 +2849,14 @@
|
||||
<org.diylc.appframework.update.Change>
|
||||
<changeType>NEW_FEATURE</changeType>
|
||||
<description>Added "Ruler Inch Subdivision" config option that allows inch rulers to be subdivided either using base of 2 (1/4", 1/8, 1/16) or base of 10 (1/10)</description>
|
||||
</org.diylc.appframework.update.Change>
|
||||
<org.diylc.appframework.update.Change>
|
||||
<changeType>NEW_FEATURE</changeType>
|
||||
<description>Added few out-of-the-box building blocks that can be deleted if unwanted</description>
|
||||
</org.diylc.appframework.update.Change>
|
||||
<org.diylc.appframework.update.Change>
|
||||
<changeType>BUG_FIX</changeType>
|
||||
<description>Fix the issue with theme configuration that causes some components to fail to render</description>
|
||||
<description>Fix the issue with theme configuration that causes the app to fail to start and some components to fail to render</description>
|
||||
</org.diylc.appframework.update.Change>
|
||||
</changes>
|
||||
<url>https://github.com/bancika/diy-layout-creator/releases</url>
|
||||
|
||||
Reference in New Issue
Block a user