Hi Lars, In my previous message I posted the implemention of taking snapshot in ToolbarArmedGraph is for you to implement taking snapshot out side of XYGraph which don't have a armed toolbar.
You don't need to create extra buttons as you have created the XYGraph with a armed toolbar which already had a button to take snapshot. So, your *public* *void* addButton(Clickable button) method is redundant. BTW: Since your application is based on Eclipse & SWT, you can use org.eclipse.swt.widgets.FileDialog instead of javax.swing.JFileChooser. The swt file dialog example can be found in http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/DemonstratesFileDialog.htm . Best regards, Trig 2016-11-23 18:54 GMT+08:00 Lars Ohmann <[email protected]>: > Hi > > I tried to check it out this example you sent me. I have got an additional > question: > > I tried to implement the method: addButton(snapShotButton); From the > google I got: > public void addButton(Clickable button){ > button.setPreferredSize(BUTTON_SIZE, BUTTON_SIZE); > add(button); > } > > So I added it, but I could not implement "add(button)" ; I imported a lot > of nebula... > > So I send the code snippet concerning this problem. Where is "add(button)" > defined ??? > > Here the code: > > *import* java.io.File; > *import* java.io.IOException; > *import* java.nio.file.FileAlreadyExistsException; > *import* java.nio.file.Files; > *import* java.nio.file.Path; > *import* java.nio.file.Paths; > *import* java.text.SimpleDateFormat; > *import* java.util.*; > > *import* javax.swing.JFileChooser; > *import* javax.swing.JOptionPane; > *import* javax.swing.filechooser.FileFilter; > *import* javax.swing.filechooser.FileNameExtensionFilter; > > *import* org.eclipse.core.*; > *import* org.eclipse.core.commands.*; > *import* org.eclipse.equinox.*; > *import* org.eclipse.osgi.*; > *import* org.eclipse.draw2d.*; > *import* org.eclipse.nebula.visualization.xygraph.*; > *import* org.eclipse.swt.*; > *import* org.eclipse.swt.widgets.*; > *import* org.eclipse.nebula.visualization.xygraph.dataprovider. > CircularBufferDataProvider; > *import* org.eclipse.nebula.visualization.xygraph.figures.*; > *import* org.eclipse.nebula.visualization.xygraph.figures. > Trace.PointStyle; > *import* org.eclipse.nebula.visualization.xygraph.figures.Trace.TraceType; > *import* org.eclipse.nebula.visualization.xygraph.util. > XYGraphMediaFactory; > *import* org.eclipse.nebula.visualization.xygraph.figures. > ToolbarArmedXYGraph; > > *import* org.eclipse.nebula.visualization.xygraph.figures.XYGraphToolbar; > > *import* org.eclipse.draw2d.Button; > //import org.eclipse.draw2d.ButtonGroup; > *import* org.eclipse.draw2d.Label; > *import* org.eclipse.draw2d.Clickable; > > > > *public* *class* PlotKomp // *wird* *von* Fileread.java *aufgerufen* > { > *public* *void* addButton(Clickable button) > { > button.setPreferredSize(25, 25); > *add*(button); > DOES NOT WORK > } > > > *public* *void* drawGraph(String pfad) > { > Display display = Display.*getDefault*(); > Shell shell = *new* Shell(display); > > > shell.setSize(600, 450); > shell.open() > shell.setLocation(100, 100) > LightweightSystem lwssio2 = *new* LightweightSystem(shell); > XYGraph xysio2graph = *new* XYGraph(); > > > ToolbarArmedXYGraph toolbarArmedXYGraph = *new* > ToolbarArmedXYGraph(xysio2graph); //23.11 > > xysio2graph.setTitle("SiO2"); > //23.11 lwssio2.setContents(xysio2graph); > lwssio2.setContents(toolbarArmedXYGraph); > > > // Configure XYGraph > xysio2graph.primaryXAxis.setShowMajorGrid(*true*); > xysio2graph.primaryYAxis.setShowMajorGrid(*true*); > > // *Bezeichnung* *der* *Achsen* > xysio2graph.primaryXAxis.setTitle("XRD-Value [%]"); > xysio2graph.primaryYAxis.setTitle("XRF-Value [%]"); > > // Create a trace data provider, which will provide the data > to the trace XRD and XRF > CircularBufferDataProvider tdpsio2 = *new* > CircularBufferDataProvider(*false*); > tdpsio2.setBufferSize(200); > > tdpsio2.setCurrentXDataArray(arrsio2xrdend); > tdpsio2.setCurrentYDataArray(arrsio2rfaend); > // Create a trace data provider for the line > > Trace tracesio2 = *new* Trace("SiO2-XY Plot", > xysio2graph.primaryXAxis, xysio2graph.primaryYAxis, tdpsio2); > tracesio2.setTraceType(TraceType.*POINT*); > tracesio2.setPointStyle(PointStyle.*FILLED_DIAMOND*); > tracesio2.setPointSize(10); > tracesio2.setAreaAlpha(250); > tracesio2.setTraceColor(XYGraphMediaFactory.*getInstance* > ().getColor(XYGraphMediaFactory.*COLOR_BLUE*)); > > xysio2graph.addTrace(tracesio2); > > CircularBufferDataProvider tdpsio2line = *new* > CircularBufferDataProvider(*false*); > tdpsio2line.setBufferSize(200); > tdpsio2line.setCurrentXDataArray(*new* *double*[]{0.0, 50.0, > 100.0}); > tdpsio2line.setCurrentYDataArray(*new* *double*[]{0.0, 50.0, > 100.0}); > > Trace tracesio2line = *new* Trace("SiO2-XY Plot", > xysio2graph.primaryXAxis, xysio2graph.primaryYAxis, tdpsio2line); > > tracesio2line.setTraceType(TraceType.*SOLID_LINE*); > tracesio2line.setLineWidth(2); > tracesio2line.setTraceColor(XYGraphMediaFactory.*getInstance* > ().getColor(XYGraphMediaFactory.*COLOR_BLACK*)); > > xysio2graph.addTrace(tracesio2line); > > > Button snapShotButton = *new* Button(XYGraphMediaFactory.*getInstance* > ().getImage("images/camera.png")); // > snapShotButton.setToolTip(*new* Label("Save Snapshot to PNG > file")); > // add*Button...* > > Thanks in advance! > > > *Gesendet:* Freitag, 18. November 2016 um 12:07 Uhr > *Von:* "Trig Chen" <[email protected]> > *An:* "Nebula Dev" <[email protected]> > *Betreff:* Re: [nebula-dev] save as bmp, or tif-fileswt xygraph > Hi Lars, > > You can create the plot with a toolbar. The toolbar has export button. The > sample code is in: > > http://git.eclipse.org/c/nebula/org.eclipse.nebula.git/plain/examples/org.eclipse.nebula.snippets/src/org/eclipse/nebula/snippets/visualization/SimpleToolbarArmedXYGraphExample.java > > The relatived code in > org.eclipse.nebula.visualization.xygraph.figures.XYGraphToolbar.java is: > > private void addSnapshotButton() { > Button snapShotButton = new > Button(XYGraphMediaFactory.getInstance().getImage("images/camera.png")); > snapShotButton.setToolTip(new Label("Save Snapshot to PNG > file")); > addButton(snapShotButton); > snapShotButton.addActionListener(new ActionListener() { > public void actionPerformed(ActionEvent event) { > // Have valid name, so get image > ImageLoader loader = new ImageLoader(); > Image image = xyGraph.getImage(); > loader.data = new ImageData[] { > image.getImageData() }; > image.dispose(); > // Prompt for file name > String path = > SingleSourceHelper2.getImageSavePath(); > if (path == null || path.length() <= 0) > return; > // Assert *.png at end of file name > if (!path.toLowerCase().endsWith(".png")) > path = path + ".png"; > // Save > loader.save(path, SWT.IMAGE_PNG); > } > }); > } > > > > > Best regards, > > Trig > > 2016-11-18 17:56 GMT+08:00 Lars Ohmann <[email protected]>: >> >> Hello >> >> below is the code! It is easy, it just gives a simple plot. How can I >> save this plot (xygraph) as >> a bmp or jpg-file on the PC ? I posted the question on several forums, >> either the answer is too >> complicated or the problem is too trivial for the community. >> >> A hint would be very helpful! >> >> thanks! >> >> package org.eclipse.nebula.visualization.xygraph.examples; >> >> /*********************************************************** >> ******************** >> * Copyright (c) 2010 Oak Ridge National Laboratory. >> * All rights reserved. This program and the accompanying materials >> * are made available under the terms of the Eclipse Public License v1.0 >> * which accompanies this distribution, and is available at >> * http://www.eclipse.org/legal/epl-v10.html >> ************************************************************ >> ******************/ >> import org.eclipse.draw2d.LightweightSystem; >> import org.eclipse.nebula.visualization.xygraph.dataprovider. >> CircularBufferDataProvider; >> import org.eclipse.nebula.visualization.xygraph.figures.Ixygraph; >> import org.eclipse.nebula.visualization.xygraph.figures.Trace; >> import org.eclipse.nebula.visualization.xygraph.figures.xygraph; >> import org.eclipse.nebula.visualization.xygraph.figures.Trace.PointStyle; >> import org.eclipse.swt.widgets.Display; >> import org.eclipse.swt.widgets.Shell; >> >> /** >> * A very simple example. >> * >> * @author Xihui Chen >> * >> */ >> public class SimpleExample { >> public static void main(String[] args) { >> final Shell shell = new Shell(); >> shell.setSize(300, 250); >> shell.open(); >> >> // use LightweightSystem to create the bridge between SWT and draw2D >> final LightweightSystem lws = new LightweightSystem(shell); >> >> // create a new XY Graph. >> Ixygraph xygraph = new xygraph(); >> xygraph.setTitle("Simple Example"); >> // set it as the content of LightwightSystem >> lws.setContents(xygraph); >> >> // create a trace data provider, which will provide the data to the >> // trace. >> CircularBufferDataProvider traceDataProvider = new >> CircularBufferDataProvider(false); >> traceDataProvider.setBufferSize(100); >> traceDataProvider.setCurrentXDataArray(new double[] { 10, 23, 34, 45, >> 56, 78, 88, 99 }); >> traceDataProvider.setCurrentYDataArray(new double[] { 11, 44, 55, 45, >> 88, 98, 52, 23 }); >> >> // create the trace >> Trace trace = new Trace("Trace1-XY Plot", xygraph.getPrimaryXAxis(), >> xygraph.getPrimaryYAxis(), traceDataProvider); >> >> // set trace property >> trace.setPointStyle(PointStyle.XCROSS); >> >> // add the trace to xygraph >> xygraph.addTrace(trace); >> >> Display display = Display.getDefault(); >> while (!shell.isDisposed()) { >> if (!display.readAndDispatch()) >> display.sleep(); >> } >> >> } >> } >> >> _______________________________________________ >> nebula-dev mailing list >> [email protected] >> To change your delivery options, retrieve your password, or unsubscribe >> from this list, visit >> https://dev.eclipse.org/mailman/listinfo/nebula-dev > > _______________________________________________ nebula-dev mailing list > [email protected] To change your delivery options, retrieve your > password, or unsubscribe from this list, visit https://dev.eclipse.org/ > mailman/listinfo/nebula-dev > _______________________________________________ nebula-dev mailing list > [email protected] To change your delivery options, retrieve your > password, or unsubscribe from this list, visit https://dev.eclipse.org/ > mailman/listinfo/nebula-dev > > _______________________________________________ > nebula-dev mailing list > [email protected] > To change your delivery options, retrieve your password, or unsubscribe > from this list, visit > https://dev.eclipse.org/mailman/listinfo/nebula-dev >
_______________________________________________ nebula-dev mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/nebula-dev
