From e6b323bc28f197bc9af29fc36b0020806051657e Mon Sep 17 00:00:00 2001 From: Alex Nugent <i@alexnugent.name> Date: Sat, 9 Jul 2011 10:55:55 -0600 Subject: [PATCH] added Swing Helper --- dist/xchart-1.0.0.jar | Bin 0 -> 50976 bytes src/com/xeiam/swing/ButtonDemo.java | 142 ++++++++++++++++++ src/com/xeiam/swing/SwingHelper.java | 55 +++++++ src/com/xeiam/xcharts/example/HugeChart.java | 95 ------------ src/com/xeiam/xcharts/example/SwingChart.java | 56 +++---- .../xeiam/xcharts/example/SwingChart2.java | 24 +-- .../xeiam/xcharts/example/SwingChart3.java | 24 +-- .../xeiam/xcharts/example/SwingChart4.java | 31 +--- .../xeiam/xcharts/example/SwingChart5.java | 79 ++++++++++ 9 files changed, 310 insertions(+), 196 deletions(-) create mode 100644 dist/xchart-1.0.0.jar create mode 100644 src/com/xeiam/swing/ButtonDemo.java create mode 100644 src/com/xeiam/swing/SwingHelper.java delete mode 100644 src/com/xeiam/xcharts/example/HugeChart.java create mode 100644 src/com/xeiam/xcharts/example/SwingChart5.java diff --git a/dist/xchart-1.0.0.jar b/dist/xchart-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..975bb4a371b0e9f5d73755946336444a7e9f1b5d GIT binary patch literal 50976 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 BYRLcq literal 0 HcmV?d00001 diff --git a/src/com/xeiam/swing/ButtonDemo.java b/src/com/xeiam/swing/ButtonDemo.java new file mode 100644 index 00000000..a1485492 --- /dev/null +++ b/src/com/xeiam/swing/ButtonDemo.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle or the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.xeiam.swing; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; + +import javax.swing.AbstractButton; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; + +/* + * ButtonDemo.java requires the following files: + * images/right.gif + * images/middle.gif + * images/left.gif + */ +public class ButtonDemo extends JPanel implements ActionListener { + protected JButton b1, b2, b3; + + public ButtonDemo() { + ImageIcon leftButtonIcon = createImageIcon("images/right.gif"); + ImageIcon middleButtonIcon = createImageIcon("images/middle.gif"); + ImageIcon rightButtonIcon = createImageIcon("images/left.gif"); + + b1 = new JButton("Disable middle button", leftButtonIcon); + b1.setVerticalTextPosition(AbstractButton.CENTER); + b1.setHorizontalTextPosition(AbstractButton.LEADING); // aka LEFT, for left-to-right locales + b1.setMnemonic(KeyEvent.VK_D); + b1.setActionCommand("disable"); + + b2 = new JButton("Middle button", middleButtonIcon); + b2.setVerticalTextPosition(AbstractButton.BOTTOM); + b2.setHorizontalTextPosition(AbstractButton.CENTER); + b2.setMnemonic(KeyEvent.VK_M); + + b3 = new JButton("Enable middle button", rightButtonIcon); + // Use the default text position of CENTER, TRAILING (RIGHT). + b3.setMnemonic(KeyEvent.VK_E); + b3.setActionCommand("enable"); + b3.setEnabled(false); + + // Listen for actions on buttons 1 and 3. + b1.addActionListener(this); + b3.addActionListener(this); + + b1.setToolTipText("Click this button to disable the middle button."); + b2.setToolTipText("This middle button does nothing when you click it."); + b3.setToolTipText("Click this button to enable the middle button."); + + // Add Components to this container, using the default FlowLayout. + add(b1); + add(b2); + add(b3); + } + + @Override + public void actionPerformed(ActionEvent e) { + if ("disable".equals(e.getActionCommand())) { + b2.setEnabled(false); + b1.setEnabled(false); + b3.setEnabled(true); + } else { + b2.setEnabled(true); + b1.setEnabled(true); + b3.setEnabled(false); + } + } + + /** Returns an ImageIcon, or null if the path was invalid. */ + protected static ImageIcon createImageIcon(String path) { + java.net.URL imgURL = ButtonDemo.class.getResource(path); + if (imgURL != null) { + return new ImageIcon(imgURL); + } else { + System.err.println("Couldn't find file: " + path); + return null; + } + } + + /** + * Create the GUI and show it. For thread safety, this method should be invoked from the event-dispatching thread. + */ + private static void createAndShowGUI() { + + // Create and set up the window. + JFrame frame = new JFrame("ButtonDemo"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Create and set up the content pane. + ButtonDemo newContentPane = new ButtonDemo(); + newContentPane.setOpaque(true); // content panes must be opaque + frame.setContentPane(newContentPane); + + // Display the window. + frame.pack(); + frame.setVisible(true); + } + + public static void main(String[] args) { + // Schedule a job for the event-dispatching thread: + // creating and showing this application's GUI. + javax.swing.SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + createAndShowGUI(); + } + }); + } +} diff --git a/src/com/xeiam/swing/SwingHelper.java b/src/com/xeiam/swing/SwingHelper.java new file mode 100644 index 00000000..8ec2783d --- /dev/null +++ b/src/com/xeiam/swing/SwingHelper.java @@ -0,0 +1,55 @@ +package com.xeiam.swing; + +import javax.swing.BoxLayout; +import javax.swing.JFrame; +import javax.swing.JPanel; + +import com.xeiam.xcharts.Chart; +import com.xeiam.xcharts.JChartPanel; + +public class SwingHelper { + + Chart[] charts; + + public SwingHelper(Chart chart) { + this.charts = new Chart[1]; + charts[0] = chart; + } + + public SwingHelper(Chart[] charts) { + this.charts = charts; + } + + /** + * Create the GUI and show it. For thread safety, this method should be invoked from the event-dispatching thread. + */ + private void createAndShowGUI() { + + // Create and set up the window. + JFrame frame = new JFrame("XChart"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); + + for (int i = 0; i < charts.length; i++) { + JPanel chartPanel = new JChartPanel(charts[i]); + frame.getContentPane().add(chartPanel); + } + + // frame.setContentPane(newContentPane); + + // Display the window. + frame.pack(); + frame.setVisible(true); + } + + public void displayChart() { + // Schedule a job for the event-dispatching thread: + // creating and showing this application's GUI. + javax.swing.SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + createAndShowGUI(); + } + }); + } +} diff --git a/src/com/xeiam/xcharts/example/HugeChart.java b/src/com/xeiam/xcharts/example/HugeChart.java deleted file mode 100644 index 7858eecd..00000000 --- a/src/com/xeiam/xcharts/example/HugeChart.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Copyright 2011 Xeiam LLC. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.xeiam.xcharts.example; - -import java.awt.BorderLayout; - -import javax.swing.JFrame; -import javax.swing.JPanel; - -import com.xeiam.xcharts.Chart; -import com.xeiam.xcharts.JChartPanel; -import com.xeiam.xcharts.series.Series; - -/** - * @author timmolter - */ -public class HugeChart { - - private static void createAndShowGUI() { - - // Create and set up the window. - JFrame frame = new JFrame("XChart"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setUndecorated(true); - - // Create Chart - Chart chart = new Chart(800, 600); - - long t = System.currentTimeMillis(); - // generates linear data - int b = 1000000; - double[] xData = new double[b + 1]; - double[] yData = new double[b + 1]; - for (int x = 0; x <= b; x++) { - xData[x] = x; - yData[x] = x; - } - long t1 = System.currentTimeMillis() - t; - t = System.currentTimeMillis(); - System.out.println("B:" + System.currentTimeMillis()); - // Customize Chart - chart.setChartTitle("Sample Chart"); - chart.setXAxisTitle("X"); - chart.setYAxisTitle("Y"); - // chart.setChartTitleVisible(false); - // chart.setChartLegendVisible(false); - // chart.setAxisTitlesVisible(false); - - Series series = chart.addSeries("big data set", xData, yData); - // series.setLineColor(SeriesColor.PURPLE); - // series.setLineStyle(SeriesLineStyle.NONE); - // series.setMarkerColor(SeriesColor.GREEN); - // series.setMarker(SeriesMarker.NONE); - - // Swing - JPanel chartPanel = new JChartPanel(chart); - - // add the panel to the content pane - frame.getContentPane().add(chartPanel, BorderLayout.CENTER); - - // Display the window - frame.pack(); - frame.setLocationRelativeTo(null); // centers on screen - frame.setVisible(true); - - long t2 = System.currentTimeMillis() - t; - System.out.println("Data Generation Time: " + t1); - System.out.println("Plot Generation Time: " + t2); - } - - public static void main(String[] args) { - - // Schedule a job for the event-dispatching thread: - // creating and showing this application's GUI. - javax.swing.SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - createAndShowGUI(); - } - }); - } -} diff --git a/src/com/xeiam/xcharts/example/SwingChart.java b/src/com/xeiam/xcharts/example/SwingChart.java index d6a7487d..2033d512 100644 --- a/src/com/xeiam/xcharts/example/SwingChart.java +++ b/src/com/xeiam/xcharts/example/SwingChart.java @@ -15,14 +15,11 @@ */ package com.xeiam.xcharts.example; -import java.awt.BorderLayout; - -import javax.swing.JFrame; -import javax.swing.JPanel; - +import com.xeiam.swing.SwingHelper; import com.xeiam.xcharts.Chart; -import com.xeiam.xcharts.JChartPanel; import com.xeiam.xcharts.series.Series; +import com.xeiam.xcharts.series.SeriesColor; +import com.xeiam.xcharts.series.SeriesLineStyle; import com.xeiam.xcharts.series.SeriesMarker; /** @@ -32,15 +29,15 @@ public class SwingChart { private static void createAndShowGUI() { - // // generates sine data - // int size = 100; - // double[] xData1 = new double[size + 1]; - // double[] yData1 = new double[size + 1]; - // for (int i = 0; i <= size; i++) { - // double radians = (Math.PI / (size / 2) * i); - // xData1[i] = i - size / 2; - // yData1[i] = size * Math.sin(radians); - // } + // generates sine data + int size = 100; + double[] xData1 = new double[size + 1]; + double[] yData1 = new double[size + 1]; + for (int i = 0; i <= size; i++) { + double radians = (Math.PI / (size / 2) * i); + xData1[i] = i - size / 2; + yData1[i] = size * Math.sin(radians); + } // generates linear data int size2 = 100; @@ -52,9 +49,6 @@ public class SwingChart { } // Create and set up the window. - JFrame frame = new JFrame("XChart"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setUndecorated(true); // Create Chart Chart chart = new Chart(800, 600); @@ -68,29 +62,21 @@ public class SwingChart { // chart.setAxisTitlesVisible(false); // Series 1 - // Series series1 = chart.addSeries("y=sin(x)", xData1, yData1); - // series1.setLineColor(SeriesColor.PURPLE); - // series1.setLineStyle(SeriesLineStyle.NONE); - // series1.setMarkerColor(SeriesColor.GREEN); - // series1.setMarker(SeriesMarker.NONE); + Series series1 = chart.addSeries("y=sin(x)", xData1, yData1); + series1.setLineColor(SeriesColor.PURPLE); + series1.setLineStyle(SeriesLineStyle.NONE); + series1.setMarkerColor(SeriesColor.GREEN); + series1.setMarker(SeriesMarker.NONE); // Series 2 - Series series2 = chart.addSeries("y=x", xData2, yData2); + // Series series2 = chart.addSeries("y=x", xData2, yData2); // series2.setLineColor(SeriesColor.PURPLE); // series2.setLineStyle(SeriesLineStyle.NONE); // series2.setMarkerColor(SeriesColor.GREEN); - series2.setMarker(SeriesMarker.NONE); - - // Swing - JPanel chartPanel = new JChartPanel(chart); - - // add the panel to the content pane - frame.getContentPane().add(chartPanel, BorderLayout.CENTER); + // series2.setMarker(SeriesMarker.NONE); - // Display the window - frame.pack(); - frame.setLocationRelativeTo(null); // centers on screen - frame.setVisible(true); + SwingHelper swingHelper = new SwingHelper(chart); + swingHelper.displayChart(); } public static void main(String[] args) { diff --git a/src/com/xeiam/xcharts/example/SwingChart2.java b/src/com/xeiam/xcharts/example/SwingChart2.java index a0d22d13..ec068a7c 100644 --- a/src/com/xeiam/xcharts/example/SwingChart2.java +++ b/src/com/xeiam/xcharts/example/SwingChart2.java @@ -15,13 +15,8 @@ */ package com.xeiam.xcharts.example; -import java.awt.BorderLayout; - -import javax.swing.JFrame; -import javax.swing.JPanel; - +import com.xeiam.swing.SwingHelper; import com.xeiam.xcharts.Chart; -import com.xeiam.xcharts.JChartPanel; import com.xeiam.xcharts.series.Series; /** @@ -31,11 +26,6 @@ public class SwingChart2 { private static void createAndShowGUI() { - // Create and set up the window. - JFrame frame = new JFrame("XChart"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setUndecorated(true); - // Create Chart Chart chart = new Chart(800, 600); @@ -65,16 +55,8 @@ public class SwingChart2 { // series.setMarker(SeriesMarker.NONE); } - // Swing - JPanel chartPanel = new JChartPanel(chart); - - // add the panel to the content pane - frame.getContentPane().add(chartPanel, BorderLayout.CENTER); - - // Display the window - frame.pack(); - frame.setLocationRelativeTo(null); // centers on screen - frame.setVisible(true); + SwingHelper swingHelper = new SwingHelper(chart); + swingHelper.displayChart(); } public static void main(String[] args) { diff --git a/src/com/xeiam/xcharts/example/SwingChart3.java b/src/com/xeiam/xcharts/example/SwingChart3.java index c0e74bd2..c78652b7 100644 --- a/src/com/xeiam/xcharts/example/SwingChart3.java +++ b/src/com/xeiam/xcharts/example/SwingChart3.java @@ -15,13 +15,8 @@ */ package com.xeiam.xcharts.example; -import java.awt.BorderLayout; - -import javax.swing.JFrame; -import javax.swing.JPanel; - +import com.xeiam.swing.SwingHelper; import com.xeiam.xcharts.Chart; -import com.xeiam.xcharts.JChartPanel; import com.xeiam.xcharts.series.Series; /** @@ -39,11 +34,6 @@ public class SwingChart3 { double[] xData2 = new double[] { 0.0, 0.0, 0.0 }; double[] yData2 = new double[] { 0.0, 1.0, 2.0 }; - // Create and set up the window. - JFrame frame = new JFrame("XChart"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setUndecorated(true); - // Create Chart Chart chart = new Chart(800, 600); @@ -59,16 +49,8 @@ public class SwingChart3 { Series series1 = chart.addSeries("y=0", xData1, yData1); Series series2 = chart.addSeries("x=0", xData2, yData2); - // Swing - JPanel chartPanel = new JChartPanel(chart); - - // add the panel to the content pane - frame.getContentPane().add(chartPanel, BorderLayout.CENTER); - - // Display the window - frame.pack(); - frame.setLocationRelativeTo(null); // centers on screen - frame.setVisible(true); + SwingHelper swingHelper = new SwingHelper(chart); + swingHelper.displayChart(); } public static void main(String[] args) { diff --git a/src/com/xeiam/xcharts/example/SwingChart4.java b/src/com/xeiam/xcharts/example/SwingChart4.java index 0ebd9930..a294877c 100644 --- a/src/com/xeiam/xcharts/example/SwingChart4.java +++ b/src/com/xeiam/xcharts/example/SwingChart4.java @@ -15,13 +15,8 @@ */ package com.xeiam.xcharts.example; -import java.awt.BorderLayout; - -import javax.swing.JFrame; -import javax.swing.JPanel; - +import com.xeiam.swing.SwingHelper; import com.xeiam.xcharts.Chart; -import com.xeiam.xcharts.JChartPanel; import com.xeiam.xcharts.series.Series; import com.xeiam.xcharts.series.SeriesMarker; @@ -37,36 +32,24 @@ public class SwingChart4 { // generates linear data double[] yData1 = new double[] { 0.0, 0.0, 0.0, -10.0, 15.0, 15.0 }; - // Create and set up the window. - JFrame frame = new JFrame("XChart"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setUndecorated(true); - // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new Chart(600, 300); // Customize Chart chart.setChartTitle("Sample Chart"); chart.setXAxisTitle("X"); chart.setYAxisTitle("Y"); - chart.setChartTitleVisible(false); - chart.setChartLegendVisible(false); - chart.setAxisTitlesVisible(false); + chart.setChartTitleVisible(true); + chart.setChartLegendVisible(true); + chart.setAxisTitlesVisible(true); // Series Series series1 = chart.addSeries("y=0", null, yData1); series1.setMarker(SeriesMarker.NONE); - // Swing - JPanel chartPanel = new JChartPanel(chart); - - // add the panel to the content pane - frame.getContentPane().add(chartPanel, BorderLayout.CENTER); + SwingHelper swingHelper = new SwingHelper(chart); + swingHelper.displayChart(); - // Display the window - frame.pack(); - frame.setLocationRelativeTo(null); // centers on screen - frame.setVisible(true); } public static void main(String[] args) { diff --git a/src/com/xeiam/xcharts/example/SwingChart5.java b/src/com/xeiam/xcharts/example/SwingChart5.java new file mode 100644 index 00000000..97297f2e --- /dev/null +++ b/src/com/xeiam/xcharts/example/SwingChart5.java @@ -0,0 +1,79 @@ +/** + * Copyright 2011 Xeiam LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.xeiam.xcharts.example; + +import com.xeiam.swing.SwingHelper; +import com.xeiam.xcharts.Chart; +import com.xeiam.xcharts.series.Series; +import com.xeiam.xcharts.series.SeriesMarker; + +/** + * Demonstrated/Tests plotting horizontal and vertical lines + * + * @author timmolter + */ +public class SwingChart5 { + + private static void createAndShowGUI() { + + Chart[] charts = new Chart[3]; + for (int i = 0; i < charts.length; i++) { + charts[i] = getRandomWalkChart(1000); + } + + SwingHelper swingHelper = new SwingHelper(charts); + swingHelper.displayChart(); + + } + + private static Chart getRandomWalkChart(int N) { + + double[] y = new double[N]; + for (int i = 1; i < y.length; i++) { + y[i] = y[i - 1] + Math.random() - .5; + } + + // Create Chart + Chart chart = new Chart(600, 300); + + // Customize Chart + chart.setChartTitle("Random Walk"); + chart.setXAxisTitle("X"); + chart.setYAxisTitle("Y"); + chart.setChartTitleVisible(true); + chart.setChartLegendVisible(true); + chart.setAxisTitlesVisible(true); + + // Series + Series series1 = chart.addSeries("y=0", null, y); + series1.setMarker(SeriesMarker.NONE); + + return chart; + + } + + public static void main(String[] args) { + + // Schedule a job for the event-dispatching thread: + // creating and showing this application's GUI. + javax.swing.SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + createAndShowGUI(); + } + }); + } +} -- GitLab