View Javadoc

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.displayers.chart;
24  
25  import java.awt.Component;
26  import java.awt.GridBagConstraints;
27  import java.awt.GridBagLayout;
28  import java.awt.Insets;
29  import java.awt.event.ActionEvent;
30  import java.awt.event.ActionListener;
31  
32  import javax.swing.JButton;
33  import javax.swing.JDialog;
34  import javax.swing.JOptionPane;
35  import javax.swing.JPanel;
36  
37  import de.desy.acop.displayers.selector.SelectorUtilities;
38  import de.desy.acop.transport.ConnectionParameters;
39  
40  /**
41   * <code>TrendSelectorDialog</code> can be used to to select <code>HistoryParameters</code>.
42   * User can supply <code>ConnectionParameters</code> which represent the default
43   * selected parameters.
44   * 
45   * @author Tilen Kusterle, Cosylab
46   *
47   */
48  public class TrendSelectorDialog {
49  
50  	private static final long serialVersionUID = 1L;
51  	
52  	private JDialog dialog;
53  	private TrendSelector trendSelector;
54  	private JButton applyButton;
55  	
56  	private boolean apply = false;
57  	
58  	public TrendSelectorDialog(Component owner) {
59  		dialog = new JDialog(JOptionPane.getFrameForComponent(owner), "Trend Settings", true);
60  		dialog.setSize(300, 400);
61  		JPanel contentPane = new JPanel(new GridBagLayout());
62  		trendSelector = new TrendSelector();
63  		applyButton = new JButton("Apply");
64  		applyButton.addActionListener(new ActionListener() {
65  			public void actionPerformed(ActionEvent e) {
66  				apply = true;
67  				dialog.setVisible(false);
68  			}});
69  		contentPane.add(trendSelector, new GridBagConstraints(0,0,1,1,1,1,GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(1,1,1,1),0,0));
70  		contentPane.add(applyButton, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(1,1,1,1),0,0));
71  		dialog.setContentPane(contentPane);
72  	}
73  	
74  	/**
75  	 * Opens a selector dialog and sets the connection parameters as default
76  	 * selected history parameters.
77  	 *  
78  	 * @param cp default parameters
79  	 * @return selected history parameters
80  	 */
81  	public HistoryParameters chooseHistoryParameters(ConnectionParameters cp) {
82  		apply = false;
83  		trendSelector.setHistoryParameters(cp.getDeviceContext(), cp.getDeviceGroup(), cp.getDeviceName(), cp.getDeviceProperty());
84  		if (SelectorUtilities.isConnectionParametersValid(cp)) {
85  			trendSelector.setIndexMax(SelectorUtilities.getSequenceLength(cp)-1);
86  		}
87  		dialog.setLocationRelativeTo(dialog.getOwner());
88  		dialog.setVisible(true);
89  		if (apply) return trendSelector.getHistoryParameters();
90  		else return null;
91  	}
92  
93  }