Skip to content

Commit bb91a87

Browse files
Sandro Rossichewiebug
authored andcommitted
When a chart is exported as a PNG file, instead of applying the selected View properties for the current chart, the application reloads the definitions found on gcviewer.properties.
This small fix corrects this behaviour, capturing the current view configurations for the chart (E.g. if a specific GC line is visible or not) while exporting a PNG file.
1 parent bc21c8f commit bb91a87

File tree

4 files changed

+34
-7
lines changed

4 files changed

+34
-7
lines changed

src/main/java/com/tagtraum/perf/gcviewer/ctrl/action/Export.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
import java.awt.Toolkit;
44
import java.awt.event.ActionEvent;
55
import java.io.File;
6+
import java.util.Map;
7+
import java.util.HashMap;
68

79
import javax.swing.AbstractAction;
810
import javax.swing.JFileChooser;
911
import javax.swing.JOptionPane;
1012
import javax.swing.KeyStroke;
11-
import javax.swing.filechooser.FileFilter;
1213

1314
import com.tagtraum.perf.gcviewer.exp.DataWriter;
1415
import com.tagtraum.perf.gcviewer.exp.DataWriterType;
@@ -86,7 +87,9 @@ public void exportFile(final GCModel model, File file, final String extension, f
8687
LocalisationHelper.getString("fileexport_dialog_title"),
8788
JOptionPane.YES_NO_OPTION)) {
8889

89-
try (DataWriter writer = DataWriterFactory.getDataWriter(file, dataWriterType)) {
90+
Map<String, Object> configuration = new HashMap<>();
91+
configuration.put(DataWriterFactory.GC_PREFERENCES, gcViewer.getSelectedGCDocument().getPreferences());
92+
try (DataWriter writer = DataWriterFactory.getDataWriter(file, dataWriterType, configuration)) {
9093
writer.write(model);
9194
}
9295
catch (Exception ioe) {

src/main/java/com/tagtraum/perf/gcviewer/exp/impl/DataWriterFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
* @author <a href="mailto:[email protected]">Hendrik Schreiber</a>
1818
*/
1919
public class DataWriterFactory {
20+
public static final String GC_PREFERENCES = "gcPreferences";
2021

2122
/**
2223
* Standard factory method to retrieve one of the <code>DataWriter</code> implementations.
@@ -53,7 +54,7 @@ public static DataWriter getDataWriter(File file, DataWriterType type, Map<Strin
5354
case CSV_TS : return new CSVTSDataWriter(outputStream);
5455
case SIMPLE : return new SimpleGcWriter(outputStream);
5556
case SUMMARY : return new SummaryDataWriter(outputStream, configuration);
56-
case PNG : return new PNGDataWriter(outputStream);
57+
case PNG : return new PNGDataWriter(outputStream, configuration);
5758
default : throw new IOException(LocalisationHelper.getString("datawriterfactory_instantiation_failed") + " " + file);
5859
}
5960
}

src/main/java/com/tagtraum/perf/gcviewer/exp/impl/PNGDataWriter.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
import java.io.FileOutputStream;
44
import java.io.IOException;
55
import java.io.OutputStream;
6+
import java.util.Map;
67

78
import com.tagtraum.perf.gcviewer.view.SimpleChartRenderer;
89
import com.tagtraum.perf.gcviewer.exp.AbstractDataWriter;
910
import com.tagtraum.perf.gcviewer.model.GCModel;
11+
import com.tagtraum.perf.gcviewer.view.model.GCPreferences;
1012

1113
/**
1214
* PNG data writter
@@ -15,16 +17,33 @@
1517
*
1618
*/
1719
public class PNGDataWriter extends AbstractDataWriter {
18-
private FileOutputStream out;
20+
private final FileOutputStream out;
1921

20-
public PNGDataWriter(OutputStream outputStream) {
21-
super(outputStream);
22+
/**
23+
* Constructor for PNGDataWriter with additional <code>configuration</code> parameter.
24+
*
25+
* @param outputStream FileOutputStream, file where the image should be written to
26+
* @param configuration Configuration for this PNGDataWriter; expected contents of the parameter:
27+
* <ul>
28+
* <li>String: <code>DataWriterFactory.GC_PREFERENCES</code></li>
29+
* <li>Object: Instance of GCPreferences (E.g. current screen selection for chart)
30+
* </ul>
31+
*/
32+
public PNGDataWriter(OutputStream outputStream, Map<String, Object> configuration) {
33+
super(outputStream, configuration);
2234
out = (FileOutputStream)outputStream;
2335
}
2436

2537
@Override
2638
public void write(GCModel model) throws IOException {
27-
new SimpleChartRenderer().render(model, out);
39+
SimpleChartRenderer simpleChartRenderer = new SimpleChartRenderer();
40+
41+
Object gcPreferences = getConfiguration().get(DataWriterFactory.GC_PREFERENCES);
42+
if (gcPreferences instanceof GCPreferences) {
43+
simpleChartRenderer.render(model, out, (GCPreferences)gcPreferences);
44+
} else {
45+
simpleChartRenderer.render(model, out);
46+
}
2847
}
2948

3049
}

src/main/java/com/tagtraum/perf/gcviewer/view/SimpleChartRenderer.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ public class SimpleChartRenderer {
2222
public void render(GCModel model, FileOutputStream outputStream) throws IOException {
2323
GCPreferences gcPreferences = new GCPreferences();
2424
gcPreferences.load();
25+
render(model, outputStream, gcPreferences);
26+
}
27+
28+
public void render(GCModel model, FileOutputStream outputStream, GCPreferences gcPreferences) throws IOException {
2529
Dimension d = new Dimension(gcPreferences.getWindowWidth(), gcPreferences.getWindowHeight());
2630

2731
BufferedImage image = new BufferedImage(d.width, d.height, BufferedImage.TYPE_INT_RGB);

0 commit comments

Comments
 (0)