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.selector;
24
25 import java.awt.Component;
26
27 import javax.swing.JOptionPane;
28
29 /**
30 * This class offers a method that opens an input dialog with a list of
31 * Integers where an index can be selected and returned.
32 *
33 * @author tkusterle
34 *
35 */
36 public class ChannelSelector {
37
38 /**
39 * Displays a JDialog, which allows user to choose a specific index from the list.
40 *
41 * @param c the owner of the dialog
42 * @param length the highest index number displayed (excluded)
43 * @param current default selected index
44 * @return the selected index
45 */
46 public static int selectChannelDialog(Component c, int length, int current) {
47 if (length == 1) return 0;
48 Object[] possibilities = new Object[length];
49 for (int i = 0; i < length; i++) {
50 possibilities[i] = new Integer(i);
51 }
52 Object selected = JOptionPane.showInputDialog(
53 c,
54 "Select Channel:",
55 "Select Index",
56 JOptionPane.PLAIN_MESSAGE,
57 null,
58 possibilities,
59 new Integer(current));
60 if (selected == null) {
61 return -1;
62 } else {
63 return ((Integer) selected).intValue();
64 }
65 }
66
67 }