Printed projects are sometimes missing parts of components or text

This commit is contained in:
Bane Stojkovic
2022-10-26 22:53:31 +02:00
parent 1323e9e7c8
commit 717e20ead3
10 changed files with 45 additions and 14 deletions
@@ -4074,6 +4074,10 @@
<changeType>IMPROVEMENT</changeType>
<description>"Snap to Components" features now works when creating new components as well as when moving existing ones</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>BUG_FIX</changeType>
<description>Printed projects are sometimes missing parts of components or text</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>BUG_FIX</changeType>
<description>"Snap to" configuration menu does not work properly when using translated UI to any language other than English</description>
Binary file not shown.
@@ -28,8 +28,6 @@ import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.geom.Rectangle2D.Double;
import java.util.Locale;
import org.diylc.awt.StringUtils;
import org.diylc.common.HorizontalAlignment;
import org.diylc.common.ObjectCache;
@@ -57,7 +55,7 @@ public class CommonNode extends AbstractComponent<String> implements ICommonNode
private static int BUFFER_X = 6;
private static int BUFFER_Y = 4;
private static final int STROKE_WIDTH = 2;
private static final int STROKE_WIDTH = 1;
private static final Color BG_COLOR = Color.lightGray;
private static final long serialVersionUID = 1L;
+2
View File
@@ -19,6 +19,8 @@
<classpathentry kind="lib" path="lib/svgSalamander-1.1.2.4.jar"/>
<classpathentry kind="lib" path="lib/xstream-1.4.19.jar"/>
<classpathentry kind="lib" path="lib/guava-31.1-jre.jar"/>
<classpathentry kind="lib" path="lib/pdfbox-2.0.27.jar"/>
<classpathentry kind="lib" path="lib/commons-logging-1.2.jar"/>
<classpathentry combineaccessrules="false" kind="src" path="/diylc-core"/>
<classpathentry kind="lib" path="lib/java-http-proxy.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -24,11 +24,12 @@ import java.awt.datatransfer.ClipboardOwner;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.geom.Area;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -46,6 +47,8 @@ import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileFilter;
import org.apache.log4j.Logger;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPageable;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.appframework.miscutils.IConfigListener;
import org.diylc.appframework.miscutils.InMemoryConfigurationManager;
@@ -150,8 +153,8 @@ public class ActionFactory {
return new ExportPNGAction(plugInPort, drawingProvider, swingUI, defaultSuffix);
}
public PrintAction createPrintAction(IDrawingProvider drawingProvider, int keyModifiers) {
return new PrintAction(drawingProvider, keyModifiers);
public PrintAction createPrintAction(IDrawingProvider drawingProvider, ISwingUI swingUI, int keyModifiers) {
return new PrintAction(drawingProvider, swingUI, keyModifiers);
}
public ExportVariantsAction createExportVariantsAction(ISwingUI swingUI, IPlugInPort plugInPort) {
@@ -850,10 +853,12 @@ public class ActionFactory {
private static final long serialVersionUID = 1L;
private IDrawingProvider drawingProvider;
private ISwingUI swingUI;
public PrintAction(IDrawingProvider drawingProvider, int keyModifiers) {
public PrintAction(IDrawingProvider drawingProvider, ISwingUI swingUI, int keyModifiers) {
super();
this.drawingProvider = drawingProvider;
this.swingUI = swingUI;
putValue(AbstractAction.NAME, "Print...");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_P, keyModifiers));
putValue(AbstractAction.SMALL_ICON, IconLoader.Print.getIcon());
@@ -862,11 +867,33 @@ public class ActionFactory {
@Override
public void actionPerformed(ActionEvent e) {
LOG.info("PrintAction triggered");
try {
DrawingExporter.getInstance().print(this.drawingProvider);
} catch (PrinterException e1) {
e1.printStackTrace();
}
swingUI.executeBackgroundTask(new ITask<Void>() {
@Override
public Void doInBackground() throws Exception {
File tempPdf = Files.createTempFile("diylc", ".pdf").toFile();
DrawingExporter.getInstance().exportPDF(PrintAction.this.drawingProvider, tempPdf);
PDDocument document = PDDocument.load(tempPdf);
// PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
PrinterJob job = PrinterJob.getPrinterJob();
PDFPageable pdfPageable = new PDFPageable(document);
job.setPageable(pdfPageable);
// job.setPrintService(printService);
job.print();
DrawingExporter.getInstance().print(PrintAction.this.drawingProvider);
return null;
}
@Override
public void complete(Void result) {}
@Override
public void failed(Exception e) {
swingUI.showMessage("Could not print. " + e.getMessage(), "Error",
ISwingUI.ERROR_MESSAGE);
}
}, true);
}
}
@@ -80,7 +80,7 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler {
actionFactory.createExportPDFAction(plugInPort, drawingProvider, swingUI, ""), FILE_TITLE);
swingUI.injectMenuAction(
actionFactory.createExportPNGAction(plugInPort, drawingProvider, swingUI, ""), FILE_TITLE);
swingUI.injectMenuAction(actionFactory.createPrintAction(drawingProvider,
swingUI.injectMenuAction(actionFactory.createPrintAction(drawingProvider, swingUI,
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), FILE_TITLE);
swingUI.injectSubmenu(TRACE_MASK_TITLE, IconLoader.TraceMask.getIcon(), FILE_TITLE);
swingUI.injectMenuAction(actionFactory.createExportPDFAction(plugInPort,
@@ -88,7 +88,7 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler {
swingUI.injectMenuAction(actionFactory.createExportPNGAction(plugInPort,
traceMaskDrawingProvider, swingUI, " (mask)"), TRACE_MASK_TITLE);
swingUI.injectMenuAction(
actionFactory.createPrintAction(traceMaskDrawingProvider,
actionFactory.createPrintAction(traceMaskDrawingProvider, swingUI,
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | KeyEvent.SHIFT_DOWN_MASK),
TRACE_MASK_TITLE);