import java.awt.Color;\r
import java.awt.Font;\r
import java.awt.Stroke;\r
+import java.awt.Toolkit;\r
+import java.awt.datatransfer.StringSelection;\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ActionListener;\r
import java.lang.reflect.InvocationTargetException;\r
import java.lang.reflect.Method;\r
import java.util.Collection;\r
import javax.measure.quantity.Area;\r
import javax.measure.quantity.Length;\r
import javax.measure.quantity.Quantity;\r
-import javax.measure.quantity.Volume;\r
import javax.measure.unit.SI;\r
import javax.measure.unit.Unit;\r
import javax.swing.JFrame;\r
+import javax.swing.JMenuItem;\r
import javax.swing.JPanel;\r
import javax.swing.SwingUtilities;\r
\r
true, // Use tool tips\r
false // Configure chart to generate URLs?\r
);\r
- add(new ChartPanel(chart));\r
+ ChartPanel cp = new ChartPanel(chart);\r
+ cp.getPopupMenu().add(new JMenuItem("Copy CSV to Clipboard") {\r
+ private static final long serialVersionUID = 1L;\r
+ {\r
+ addActionListener(new ActionListener() {\r
+ @Override\r
+ public void actionPerformed(ActionEvent ae) {\r
+ XYSeries s = dataset.getSeries(0);\r
+ StringBuilder sb = new StringBuilder();\r
+ sb.append(f.getName().substring(0, 1).toUpperCase()\r
+ + f.getName().substring(1));\r
+ sb.append("\n");\r
+ sb.append(Chart.this.xUnit.toString());\r
+ sb.append(",");\r
+ sb.append(Chart.this.yUnit.toString());\r
+ sb.append("\n");\r
+ for (int i = 0; i < s.getItemCount(); i++) {\r
+ sb.append(s.getX(i));\r
+ sb.append(",");\r
+ sb.append(s.getY(i));\r
+ sb.append("\n");\r
+ }\r
+ Toolkit.getDefaultToolkit()\r
+ .getSystemClipboard()\r
+ .setContents(\r
+ new StringSelection(sb.toString()),\r
+ null);\r
+ }\r
+ });\r
+ }\r
+ }, 3);\r
+ add(cp);\r
}\r
\r
\r
{\r
setContentPane(Chart.this);\r
setSize(640, 480);\r
- setDefaultCloseOperation(DISPOSE_ON_CLOSE);\r
+ setDefaultCloseOperation(EXIT_ON_CLOSE);\r
}\r
}.setVisible(true);\r
}\r
\r
c.show();\r
\r
+ /*\r
Chart<Length, Volume> v = new Chart<Length, Volume>(SI.MILLIMETER,\r
SI.MILLIMETER.pow(3).asType(Volume.class), g, "volume");\r
\r
v.setDomain(c.new IntervalDomain(Amount.valueOf(0, SI.CENTIMETER), g\r
.webThickness()));\r
\r
- v.show();\r
+ v.show();*/\r
}\r
\r
\r