-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- * VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * 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
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
package org.simantics.scenegraph.swing;
-import java.awt.Graphics2D;\r
-import java.awt.geom.AffineTransform;\r
-import java.awt.geom.Rectangle2D;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import javax.swing.JPanel;\r
-\r
-import org.jfree.chart.ChartFactory;\r
-import org.jfree.chart.ChartPanel;\r
-import org.jfree.chart.JFreeChart;\r
-import org.jfree.chart.axis.ValueAxis;\r
-import org.jfree.chart.plot.PlotOrientation;\r
-import org.jfree.chart.plot.XYPlot;\r
-import org.jfree.data.xy.XYSeries;\r
-import org.jfree.data.xy.XYSeriesCollection;\r
-import org.simantics.scenegraph.ExportableWidget.RasterOutputWidget;\r
-import org.simantics.scenegraph.g2d.IdentityAffineTransform;\r
-import org.simantics.scenegraph.g2d.nodes.Trend2DNode.TrendPoint;\r
-\r
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JPanel;
+
+import org.jfree.chart.ChartFactory;
+import org.jfree.chart.ChartPanel;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.plot.XYPlot;
+import org.jfree.data.xy.XYSeries;
+import org.jfree.data.xy.XYSeriesCollection;
+import org.simantics.scenegraph.ExportableWidget.RasterOutputWidget;
+import org.simantics.scenegraph.g2d.IdentityAffineTransform;
+import org.simantics.scenegraph.g2d.nodes.Trend2DNode.TrendPoint;
+
@RasterOutputWidget
public class JFreeTrendNode extends ComponentNode<JPanel> {
protected String xTitle = null;
protected transient List<TrendPoint> points = null;
- protected transient XYSeries series = null;\r
+ protected transient XYSeries series = null;
- @Override\r
- public void init() {\r
- series = new XYSeries("Trend");\r
- final XYSeriesCollection dataset = new XYSeriesCollection(series);\r
- if(title == null) title = "Trend";\r
- if(xTitle == null) xTitle = "Value";\r
- if(yTitle == null) yTitle = "Time";\r
- scale = true;\r
-\r
-\r
- final JFreeChart chart = ChartFactory.createXYLineChart(\r
- title,\r
- xTitle,\r
- yTitle,\r
- dataset,\r
- PlotOrientation.VERTICAL,\r
- false,\r
- true,\r
- false\r
- );\r
- final XYPlot plot = chart.getXYPlot();\r
- ValueAxis axis = plot.getDomainAxis();\r
- axis.setAutoRange(true);\r
-// axis.setFixedAutoRange(60000.0); // 60 seconds\r
-\r
- component = new ChartPanel(chart, false);\r
- ((ChartPanel)component).setRefreshBuffer(false);\r
- component.setIgnoreRepaint(true); \r
- component.setDoubleBuffered(false);\r
- if(bounds != null) {\r
- component.setBounds(0, 0, 0, 0);\r
- }\r
-\r
- if(points != null) {\r
- for(TrendPoint p : points) {\r
- try {\r
- series.add(p.getX(), p.getY());\r
- } catch(org.jfree.data.general.SeriesException e) {\r
-\r
- }\r
- }\r
- }\r
- super.init();\r
- }\r
+ @Override
+ public void init() {
+ series = new XYSeries("Trend");
+ final XYSeriesCollection dataset = new XYSeriesCollection(series);
+ if(title == null) title = "Trend";
+ if(xTitle == null) xTitle = "Value";
+ if(yTitle == null) yTitle = "Time";
+ scale = true;
+
+
+ final JFreeChart chart = ChartFactory.createXYLineChart(
+ title,
+ xTitle,
+ yTitle,
+ dataset,
+ PlotOrientation.VERTICAL,
+ false,
+ true,
+ false
+ );
+ final XYPlot plot = chart.getXYPlot();
+ ValueAxis axis = plot.getDomainAxis();
+ axis.setAutoRange(true);
+// axis.setFixedAutoRange(60000.0); // 60 seconds
+
+ component = new ChartPanel(chart, false);
+ ((ChartPanel)component).setRefreshBuffer(false);
+ component.setIgnoreRepaint(true);
+ component.setDoubleBuffered(false);
+ if(bounds != null) {
+ component.setBounds(0, 0, 0, 0);
+ }
+
+ if(points != null) {
+ for(TrendPoint p : points) {
+ try {
+ series.add(p.getX(), p.getY());
+ } catch(org.jfree.data.general.SeriesException e) {
+
+ }
+ }
+ }
+ super.init();
+ }
@Override
public void render(Graphics2D g2d) {
if (component != null) {
- AffineTransform ot = g2d.getTransform();\r
-\r
+ AffineTransform ot = g2d.getTransform();
+
double scaleX = ot.getScaleX();
double scaleY = ot.getScaleY();
-\r
- if (transform == IdentityAffineTransform.INSTANCE)\r
+
+ if (transform == IdentityAffineTransform.INSTANCE)
transform = new AffineTransform();
synchronized(transform) {
transform.setToTranslation(bounds.getMinX(), bounds.getMinY());
component.setLocation((int)g2d.getTransform().getTranslateX(), (int)g2d.getTransform().getTranslateY());
if(component.getSize().getWidth() != width || component.getSize().getHeight() != height) {
- component.setSize(width, height);\r
+ component.setSize(width, height);
}
- component.paint(g2d);\r
- \r
+ component.paint(g2d);
+
g2d.setTransform(ot);
}
- }\r
+ }
@SyncField("title")
public void setTitle(String title) {
@SyncField("xTitle")
public void setXTitle(String xTitle) {
this.xTitle = xTitle;
- if(component != null)\r
- ((ChartPanel)component).getChart().getXYPlot().getDomainAxis().setLabel(xTitle);\r
+ if(component != null)
+ ((ChartPanel)component).getChart().getXYPlot().getDomainAxis().setLabel(xTitle);
}
@SyncField("yTitle")
public void setYTitle(String yTitle) {
this.yTitle = yTitle;
- if(component != null)\r
- ((ChartPanel)component).getChart().getXYPlot().getRangeAxis().setLabel(yTitle);\r
+ if(component != null)
+ ((ChartPanel)component).getChart().getXYPlot().getRangeAxis().setLabel(yTitle);
}
@SyncField("bounds")
public void setBounds(Rectangle2D bounds) {
- this.bounds = bounds;\r
-// width = (int)bounds.getWidth();\r
+ this.bounds = bounds;
+// width = (int)bounds.getWidth();
// height = (int)bounds.getHeight();
}