mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-07 12:24:58 +10:00
Added ability to delete default component variants
This commit is contained in:
@@ -29,7 +29,8 @@ import org.diylc.core.Template;
|
||||
public interface IVariantProcessor {
|
||||
|
||||
public static final String TEMPLATES_KEY = "templates";
|
||||
public static final String DEFAULT_TEMPLATES_KEY = "defaultTemplates";
|
||||
public static final String DEFAULT_TEMPLATES_KEY = "defaultTemplates";
|
||||
public static final String DEFAULT_TEMPLATES_IMPORTED_KEY = "defaultTemplatesImported";
|
||||
|
||||
void saveSelectedComponentAsVariant(String variantName);
|
||||
|
||||
|
||||
@@ -128,26 +128,6 @@ public class Presenter implements IPlugInPort {
|
||||
}
|
||||
public static final String DEFAULTS_KEY_PREFIX = "default.";
|
||||
|
||||
private static Map<String, List<Template>> defaultVariantMap = null;
|
||||
static {
|
||||
try {
|
||||
URL resource = Presenter.class.getResource("variants.xml");
|
||||
if (resource != null) {
|
||||
BufferedInputStream in = new BufferedInputStream(resource.openStream());
|
||||
XStream xStream = new XStream(new DomDriver());
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, List<Template>> map = (Map<String, List<Template>>) xStream.fromXML(in);
|
||||
defaultVariantMap = new TreeMap<String, List<Template>>(String.CASE_INSENSITIVE_ORDER);
|
||||
defaultVariantMap.putAll(map);
|
||||
in.close();
|
||||
LOG.info(String.format("Loaded default variants for %d components",
|
||||
defaultVariantMap == null ? 0 : defaultVariantMap.size()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOG.error("Could not load default variants", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static final List<IDIYComponent<?>> EMPTY_SELECTION = Collections.emptyList();
|
||||
|
||||
public static final int ICON_SIZE = 32;
|
||||
@@ -210,6 +190,7 @@ public class Presenter implements IPlugInPort {
|
||||
// lockedLayers = EnumSet.noneOf(ComponentLayer.class);
|
||||
// visibleLayers = EnumSet.allOf(ComponentLayer.class);
|
||||
upgradeVariants();
|
||||
importDefaultVariants();
|
||||
}
|
||||
|
||||
public void installPlugin(IPlugIn plugIn) {
|
||||
@@ -2413,8 +2394,7 @@ public class Presenter implements IPlugInPort {
|
||||
variants.add(template);
|
||||
|
||||
if (System.getProperty("org.diylc.WriteStaticVariants", "false").equalsIgnoreCase("true")) {
|
||||
if (defaultVariantMap == null)
|
||||
defaultVariantMap = new HashMap<String, List<Template>>();
|
||||
Map<String, List<Template>> defaultVariantMap = new HashMap<String, List<Template>>();
|
||||
// unify default and user-variants
|
||||
for (Map.Entry<String, List<Template>> entry : variantMap.entrySet()) {
|
||||
if (defaultVariantMap.containsKey(entry.getKey())) {
|
||||
@@ -2438,6 +2418,45 @@ public class Presenter implements IPlugInPort {
|
||||
ConfigurationManager.getInstance().writeValue(TEMPLATES_KEY, variantMap);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void importDefaultVariants() {
|
||||
// import default templates from variants.xml file only if we didn't do it already
|
||||
if (!ConfigurationManager.getInstance().readBoolean(DEFAULT_TEMPLATES_IMPORTED_KEY, false)) {
|
||||
try {
|
||||
URL resource = Presenter.class.getResource("variants.xml");
|
||||
if (resource != null) {
|
||||
BufferedInputStream in = new BufferedInputStream(resource.openStream());
|
||||
XStream xStream = new XStream(new DomDriver());
|
||||
Map<String, List<Template>> defaults = (Map<String, List<Template>>) xStream.fromXML(in);
|
||||
in.close();
|
||||
|
||||
Map<String, List<Template>> variantMap =
|
||||
(Map<String, List<Template>>) ConfigurationManager.getInstance().readObject(TEMPLATES_KEY, null);
|
||||
if (variantMap == null)
|
||||
variantMap = new HashMap<String, List<Template>>();
|
||||
|
||||
// merge default variants with user's
|
||||
for (Map.Entry<String, List<Template>> entry : defaults.entrySet()) {
|
||||
List<Template> templates = variantMap.getOrDefault(entry.getKey(), null);
|
||||
if (templates == null) {
|
||||
templates = new ArrayList<Template>();
|
||||
variantMap.put(entry.getKey(), templates);
|
||||
}
|
||||
templates.addAll(entry.getValue());
|
||||
}
|
||||
|
||||
// update templates and a flag marking that we imported them
|
||||
ConfigurationManager.getInstance().writeValue(DEFAULT_TEMPLATES_IMPORTED_KEY, true);
|
||||
ConfigurationManager.getInstance().writeValue(TEMPLATES_KEY, variantMap);
|
||||
LOG.info(String.format("Imported default variants for %d components",
|
||||
defaults == null ? 0 : defaults.size()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOG.error("Could not load default variants", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
@@ -2462,14 +2481,6 @@ public class Presenter implements IPlugInPort {
|
||||
if (userVariants != null && !userVariants.isEmpty())
|
||||
variants.addAll(userVariants);
|
||||
}
|
||||
if (defaultVariantMap != null) {
|
||||
List<Template> defaultVariants = defaultVariantMap.get(key1);
|
||||
if (defaultVariants != null && !defaultVariants.isEmpty())
|
||||
variants.addAll(defaultVariants);
|
||||
defaultVariants = defaultVariantMap.get(key2);
|
||||
if (defaultVariants != null && !defaultVariants.isEmpty())
|
||||
variants.addAll(defaultVariants);
|
||||
}
|
||||
Collections.sort(variants, new Comparator<Template>() {
|
||||
|
||||
@Override
|
||||
@@ -3042,7 +3053,7 @@ public class Presenter implements IPlugInPort {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@SuppressWarnings({"unchecked", "unlikely-arg-type"})
|
||||
private List<Connection> getConnections(Map<ISwitch, Integer> switchPositions) {
|
||||
Set<Connection> connections = new HashSet<Connection>();
|
||||
for (IDIYComponent<?> c : currentProject.getComponents()) {
|
||||
|
||||
@@ -2782,6 +2782,10 @@
|
||||
<changeType>NEW_FEATURE</changeType>
|
||||
<description>Added "P-0+o (Proto) Board" component by Kristian Blåsol</description>
|
||||
</org.diylc.appframework.update.Change>
|
||||
<org.diylc.appframework.update.Change>
|
||||
<changeType>IMPROVEMENT</changeType>
|
||||
<description>Added ability to delete default component variants</description>
|
||||
</org.diylc.appframework.update.Change>
|
||||
<org.diylc.appframework.update.Change>
|
||||
<changeType>IMPROVEMENT</changeType>
|
||||
<description>Better "Expand Selection" logic. Works well with conductive components like traces and wires and regular components like resistors and capacitors</description>
|
||||
|
||||
Reference in New Issue
Block a user