From aadc9e394dd4f1df4356d93c42c5c30f494a711b Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Tue, 18 Dec 2018 18:55:59 +0100 Subject: [PATCH] All file export actions (PNG, PDF, BOM...) take the current file name as a default --- .../src/org/diylc/swing/ActionFactory.java | 51 +++++++++++++++---- .../org/diylc/swing/gui/DialogFactory.java | 4 +- .../diylc/swing/plugins/file/BomDialog.java | 48 ++++++++++++----- .../swing/plugins/file/FileMenuPlugin.java | 8 +-- diylc/diylc-swing/update.xml | 4 ++ 5 files changed, 87 insertions(+), 28 deletions(-) diff --git a/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java b/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java index cacab1da..204388b0 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java +++ b/diylc/diylc-swing/src/org/diylc/swing/ActionFactory.java @@ -101,12 +101,12 @@ public class ActionFactory { return new CreateBomAction(plugInPort); } - public ExportPDFAction createExportPDFAction(IDrawingProvider drawingProvider, ISwingUI swingUI) { - return new ExportPDFAction(drawingProvider, swingUI); + public ExportPDFAction createExportPDFAction(IPlugInPort plugInPort, IDrawingProvider drawingProvider, ISwingUI swingUI, String defaultSuffix) { + return new ExportPDFAction(plugInPort, drawingProvider, swingUI, defaultSuffix); } - public ExportPNGAction createExportPNGAction(IDrawingProvider drawingProvider, ISwingUI swingUI) { - return new ExportPNGAction(drawingProvider, swingUI); + public ExportPNGAction createExportPNGAction(IPlugInPort plugInPort, IDrawingProvider drawingProvider, ISwingUI swingUI, String defaultSuffix) { + return new ExportPNGAction(plugInPort, drawingProvider, swingUI, defaultSuffix); } public PrintAction createPrintAction(IDrawingProvider drawingProvider, int keyModifiers) { @@ -509,7 +509,15 @@ public class ActionFactory { LOG.info("CreateBomAction triggered"); List bom = org.diylc.utils.BomMaker.getInstance().createBom(plugInPort.getCurrentProject().getComponents()); - BomDialog dialog = DialogFactory.getInstance().createBomDialog(bom); + + String initialFileName = null; + String currentFile = plugInPort.getCurrentFileName(); + if (currentFile != null) { + File cFile = new File(currentFile); + initialFileName = cFile.getName().replaceAll("(?i)\\.diy", "") + " BOM"; + } + + BomDialog dialog = DialogFactory.getInstance().createBomDialog(bom, initialFileName); dialog.setVisible(true); } } @@ -520,11 +528,15 @@ public class ActionFactory { private IDrawingProvider drawingProvider; private ISwingUI swingUI; + private IPlugInPort plugInPort; + private String defaultSuffix; - public ExportPDFAction(IDrawingProvider drawingProvider, ISwingUI swingUI) { + public ExportPDFAction(IPlugInPort plugInPort, IDrawingProvider drawingProvider, ISwingUI swingUI, String defaultSuffix) { super(); + this.plugInPort = plugInPort; this.drawingProvider = drawingProvider; this.swingUI = swingUI; + this.defaultSuffix = defaultSuffix; putValue(AbstractAction.NAME, "Export to PDF"); putValue(AbstractAction.SMALL_ICON, IconLoader.PDF.getIcon()); } @@ -532,8 +544,16 @@ public class ActionFactory { @Override public void actionPerformed(ActionEvent e) { LOG.info("ExportPDFAction triggered"); + + File initialFile = null; + String currentFile = plugInPort.getCurrentFileName(); + if (currentFile != null) { + File cFile = new File(currentFile); + initialFile = new File(cFile.getName().replaceAll("(?i)\\.diy", "") + defaultSuffix + ".pdf"); + } + final File file = - DialogFactory.getInstance().showSaveDialog(swingUI.getOwnerFrame(), FileFilterEnum.PDF.getFilter(), null, + DialogFactory.getInstance().showSaveDialog(swingUI.getOwnerFrame(), FileFilterEnum.PDF.getFilter(), initialFile, FileFilterEnum.PDF.getExtensions()[0], null); if (file != null) { swingUI.executeBackgroundTask(new ITask() { @@ -563,11 +583,16 @@ public class ActionFactory { private IDrawingProvider drawingProvider; private ISwingUI swingUI; + private IPlugInPort plugInPort; + private String defaultSuffix; - public ExportPNGAction(IDrawingProvider drawingProvider, ISwingUI swingUI) { + public ExportPNGAction(IPlugInPort plugInPort, IDrawingProvider drawingProvider, ISwingUI swingUI, String defaultSuffix) { super(); + this.plugInPort = plugInPort; + this.drawingProvider = drawingProvider; this.drawingProvider = drawingProvider; this.swingUI = swingUI; + this.defaultSuffix = defaultSuffix; putValue(AbstractAction.NAME, "Export to PNG"); putValue(AbstractAction.SMALL_ICON, IconLoader.Image.getIcon()); } @@ -575,8 +600,16 @@ public class ActionFactory { @Override public void actionPerformed(ActionEvent e) { LOG.info("ExportPNGAction triggered"); + + File initialFile = null; + String currentFile = plugInPort.getCurrentFileName(); + if (currentFile != null) { + File cFile = new File(currentFile); + initialFile = new File(cFile.getName().replaceAll("(?i)\\.diy", "") + defaultSuffix + ".png"); + } + final File file = - DialogFactory.getInstance().showSaveDialog(swingUI.getOwnerFrame(), FileFilterEnum.PNG.getFilter(), null, + DialogFactory.getInstance().showSaveDialog(swingUI.getOwnerFrame(), FileFilterEnum.PNG.getFilter(), initialFile, FileFilterEnum.PNG.getExtensions()[0], null); if (file != null) { swingUI.executeBackgroundTask(new ITask() { diff --git a/diylc/diylc-swing/src/org/diylc/swing/gui/DialogFactory.java b/diylc/diylc-swing/src/org/diylc/swing/gui/DialogFactory.java index 2dcd9533..d7f441ba 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/gui/DialogFactory.java +++ b/diylc/diylc-swing/src/org/diylc/swing/gui/DialogFactory.java @@ -89,8 +89,8 @@ public class DialogFactory { return new InfoDialog(mainFrame, tipKey); } - public BomDialog createBomDialog(List bom) { - BomDialog dialog = new BomDialog(mainFrame, bom); + public BomDialog createBomDialog(List bom, String initialFileName) { + BomDialog dialog = new BomDialog(mainFrame, bom, initialFileName); return dialog; } diff --git a/diylc/diylc-swing/src/org/diylc/swing/plugins/file/BomDialog.java b/diylc/diylc-swing/src/org/diylc/swing/plugins/file/BomDialog.java index e521fbff..b760f50e 100644 --- a/diylc/diylc-swing/src/org/diylc/swing/plugins/file/BomDialog.java +++ b/diylc/diylc-swing/src/org/diylc/swing/plugins/file/BomDialog.java @@ -27,7 +27,7 @@ import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; - + import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; @@ -35,7 +35,7 @@ import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; - + import org.diylc.images.IconLoader; import org.diylc.swing.gui.DialogFactory; import org.diylc.swingframework.export.TableExporter; @@ -47,10 +47,12 @@ public class BomDialog extends JDialog { private static final long serialVersionUID = 1L; private ObjectListTable table; - private JPanel toolbar; + private JPanel toolbar; + private String initialFileName; - public BomDialog(JFrame parent, List bom) { - super(parent, "Bill of Materials"); + public BomDialog(JFrame parent, List bom, String initialFileName) { + super(parent, "Bill of Materials"); + this.initialFileName = initialFileName; setContentPane(createMainPanel()); getTable().setData(bom); pack(); @@ -110,9 +112,14 @@ public class BomDialog extends JDialog { } @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(ActionEvent e) { + File initialFile = null; + if (initialFileName != null) { + initialFile = new File(initialFileName + ".xls"); + } + File file = - DialogFactory.getInstance().showSaveDialog(BomDialog.this.getOwner(), FileFilterEnum.EXCEL.getFilter(), null, + DialogFactory.getInstance().showSaveDialog(BomDialog.this.getOwner(), FileFilterEnum.EXCEL.getFilter(), initialFile, FileFilterEnum.EXCEL.getExtensions()[0], null); if (file != null) { try { @@ -136,9 +143,14 @@ public class BomDialog extends JDialog { } @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(ActionEvent e) { + File initialFile = null; + if (initialFileName != null) { + initialFile = new File(initialFileName + ".csv"); + } + File file = - DialogFactory.getInstance().showSaveDialog(BomDialog.this.getOwner(), FileFilterEnum.CSV.getFilter(), null, + DialogFactory.getInstance().showSaveDialog(BomDialog.this.getOwner(), FileFilterEnum.CSV.getFilter(), initialFile, FileFilterEnum.CSV.getExtensions()[0], null); if (file != null) { try { @@ -162,9 +174,14 @@ public class BomDialog extends JDialog { } @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(ActionEvent e) { + File initialFile = null; + if (initialFileName != null) { + initialFile = new File(initialFileName + ".html"); + } + File file = - DialogFactory.getInstance().showSaveDialog(BomDialog.this.getOwner(), FileFilterEnum.HTML.getFilter(), null, + DialogFactory.getInstance().showSaveDialog(BomDialog.this.getOwner(), FileFilterEnum.HTML.getFilter(), initialFile, FileFilterEnum.HTML.getExtensions()[0], null); if (file != null) { try { @@ -188,9 +205,14 @@ public class BomDialog extends JDialog { } @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(ActionEvent e) { + File initialFile = null; + if (initialFileName != null) { + initialFile = new File(initialFileName + ".png"); + } + File file = - DialogFactory.getInstance().showSaveDialog(BomDialog.this.getOwner(), FileFilterEnum.PNG.getFilter(), null, + DialogFactory.getInstance().showSaveDialog(BomDialog.this.getOwner(), FileFilterEnum.PNG.getFilter(), initialFile, FileFilterEnum.PNG.getExtensions()[0], null); if (file != null) { try { 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 67513ed3..b30d7643 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 @@ -73,14 +73,14 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler { swingUI.injectMenuAction(actionFactory.createSaveAsAction(plugInPort, swingUI), FILE_TITLE); swingUI.injectDynamicSubmenu("Recent Files", IconLoader.History.getIcon(), FILE_TITLE, this); swingUI.injectMenuAction(null, FILE_TITLE); - swingUI.injectMenuAction(actionFactory.createExportPDFAction(drawingProvider, swingUI), FILE_TITLE); - swingUI.injectMenuAction(actionFactory.createExportPNGAction(drawingProvider, swingUI), FILE_TITLE); + swingUI.injectMenuAction(actionFactory.createExportPDFAction(plugInPort, drawingProvider, swingUI, ""), FILE_TITLE); + swingUI.injectMenuAction(actionFactory.createExportPNGAction(plugInPort, drawingProvider, swingUI, ""), FILE_TITLE); swingUI.injectMenuAction( actionFactory.createPrintAction(drawingProvider, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), FILE_TITLE); swingUI.injectSubmenu(TRACE_MASK_TITLE, IconLoader.TraceMask.getIcon(), FILE_TITLE); - swingUI.injectMenuAction(actionFactory.createExportPDFAction(traceMaskDrawingProvider, swingUI), TRACE_MASK_TITLE); - swingUI.injectMenuAction(actionFactory.createExportPNGAction(traceMaskDrawingProvider, swingUI), TRACE_MASK_TITLE); + swingUI.injectMenuAction(actionFactory.createExportPDFAction(plugInPort, traceMaskDrawingProvider, swingUI, " (mask)"), TRACE_MASK_TITLE); + swingUI.injectMenuAction(actionFactory.createExportPNGAction(plugInPort, traceMaskDrawingProvider, swingUI, " (mask)"), TRACE_MASK_TITLE); swingUI.injectMenuAction( actionFactory.createPrintAction(traceMaskDrawingProvider, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | KeyEvent.SHIFT_DOWN_MASK), TRACE_MASK_TITLE); diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index fc1daf34..e904bdd7 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -1966,6 +1966,10 @@ NEW_FEATURE Added few chassis-related components under "Electromechanical" category + + NEW_FEATURE + All file export actions (PNG, PDF, BOM...) take the current file name as a default + IMPROVEMENT Change mouse cursor when in "Highlight Connected Areas" mode to avoid confusion