diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar
index ace0a931..266505c9 100644
Binary files a/diylc/diylc-library/lib/diylc-core.jar and b/diylc/diylc-library/lib/diylc-core.jar differ
diff --git a/diylc/diylc-swing/DIYLCStarter.launch b/diylc/diylc-swing/DIYLCStarter.launch
index 38c8ab51..aff8a7cb 100644
--- a/diylc/diylc-swing/DIYLCStarter.launch
+++ b/diylc/diylc-swing/DIYLCStarter.launch
@@ -11,5 +11,5 @@
-
+
diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar
index ace0a931..266505c9 100644
Binary files a/diylc/diylc-swing/lib/diylc-core.jar and b/diylc/diylc-swing/lib/diylc-core.jar differ
diff --git a/diylc/diylc-swing/lib/swing-framework.jar b/diylc/diylc-swing/lib/swing-framework.jar
index 0f3769b4..e3c7b6a5 100644
Binary files a/diylc/diylc-swing/lib/swing-framework.jar and b/diylc/diylc-swing/lib/swing-framework.jar differ
diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar
index db0358b8..c177d9e9 100644
Binary files a/diylc/diylc-swing/library/main.jar and b/diylc/diylc-swing/library/main.jar differ
diff --git a/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java b/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java
index 9df3699e..262182a9 100644
--- a/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java
+++ b/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java
@@ -29,6 +29,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -40,6 +41,7 @@ import javax.swing.KeyStroke;
import org.apache.log4j.Logger;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.BuildingBlockPackage;
+import org.diylc.common.ComponentType;
import org.diylc.common.IComponentTransformer;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ITask;
@@ -63,6 +65,7 @@ import org.diylc.swing.plugins.edit.ComponentTransferable;
import org.diylc.swing.plugins.file.BomDialog;
import org.diylc.swing.plugins.file.FileFilterEnum;
import org.diylc.swingframework.ButtonDialog;
+import org.diylc.swingframework.CheckBoxListDialog;
import org.diylc.swingframework.IDrawingProvider;
import org.diylc.swingframework.export.DrawingExporter;
import org.diylc.utils.BomEntry;
@@ -123,8 +126,8 @@ public class ActionFactory {
return new PrintAction(drawingProvider, keyModifiers);
}
- public ExportVariantsAction createExportVariantsAction(ISwingUI swingUI) {
- return new ExportVariantsAction(swingUI);
+ public ExportVariantsAction createExportVariantsAction(ISwingUI swingUI, IPlugInPort plugInPort) {
+ return new ExportVariantsAction(swingUI, plugInPort);
}
public ImportVariantsAction createImportVariantsAction(ISwingUI swingUI, IPlugInPort plugInPort) {
@@ -689,11 +692,20 @@ public class ActionFactory {
private static final long serialVersionUID = 1L;
private ISwingUI swingUI;
+ private IPlugInPort plugInPort;
+
+ private Map typeMap = new HashMap();
- public ExportVariantsAction(ISwingUI swingUI) {
+ public ExportVariantsAction(ISwingUI swingUI, IPlugInPort plugInPort) {
super();
this.swingUI = swingUI;
+ this.plugInPort = plugInPort;
putValue(AbstractAction.NAME, "Export Variants");
+
+ Map> componentTypes = plugInPort.getComponentTypes();
+ for (Map.Entry> entry : componentTypes.entrySet())
+ for (ComponentType type : entry.getValue())
+ typeMap.put(type.getInstanceClass().getCanonicalName(), type);
}
@SuppressWarnings("unchecked")
@@ -706,8 +718,33 @@ public class ActionFactory {
swingUI.showMessage("No variants found to export.", "Error", IView.ERROR_MESSAGE);
return;
}
+
+ List types = new ArrayList();
+ for (String className : variantMap.keySet())
+ types.add(typeMap.get(className));
+
+ CheckBoxListDialog dialog = new CheckBoxListDialog(swingUI.getOwnerFrame(), "Export Variants", types.toArray());
+
+ dialog.setVisible(true);
+
+ if (dialog.getSelectedButtonCaption() != "OK")
+ return;
+
+ Object[] selected = dialog.getSelectedOptions();
+
+ if (selected.length == 0) {
+ swingUI.showMessage("No building blocks selected for export.", "Error", IView.ERROR_MESSAGE);
+ return;
+ }
+
+ Map> selectedVariants = new HashMap>();
+ for (Object key : selected) {
+ ComponentType type = (ComponentType) key;
+ String clazz = type.getInstanceClass().getCanonicalName();
+ selectedVariants.put(clazz, variantMap.get(clazz));
+ }
- final VariantPackage variantPkg = new VariantPackage(variantMap, System.getProperty("user.name"));
+ final VariantPackage variantPkg = new VariantPackage(selectedVariants, System.getProperty("user.name"));
File initialFile =
new File(variantPkg.getOwner() == null ? "variants.xml" : ("variants by "
@@ -769,7 +806,6 @@ public class ActionFactory {
@Override
public void actionPerformed(ActionEvent e) {
LOG.info("ImportVariantsAction triggered");
-
final File file =
DialogFactory.getInstance().showOpenDialog(FileFilterEnum.XML.getFilter(),
@@ -821,8 +857,27 @@ public class ActionFactory {
swingUI.showMessage("No building blocks found to export.", "Error", IView.ERROR_MESSAGE);
return;
}
+
+ CheckBoxListDialog dialog = new CheckBoxListDialog(swingUI.getOwnerFrame(), "Export Building Blocks", blocks.keySet().toArray(new String[0]));
+
+ dialog.setVisible(true);
+
+ if (dialog.getSelectedButtonCaption() != "OK")
+ return;
+
+ Object[] selected = dialog.getSelectedOptions();
+
+ if (selected.length == 0) {
+ swingUI.showMessage("No building blocks selected for export.", "Error", IView.ERROR_MESSAGE);
+ return;
+ }
+
+ Map>> selectedBlocks = new HashMap>>();
+ for (Object key : selected) {
+ selectedBlocks.put(key.toString(), blocks.get(key));
+ }
- final BuildingBlockPackage variantPkg = new BuildingBlockPackage(blocks, System.getProperty("user.name"));
+ final BuildingBlockPackage variantPkg = new BuildingBlockPackage(selectedBlocks, System.getProperty("user.name"));
File initialFile =
new File(variantPkg.getOwner() == null ? "building blocks.xml" : ("building blocks by "
diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/file/FileMenuPlugin.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/file/FileMenuPlugin.java
index eae1b77d..925af8f2 100644
--- a/diylc/diylc-swing/src/org/diylc/swing/plugins/file/FileMenuPlugin.java
+++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/file/FileMenuPlugin.java
@@ -92,7 +92,7 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler {
swingUI.injectMenuAction(actionFactory.createExportBlocksAction(swingUI), INTEGRATION_TITLE);
swingUI.injectMenuAction(null, INTEGRATION_TITLE);
swingUI.injectMenuAction(actionFactory.createImportVariantsAction(swingUI, plugInPort), INTEGRATION_TITLE);
- swingUI.injectMenuAction(actionFactory.createExportVariantsAction(swingUI), INTEGRATION_TITLE);
+ swingUI.injectMenuAction(actionFactory.createExportVariantsAction(swingUI, plugInPort), INTEGRATION_TITLE);
swingUI.injectMenuAction(null, FILE_TITLE);
swingUI.injectMenuAction(actionFactory.createExitAction(plugInPort), FILE_TITLE);
}
diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml
index 770c0486..e71e1790 100644
--- a/diylc/diylc-swing/update.xml
+++ b/diylc/diylc-swing/update.xml
@@ -2413,7 +2413,11 @@
NEW_FEATURE
Add switched type to "Open 1/4" Jack" component
-
+
+
+ NEW_FEATURE
+ Selectable coordinate origin point for all perforated boards
+
IMPROVEMENT
Vast improvement of rendering performance and memory management, especially with large layouts