All file export actions (PNG, PDF, BOM...) take the current file name as

a default
This commit is contained in:
Branislav Stojkovic
2018-12-18 18:55:59 +01:00
parent 3fec176fc1
commit aadc9e394d
5 changed files with 87 additions and 28 deletions
@@ -101,12 +101,12 @@ public class ActionFactory {
return new CreateBomAction(plugInPort); return new CreateBomAction(plugInPort);
} }
public ExportPDFAction createExportPDFAction(IDrawingProvider drawingProvider, ISwingUI swingUI) { public ExportPDFAction createExportPDFAction(IPlugInPort plugInPort, IDrawingProvider drawingProvider, ISwingUI swingUI, String defaultSuffix) {
return new ExportPDFAction(drawingProvider, swingUI); return new ExportPDFAction(plugInPort, drawingProvider, swingUI, defaultSuffix);
} }
public ExportPNGAction createExportPNGAction(IDrawingProvider drawingProvider, ISwingUI swingUI) { public ExportPNGAction createExportPNGAction(IPlugInPort plugInPort, IDrawingProvider drawingProvider, ISwingUI swingUI, String defaultSuffix) {
return new ExportPNGAction(drawingProvider, swingUI); return new ExportPNGAction(plugInPort, drawingProvider, swingUI, defaultSuffix);
} }
public PrintAction createPrintAction(IDrawingProvider drawingProvider, int keyModifiers) { public PrintAction createPrintAction(IDrawingProvider drawingProvider, int keyModifiers) {
@@ -509,7 +509,15 @@ public class ActionFactory {
LOG.info("CreateBomAction triggered"); LOG.info("CreateBomAction triggered");
List<BomEntry> bom = List<BomEntry> bom =
org.diylc.utils.BomMaker.getInstance().createBom(plugInPort.getCurrentProject().getComponents()); 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); dialog.setVisible(true);
} }
} }
@@ -520,11 +528,15 @@ public class ActionFactory {
private IDrawingProvider drawingProvider; private IDrawingProvider drawingProvider;
private ISwingUI swingUI; 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(); super();
this.plugInPort = plugInPort;
this.drawingProvider = drawingProvider; this.drawingProvider = drawingProvider;
this.swingUI = swingUI; this.swingUI = swingUI;
this.defaultSuffix = defaultSuffix;
putValue(AbstractAction.NAME, "Export to PDF"); putValue(AbstractAction.NAME, "Export to PDF");
putValue(AbstractAction.SMALL_ICON, IconLoader.PDF.getIcon()); putValue(AbstractAction.SMALL_ICON, IconLoader.PDF.getIcon());
} }
@@ -532,8 +544,16 @@ public class ActionFactory {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
LOG.info("ExportPDFAction triggered"); 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 = 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); FileFilterEnum.PDF.getExtensions()[0], null);
if (file != null) { if (file != null) {
swingUI.executeBackgroundTask(new ITask<Void>() { swingUI.executeBackgroundTask(new ITask<Void>() {
@@ -563,11 +583,16 @@ public class ActionFactory {
private IDrawingProvider drawingProvider; private IDrawingProvider drawingProvider;
private ISwingUI swingUI; 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(); super();
this.plugInPort = plugInPort;
this.drawingProvider = drawingProvider;
this.drawingProvider = drawingProvider; this.drawingProvider = drawingProvider;
this.swingUI = swingUI; this.swingUI = swingUI;
this.defaultSuffix = defaultSuffix;
putValue(AbstractAction.NAME, "Export to PNG"); putValue(AbstractAction.NAME, "Export to PNG");
putValue(AbstractAction.SMALL_ICON, IconLoader.Image.getIcon()); putValue(AbstractAction.SMALL_ICON, IconLoader.Image.getIcon());
} }
@@ -575,8 +600,16 @@ public class ActionFactory {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
LOG.info("ExportPNGAction triggered"); 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 = 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); FileFilterEnum.PNG.getExtensions()[0], null);
if (file != null) { if (file != null) {
swingUI.executeBackgroundTask(new ITask<Void>() { swingUI.executeBackgroundTask(new ITask<Void>() {
@@ -89,8 +89,8 @@ public class DialogFactory {
return new InfoDialog(mainFrame, tipKey); return new InfoDialog(mainFrame, tipKey);
} }
public BomDialog createBomDialog(List<BomEntry> bom) { public BomDialog createBomDialog(List<BomEntry> bom, String initialFileName) {
BomDialog dialog = new BomDialog(mainFrame, bom); BomDialog dialog = new BomDialog(mainFrame, bom, initialFileName);
return dialog; return dialog;
} }
@@ -48,9 +48,11 @@ public class BomDialog extends JDialog {
private ObjectListTable<BomEntry> table; private ObjectListTable<BomEntry> table;
private JPanel toolbar; private JPanel toolbar;
private String initialFileName;
public BomDialog(JFrame parent, List<BomEntry> bom) { public BomDialog(JFrame parent, List<BomEntry> bom, String initialFileName) {
super(parent, "Bill of Materials"); super(parent, "Bill of Materials");
this.initialFileName = initialFileName;
setContentPane(createMainPanel()); setContentPane(createMainPanel());
getTable().setData(bom); getTable().setData(bom);
pack(); pack();
@@ -111,8 +113,13 @@ public class BomDialog extends JDialog {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
File initialFile = null;
if (initialFileName != null) {
initialFile = new File(initialFileName + ".xls");
}
File file = 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); FileFilterEnum.EXCEL.getExtensions()[0], null);
if (file != null) { if (file != null) {
try { try {
@@ -137,8 +144,13 @@ public class BomDialog extends JDialog {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
File initialFile = null;
if (initialFileName != null) {
initialFile = new File(initialFileName + ".csv");
}
File file = 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); FileFilterEnum.CSV.getExtensions()[0], null);
if (file != null) { if (file != null) {
try { try {
@@ -163,8 +175,13 @@ public class BomDialog extends JDialog {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
File initialFile = null;
if (initialFileName != null) {
initialFile = new File(initialFileName + ".html");
}
File file = 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); FileFilterEnum.HTML.getExtensions()[0], null);
if (file != null) { if (file != null) {
try { try {
@@ -189,8 +206,13 @@ public class BomDialog extends JDialog {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
File initialFile = null;
if (initialFileName != null) {
initialFile = new File(initialFileName + ".png");
}
File file = 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); FileFilterEnum.PNG.getExtensions()[0], null);
if (file != null) { if (file != null) {
try { try {
@@ -73,14 +73,14 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler {
swingUI.injectMenuAction(actionFactory.createSaveAsAction(plugInPort, swingUI), FILE_TITLE); swingUI.injectMenuAction(actionFactory.createSaveAsAction(plugInPort, swingUI), FILE_TITLE);
swingUI.injectDynamicSubmenu("Recent Files", IconLoader.History.getIcon(), FILE_TITLE, this); swingUI.injectDynamicSubmenu("Recent Files", IconLoader.History.getIcon(), FILE_TITLE, this);
swingUI.injectMenuAction(null, FILE_TITLE); swingUI.injectMenuAction(null, FILE_TITLE);
swingUI.injectMenuAction(actionFactory.createExportPDFAction(drawingProvider, swingUI), FILE_TITLE); swingUI.injectMenuAction(actionFactory.createExportPDFAction(plugInPort, drawingProvider, swingUI, ""), FILE_TITLE);
swingUI.injectMenuAction(actionFactory.createExportPNGAction(drawingProvider, swingUI), FILE_TITLE); swingUI.injectMenuAction(actionFactory.createExportPNGAction(plugInPort, drawingProvider, swingUI, ""), FILE_TITLE);
swingUI.injectMenuAction( swingUI.injectMenuAction(
actionFactory.createPrintAction(drawingProvider, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), actionFactory.createPrintAction(drawingProvider, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
FILE_TITLE); FILE_TITLE);
swingUI.injectSubmenu(TRACE_MASK_TITLE, IconLoader.TraceMask.getIcon(), FILE_TITLE); swingUI.injectSubmenu(TRACE_MASK_TITLE, IconLoader.TraceMask.getIcon(), FILE_TITLE);
swingUI.injectMenuAction(actionFactory.createExportPDFAction(traceMaskDrawingProvider, swingUI), TRACE_MASK_TITLE); swingUI.injectMenuAction(actionFactory.createExportPDFAction(plugInPort, traceMaskDrawingProvider, swingUI, " (mask)"), TRACE_MASK_TITLE);
swingUI.injectMenuAction(actionFactory.createExportPNGAction(traceMaskDrawingProvider, swingUI), TRACE_MASK_TITLE); swingUI.injectMenuAction(actionFactory.createExportPNGAction(plugInPort, traceMaskDrawingProvider, swingUI, " (mask)"), TRACE_MASK_TITLE);
swingUI.injectMenuAction( swingUI.injectMenuAction(
actionFactory.createPrintAction(traceMaskDrawingProvider, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() actionFactory.createPrintAction(traceMaskDrawingProvider, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()
| KeyEvent.SHIFT_DOWN_MASK), TRACE_MASK_TITLE); | KeyEvent.SHIFT_DOWN_MASK), TRACE_MASK_TITLE);
+4
View File
@@ -1966,6 +1966,10 @@
<changeType>NEW_FEATURE</changeType> <changeType>NEW_FEATURE</changeType>
<description>Added few chassis-related components under "Electromechanical" category</description> <description>Added few chassis-related components under "Electromechanical" category</description>
</org.diylc.appframework.update.Change> </org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>NEW_FEATURE</changeType>
<description>All file export actions (PNG, PDF, BOM...) take the current file name as a default</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change> <org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType> <changeType>IMPROVEMENT</changeType>
<description>Change mouse cursor when in "Highlight Connected Areas" mode to avoid confusion</description> <description>Change mouse cursor when in "Highlight Connected Areas" mode to avoid confusion</description>