1 package org.lsst.ccs.plugin.jas3.trending.timeselection;
2
3 import java.awt.Component;
4 import java.awt.Window;
5 import java.awt.event.ActionEvent;
6 import java.awt.event.ActionListener;
7 import javax.swing.JButton;
8 import javax.swing.JList;
9 import javax.swing.JOptionPane;
10 import javax.swing.JScrollPane;
11 import javax.swing.JTable;
12 import javax.swing.ListSelectionModel;
13 import javax.swing.SwingUtilities;
14 import javax.swing.event.ListSelectionEvent;
15 import javax.swing.event.ListSelectionListener;
16
17
18
19
20
21
22 public class PresetsDialog {
23
24
25
26 private final int VSPACE = 5;
27 private final int HSPACE = 10;
28
29 private final JScrollPane root;
30 private final JButton editButton, deleteButton, newButton, okButton;
31 private final JTable table;
32
33 private final PresetList timeWindowList;
34 private TimeSelection selectedTimeWindow;
35
36
37
38
39 private PresetsDialog(PresetList data) {
40
41 timeWindowList = data;
42
43 editButton = new JButton("Edit...");
44 editButton.addActionListener(new ActionListener() {
45 public void actionPerformed(ActionEvent e) {
46 TimeSelection ts = getSelectedPreset();
47 ts = TimeSelectionPanel.editTimeWindow(editButton, ts);
48 if (ts != null) {
49 timeWindowList.insert(ts);
50 setSelectedPreset(ts);
51 }
52 }
53 });
54
55 deleteButton = new JButton("Delete");
56 deleteButton.addActionListener(new ActionListener() {
57 public void actionPerformed(ActionEvent e) {
58 TimeSelection ts = getSelectedPreset();
59 if (ts != null) timeWindowList.delete(ts);
60 }
61 });
62
63 newButton = new JButton("New...");
64 newButton.addActionListener(new ActionListener() {
65 public void actionPerformed(ActionEvent e) {
66 TimeSelection ts = TimeSelectionPanel.editTimeWindow(newButton, null);
67 if (ts != null) {
68 timeWindowList.insert(ts);
69 setSelectedPreset(ts);
70 }
71 }
72 });
73
74 okButton = new JButton(" OK ");
75 okButton.addActionListener(new ActionListener() {
76 public void actionPerformed(ActionEvent e) {
77 selectedTimeWindow = getSelectedPreset();
78 Window w = SwingUtilities.getWindowAncestor(okButton);
79 if (w != null) w.setVisible(false);
80 }
81 });
82
83 table = new JTable(timeWindowList);
84 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
85 table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
86 public void valueChanged(ListSelectionEvent e) {
87 TimeSelection ts = getSelectedPreset();
88 editButton.setEnabled(ts != null);
89 deleteButton.setEnabled(ts != null);
90 }
91 });
92
93
94 root = new JScrollPane(table);
95 }
96
97
98
99
100
101
102
103
104
105
106 static public TimeSelection managePresets(Component parent, PresetList data) {
107 PresetsDialog dialog = new PresetsDialog(data);
108 int out = JOptionPane.showOptionDialog(parent, dialog.root, "Trending Time Window Presets",
109 JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
110 new JButton[] {dialog.editButton, dialog.deleteButton, dialog.newButton, dialog.okButton}, dialog.okButton);
111 return dialog.selectedTimeWindow;
112 }
113
114
115
116
117 private TimeSelection getSelectedPreset() {
118 int index = table.getSelectedRow();
119 return index == -1 ? null : timeWindowList.get(index);
120 }
121
122 private void setSelectedPreset(TimeSelection ts) {
123 int index = timeWindowList.indexOf(ts);
124 if (index == -1) {
125 table.getSelectionModel().clearSelection();
126 } else {
127 table.getSelectionModel().setSelectionInterval(index, index);
128 }
129 }
130 }