00001 package Sct.gui;
00002
00003 import java.awt.event.ActionEvent;
00004 import java.awt.event.ActionListener;
00005 import java.awt.event.WindowAdapter;
00006 import java.awt.event.WindowEvent;
00007
00008 import javax.swing.JButton;
00009 import javax.swing.JDialog;
00010 import javax.swing.JLabel;
00011 import javax.swing.JPanel;
00012 import javax.swing.JTextField;
00013 import javax.swing.Box;
00014
00015
00019 public class MultiSelectionDialog extends JDialog {
00020 String selections[];
00021 int enabled[];
00022
00023 boolean valid;
00024
00025 public static String[] showDialog(java.awt.Component owner,
00026 String title, String[] selections, int[] enabled) {
00027 MultiSelectionDialog dia = new MultiSelectionDialog(owner, title, selections, enabled);
00028 dia.pack();
00029 dia.setVisible(true);
00030 return dia.getSelection();
00031 }
00032
00039 public MultiSelectionDialog(java.awt.Component owner, String title, String[] ss, int[] enabled) {
00040 super(javax.swing.JOptionPane.getFrameForComponent(owner), title, true);
00041
00042 selections = ss;
00043 this.enabled = enabled;
00044
00045 valid = true;
00046
00047 initComponents();
00048 modifyComponents();
00049 }
00050
00056 private void initComponents() {
00057 jPanel2 = new javax.swing.JPanel();
00058 jPanel3 = new javax.swing.JPanel();
00059 jLabel1 = new javax.swing.JLabel();
00060 jScrollPane1 = new javax.swing.JScrollPane();
00061 multiList = new javax.swing.JList();
00062 jPanel1 = new javax.swing.JPanel();
00063 jButton1 = new javax.swing.JButton();
00064 jButton2 = new javax.swing.JButton();
00065
00066 jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
00067
00068 jPanel3.setLayout(new java.awt.BorderLayout());
00069
00070 jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
00071 jLabel1.setLabelFor(multiList);
00072 jLabel1.setText("jLabel1");
00073 jPanel3.add(jLabel1, java.awt.BorderLayout.WEST);
00074
00075 jPanel2.add(jPanel3);
00076
00077 jScrollPane1.setViewportView(multiList);
00078
00079 jPanel2.add(jScrollPane1);
00080
00081 jButton1.setText("OK");
00082 jButton1.addActionListener(new java.awt.event.ActionListener() {
00083 public void actionPerformed(java.awt.event.ActionEvent evt) {
00084 jButton1ActionPerformed(evt);
00085 }
00086 });
00087
00088 jPanel1.add(jButton1);
00089
00090 jButton2.setText("Cancel");
00091 jButton2.addActionListener(new java.awt.event.ActionListener() {
00092 public void actionPerformed(java.awt.event.ActionEvent evt) {
00093 jButton2ActionPerformed(evt);
00094 }
00095 });
00096
00097 jPanel1.add(jButton2);
00098
00099 jPanel2.add(jPanel1);
00100
00101 getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
00102
00103 }
00104
00105 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
00106 valid = false;
00107 dispose();
00108 }
00109
00110 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
00111 dispose();
00112 }
00113
00117 private void modifyComponents() {
00118 multiList.setListData(selections);
00119 multiList.setSelectedIndices(enabled);
00120
00121 jLabel1.setText("Make selections");
00122 }
00123
00124 String [] getSelection() {
00125 if(valid) {
00126 Object [] vals = multiList.getSelectedValues();
00127 String [] result = new String[vals.length];
00128 for(int i = 0; i < vals.length; i++) {
00129 result[i] = vals[i].toString();
00130 }
00131 return result;
00132 } else {
00133 return null;
00134 }
00135 }
00136
00137
00138 private javax.swing.JButton jButton1;
00139 private javax.swing.JButton jButton2;
00140 private javax.swing.JLabel jLabel1;
00141 private javax.swing.JPanel jPanel1;
00142 private javax.swing.JPanel jPanel2;
00143 private javax.swing.JPanel jPanel3;
00144 private javax.swing.JScrollPane jScrollPane1;
00145 private javax.swing.JList multiList;
00146
00147
00148
00149 public static class Test {
00150 public static void main(String args[]) {
00151 String objs [] = {"Hello", "World", "1", "2", "3"};
00152
00153 int sels[] = {0, 1, -1};
00154
00155 String selected [] = MultiSelectionDialog.showDialog(null, "Test Selection", objs, sels);
00156 if(selected == null) {
00157 System.out.println("Dialog cancelled");
00158 } else {
00159 for(int i = 0; i < selected.length; i++) {
00160 System.out.println(i + ": " + selected[i]);
00161 }
00162 }
00163
00164 System.exit(0);
00165 }
00166 }
00167 }