4
* Copyright (c) 2001-2004 by Andy Balaam and the FreeGuide contributors
6
* freeguide-tv.sourceforge.net
8
* Released under the GNU General Public License
9
* with ABSOLUTELY NO WARRANTY.
11
* See the file COPYING for more information.
14
package freeguide.gui.dialogs;
16
import freeguide.gui.viewer.*;
17
import freeguide.lib.fgspecific.*;
23
* Allows the user to edit a channel set
25
* @author Brendan Corrigan (based on FreeGuideChannelSetEditor by dtorok)
26
* @created 22nd August 2003
30
public class ChannelSetEditorDialog extends FGDialog {
32
public ChannelSetEditorDialog(FGDialog owner, String title,
33
ViewerFrameXMLTVLoader loader, ChannelSet chset) {
35
super( owner, title );
38
this.channelset = chset;
39
this.allModel = new DefaultListModel();
40
this.csetModel = new DefaultListModel();
49
* Description of the Method
51
private void fillData() {
52
Vector chnames = this.loader.getChannelNames();
53
Vector chids = this.loader.getChannelIDs();
54
allModel.removeAllElements();
55
csetModel.removeAllElements();
56
Vector csetnames = channelset.getChannelNames();
57
//get channels, put in left
58
for (int i = 0; i < chnames.size(); i++) {
59
if (!csetnames.contains(chnames.elementAt(i))) {
60
allModel.addElement(chnames.elementAt(i));
63
// if existing set, do name and right channels
65
for (int j = 0; j < csetnames.size(); j++) {
66
csetModel.addElement(csetnames.elementAt(j));
69
nameTextField.setText(channelset.getChannelSetName());
74
private void initComponents() {
75
java.awt.GridBagConstraints gridBagConstraints;
77
jScrollPane1 = new javax.swing.JScrollPane();
78
allchannelsJList = new javax.swing.JList(allModel);
79
jScrollPane2 = new javax.swing.JScrollPane();
80
channelsetJList = new javax.swing.JList(csetModel);
81
jPanel1 = new javax.swing.JPanel();
82
addButton = new javax.swing.JButton();
83
removeButton = new javax.swing.JButton();
84
moveUpButton = new javax.swing.JButton();
85
moveDownButton = new javax.swing.JButton();
86
jPanel3 = new javax.swing.JPanel();
87
nameLabel = new javax.swing.JLabel();
88
nameTextField = new javax.swing.JTextField();
89
jPanel4 = new javax.swing.JPanel();
90
saveButton = new javax.swing.JButton();
91
cancelButton = new javax.swing.JButton();
92
jLabel1 = new javax.swing.JLabel();
93
jLabel2 = new javax.swing.JLabel();
95
getContentPane().setLayout(new java.awt.GridBagLayout());
97
jScrollPane1.setMinimumSize(new java.awt.Dimension(100, 600));
98
allchannelsJList.setMinimumSize(new java.awt.Dimension(100, 600));
99
allchannelsJList.setVisibleRowCount(20);
100
jScrollPane1.setViewportView(allchannelsJList);
102
gridBagConstraints = new java.awt.GridBagConstraints();
103
gridBagConstraints.gridx = 0;
104
gridBagConstraints.gridy = 2;
105
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
106
gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 5);
107
gridBagConstraints.weightx = 0.9;
108
gridBagConstraints.weighty = 0.9;
109
getContentPane().add(jScrollPane1, gridBagConstraints);
111
jScrollPane2.setMinimumSize(new java.awt.Dimension(100, 600));
112
channelsetJList.setMinimumSize(new java.awt.Dimension(100, 600));
113
channelsetJList.setVisibleRowCount(20);
114
channelsetJList.addListSelectionListener(
115
new javax.swing.event.ListSelectionListener() {
116
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
117
channelsetListChanged(evt);
121
jScrollPane2.setViewportView(channelsetJList);
123
gridBagConstraints = new java.awt.GridBagConstraints();
124
gridBagConstraints.gridx = 2;
125
gridBagConstraints.gridy = 2;
126
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
127
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 10);
128
gridBagConstraints.weightx = 0.9;
129
gridBagConstraints.weighty = 0.9;
130
getContentPane().add(jScrollPane2, gridBagConstraints);
132
jPanel1.setLayout(new java.awt.GridBagLayout());
134
addButton.setText("Add to Set >>");
135
addButton.setMaximumSize(new java.awt.Dimension(135, 26));
136
addButton.setMinimumSize(new java.awt.Dimension(135, 26));
137
addButton.addActionListener(
138
new java.awt.event.ActionListener() {
139
public void actionPerformed(java.awt.event.ActionEvent evt) {
140
addButtonActionPerformed(evt);
144
gridBagConstraints = new java.awt.GridBagConstraints();
145
gridBagConstraints.gridx = 0;
146
gridBagConstraints.gridy = 0;
147
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
148
jPanel1.add(addButton, gridBagConstraints);
150
removeButton.setText("<< Remove");
151
removeButton.setActionCommand("<< Remove from Set");
152
removeButton.setMaximumSize(new java.awt.Dimension(135, 26));
153
removeButton.setMinimumSize(new java.awt.Dimension(135, 26));
154
removeButton.setPreferredSize(new java.awt.Dimension(172, 26));
155
removeButton.addActionListener(
156
new java.awt.event.ActionListener() {
157
public void actionPerformed(java.awt.event.ActionEvent evt) {
158
removeButtonActionPerformed(evt);
162
gridBagConstraints = new java.awt.GridBagConstraints();
163
gridBagConstraints.gridx = 0;
164
gridBagConstraints.gridy = 1;
165
gridBagConstraints.insets = new java.awt.Insets(0, 5, 50, 5);
166
gridBagConstraints.weighty = 0.25;
167
jPanel1.add(removeButton, gridBagConstraints);
169
moveUpButton.setText("Move Up");
170
moveUpButton.setMaximumSize(new java.awt.Dimension(115, 26));
171
moveUpButton.setMinimumSize(new java.awt.Dimension(115, 26));
172
moveUpButton.setPreferredSize(new java.awt.Dimension(115, 26));
173
moveUpButton.addActionListener(
174
new java.awt.event.ActionListener() {
175
public void actionPerformed(java.awt.event.ActionEvent evt) {
180
gridBagConstraints = new java.awt.GridBagConstraints();
181
gridBagConstraints.gridx = 0;
182
gridBagConstraints.gridy = 2;
183
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
184
jPanel1.add(moveUpButton, gridBagConstraints);
186
moveDownButton.setText("Move Down");
187
moveDownButton.setMaximumSize(new java.awt.Dimension(115, 26));
188
moveDownButton.setMinimumSize(new java.awt.Dimension(115, 26));
189
moveDownButton.setPreferredSize(new java.awt.Dimension(115, 26));
190
moveDownButton.addActionListener(
191
new java.awt.event.ActionListener() {
192
public void actionPerformed(java.awt.event.ActionEvent evt) {
193
downButtonActionPerformed(evt);
197
gridBagConstraints = new java.awt.GridBagConstraints();
198
gridBagConstraints.gridx = 0;
199
gridBagConstraints.gridy = 3;
200
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
201
jPanel1.add(moveDownButton, gridBagConstraints);
203
gridBagConstraints = new java.awt.GridBagConstraints();
204
gridBagConstraints.gridx = 1;
205
gridBagConstraints.gridy = 2;
206
getContentPane().add(jPanel1, gridBagConstraints);
208
jPanel3.setLayout(new java.awt.GridBagLayout());
210
jPanel3.setMinimumSize(new java.awt.Dimension(400, 80));
211
nameLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
212
nameLabel.setText("Channel Set Name:");
213
gridBagConstraints = new java.awt.GridBagConstraints();
214
gridBagConstraints.gridx = 0;
215
gridBagConstraints.gridy = 0;
216
gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
217
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
218
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
219
jPanel3.add(nameLabel, gridBagConstraints);
221
nameTextField.setMinimumSize(new java.awt.Dimension(200, 20));
222
nameTextField.setPreferredSize(new java.awt.Dimension(200, 20));
223
gridBagConstraints = new java.awt.GridBagConstraints();
224
gridBagConstraints.gridx = 1;
225
gridBagConstraints.gridy = 0;
226
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
227
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
228
jPanel3.add(nameTextField, gridBagConstraints);
230
gridBagConstraints = new java.awt.GridBagConstraints();
231
gridBagConstraints.gridx = 0;
232
gridBagConstraints.gridy = 0;
233
gridBagConstraints.gridwidth = 3;
234
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
235
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
236
gridBagConstraints.weightx = 0.1;
237
gridBagConstraints.weighty = 0.1;
238
getContentPane().add(jPanel3, gridBagConstraints);
240
jPanel4.setLayout(new java.awt.GridBagLayout());
242
saveButton.setText("OK");
243
saveButton.setMaximumSize(new java.awt.Dimension(83, 26));
244
saveButton.setMinimumSize(new java.awt.Dimension(83, 26));
245
saveButton.setPreferredSize(new java.awt.Dimension(83, 26));
246
saveButton.addActionListener(
247
new java.awt.event.ActionListener() {
248
public void actionPerformed(java.awt.event.ActionEvent evt) {
249
saveButtonActionPerformed(evt);
253
gridBagConstraints = new java.awt.GridBagConstraints();
254
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
255
jPanel4.add(saveButton, gridBagConstraints);
257
cancelButton.setText("Cancel");
258
cancelButton.setMaximumSize(new java.awt.Dimension(83, 26));
259
cancelButton.setMinimumSize(new java.awt.Dimension(83, 26));
260
cancelButton.setPreferredSize(new java.awt.Dimension(83, 26));
261
cancelButton.addActionListener(
262
new java.awt.event.ActionListener() {
263
public void actionPerformed(java.awt.event.ActionEvent evt) {
264
cancelButtonActionPerformed(evt);
268
jPanel4.add(cancelButton, new java.awt.GridBagConstraints());
270
gridBagConstraints = new java.awt.GridBagConstraints();
271
gridBagConstraints.gridx = 0;
272
gridBagConstraints.gridy = 3;
273
gridBagConstraints.gridwidth = 3;
274
gridBagConstraints.insets = new java.awt.Insets(10, 5, 10, 10);
275
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
276
getContentPane().add(jPanel4, gridBagConstraints);
278
jLabel1.setText("Available channels:");
279
gridBagConstraints = new java.awt.GridBagConstraints();
280
gridBagConstraints.gridx = 0;
281
gridBagConstraints.gridy = 1;
282
getContentPane().add(jLabel1, gridBagConstraints);
284
jLabel2.setText("This set:");
285
gridBagConstraints = new java.awt.GridBagConstraints();
286
gridBagConstraints.gridx = 2;
287
gridBagConstraints.gridy = 1;
288
getContentPane().add(jLabel2, gridBagConstraints);
290
getRootPane().setDefaultButton( saveButton );
294
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit()
296
setSize(new java.awt.Dimension(400, 300));
297
setLocation((screenSize.width - 400) / 2,
298
(screenSize.height - 300) / 2);
304
* Description of the Method
306
*@param evt Description of the Parameter
308
private void channelsetListChanged(javax.swing.event.ListSelectionEvent evt) {
309
checkUpAndDownButtons();
314
* Description of the Method
316
*@param evt Description of the Parameter
318
private void downButtonActionPerformed(java.awt.event.ActionEvent evt) {
320
int[] selected = channelsetJList.getSelectedIndices();
321
for (int i = 0; i < selected.length; i++) {
322
int oldIndex = selected[i];
323
if (oldIndex < csetModel.getSize() - 1) {
324
int newIndex = oldIndex + 1;
325
csetModel.insertElementAt(csetModel.remove(oldIndex), newIndex);
326
channelsetJList.setSelectedIndex(newIndex);
329
checkUpAndDownButtons();
335
* Description of the Method
337
*@param evt Description of the Parameter
339
private void upButtonAction(java.awt.event.ActionEvent evt) {
341
int[] selected = channelsetJList.getSelectedIndices();
342
for (int i = 0; i < selected.length; i++) {
343
int oldIndex = selected[i];
345
int newIndex = oldIndex - 1;
346
csetModel.insertElementAt(csetModel.remove(oldIndex), newIndex);
347
channelsetJList.setSelectedIndex(newIndex);
350
checkUpAndDownButtons();
355
* Description of the Method
357
*@param evt Description of the Parameter
359
private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {
361
int[] selected = channelsetJList.getSelectedIndices();
363
for (int i = 0; i < selected.length; i++) {
364
//Object o=allModel.remove(selected[i]);
365
allModel.addElement(csetModel.elementAt(selected[i]));
368
for (int j = selected.length - 1; j >= 0; j--) {
369
Object o = csetModel.remove(selected[j]);
371
checkUpAndDownButtons();
376
* Adds a feature to the ButtonActionPerformed attribute of the
377
* ChannelSetEditor object
379
*@param evt The feature to be added to the ButtonActionPerformed
382
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
384
//take selected item in source and move it into sink
385
int[] selected = allchannelsJList.getSelectedIndices();
386
for (int i = 0; i < selected.length; i++) {
387
//Object o=allModel.remove(selected[i]);
388
csetModel.addElement(allModel.elementAt(selected[i]));
391
for (int j = selected.length - 1; j >= 0; j--) {
392
Object o = allModel.remove(selected[j]);
394
checkUpAndDownButtons();
400
* Description of the Method
402
*@param evt Description of the Parameter
404
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {
410
* Description of the Method
412
*@param evt Description of the Parameter
414
private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {
421
* Description of the Method
423
private void checkUpAndDownButtons() {
424
int[] selected = channelsetJList.getSelectedIndices();
425
boolean enableUp = false;
426
boolean enableDown = false;
427
int max = csetModel.getSize() - 1;
428
for (int i = 0; i < selected.length; i++) {
429
int index = selected[i];
436
if (enableUp && enableDown) {
440
moveUpButton.setEnabled(enableUp);
441
moveDownButton.setEnabled(enableDown);
446
* Description of the Method
448
private void updateChannelSet() {
449
channelset.setChannelSetName(this.nameTextField.getText());
450
// get selected items
451
Object[] chosen = csetModel.toArray();
452
Vector chnames = this.loader.getChannelNames();
453
Vector chids = this.loader.getChannelIDs();
454
this.channelset.clearChannels();
455
for (int i = 0; i < chosen.length; i++) {
456
String chname = (String) chosen[i];
457
int ind = chnames.indexOf(chname);
459
this.channelset.addChannelName((String) chids.elementAt(ind),
468
private javax.swing.JPanel jPanel4;
469
private javax.swing.JScrollPane jScrollPane1;
470
private javax.swing.JLabel jLabel1;
471
private javax.swing.JList channelsetJList;
472
private javax.swing.JList allchannelsJList;
473
private javax.swing.JPanel jPanel3;
474
private javax.swing.JLabel jLabel2;
475
private javax.swing.JLabel nameLabel;
476
private javax.swing.JScrollPane jScrollPane2;
477
private javax.swing.JButton cancelButton;
478
private javax.swing.JButton saveButton;
479
private javax.swing.JPanel jPanel1;
480
private javax.swing.JButton moveDownButton;
481
private javax.swing.JButton moveUpButton;
482
private javax.swing.JTextField nameTextField;
483
private javax.swing.JButton addButton;
484
private javax.swing.JButton removeButton;
486
private ViewerFrameXMLTVLoader loader;
487
private ChannelSet channelset;
489
* internal list models for the two JLists
491
private DefaultListModel allModel, csetModel;