1   /*
2    * Copyright (c) 2006 Stiftung Deutsches Elektronen-Synchroton,
3    * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY.
4    *
5    * THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS.
6    * WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
7    * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND
8    * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
9    * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10   * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
11   * THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE
12   * IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR
13   * CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
14   * NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
15   * DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
16   * OR MODIFICATIONS.
17   * THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION,
18   * USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS
19   * PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY
20   * AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM
21   */
22  
23  package de.desy.acop.demo;
24  
25  import java.awt.Color;
26  
27  import javax.swing.JFrame;
28  import javax.swing.JPanel;
29  
30  import de.desy.acop.chart.Acop;
31  
32  public class AcopStyleDemo extends JPanel {
33  	
34  	private static final long serialVersionUID = 1L;
35  	
36  	private Acop acop;
37  	private int handle = -1;
38  	double[] x;
39  	double[] y;
40  	
41  	public AcopStyleDemo() {
42  		acop = new Acop();
43  		add(acop);
44  	}
45  	
46  	public void drawData(double[] x, double[] y) {
47  		this.x = x;
48  		this.y = y;
49  		if (handle < 0) {
50  			handle = acop.draw(y, x);
51  		} else {
52  			acop.refreshScreen(y, handle, y.length, 0, x);
53  		}
54  		acop.autoScale(true, true, true, true);
55  	}
56  	
57  	public void changeStyleRefresh(int drawWidth, int displayMode, Color color) {
58  		acop.setDrawWidth(drawWidth);
59  		acop.setDisplayMode(displayMode);
60  		acop.setForeground(color);
61  		acop.refreshScreen(y, handle, y.length, 0, x);
62  	}
63  	
64  	public void changeStyleReinitialize(int drawWidth, int displayMode, Color color) {
65  		acop.clearScreen(handle);
66  		handle = -1;
67  		acop.setDrawWidth(drawWidth);
68  		acop.setDisplayMode(displayMode);
69  		acop.setForeground(color);
70  		drawData(x, y);
71  	}
72  	
73  	public static void main(String[] args) {
74  		AcopStyleDemo acm = new AcopStyleDemo();
75  		JFrame appFrame = new JFrame();
76  		appFrame.setContentPane(acm);
77  		appFrame.setSize(600, 400);
78  		appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
79  		appFrame.setVisible(true);
80  		
81  		try {
82  			acm.drawData(new double[]{0,1,2,3,4,5,6,7,8,9}, new double[]{2.12, 3.2, 5.3, 2.5, 5.34, 7, 3.4, 7.2, 9.34, 1.3});
83  			Thread.sleep(5000);
84  			System.out.println("Try to change the plot with refresh...");
85  			// displayMode = 3 represents dots
86  			acm.changeStyleRefresh(5, 3, Color.red);
87  			Thread.sleep(5000);
88  			System.out.println("Try to change the plot by reinitializing...");
89  			acm.changeStyleReinitialize(5, 3, Color.blue);
90  		} catch (InterruptedException e) {
91  			e.printStackTrace();
92  		}
93  		
94  	}
95  
96  }