Add copy-csv to (most) Charts
authorBill Kuker <bkuker@billkuker.com>
Mon, 23 Jan 2012 20:05:27 +0000 (20:05 +0000)
committerBill Kuker <bkuker@billkuker.com>
Mon, 23 Jan 2012 20:05:27 +0000 (20:05 +0000)
gui/com/billkuker/rocketry/motorsim/visual/Chart.java

index 1ff57721ea39baa8c52603dfdf4fba2fd85effde..08f60000663ba5820ed8946da9d0db99a53d4bb8 100644 (file)
@@ -5,6 +5,10 @@ import java.awt.BorderLayout;
 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
@@ -16,10 +20,10 @@ import java.util.concurrent.ThreadFactory;
 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
@@ -151,7 +155,38 @@ public class Chart<X extends Quantity, Y extends Quantity> extends JPanel implem
                                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
@@ -348,7 +383,7 @@ public class Chart<X extends Quantity, Y extends Quantity> extends JPanel implem
                        {\r
                                setContentPane(Chart.this);\r
                                setSize(640, 480);\r
-                               setDefaultCloseOperation(DISPOSE_ON_CLOSE);\r
+                               setDefaultCloseOperation(EXIT_ON_CLOSE);\r
                        }\r
                }.setVisible(true);\r
        }\r
@@ -367,13 +402,14 @@ public class Chart<X extends Quantity, Y extends Quantity> extends JPanel implem
 \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