Changeset 3100
- Timestamp:
- 07/16/08 15:26:17 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
PP/trunk/jungle/src/org/trinet/jiggle/PhaseDialog.java
r1618 r3100 15 15 public class PhaseDialog extends JDialog { 16 16 17 WFPanel wfp; 18 19 Phase ph; 20 MasterView mv; 21 22 /** support old style weight */ 23 int wt; 24 25 String phaseChoice[] = { "P", "S", "Pn", "Sn"}; 26 27 JComboBox phaseCombo; 28 SolutionListComboBox solListCombo; // to select association 29 30 RadioListener radioListener = new RadioListener(); // all buttons will register same instance 31 32 /** 33 * Need Phase, MasterView and WFView to completely handle all the bookkeeping for 34 * changing, adding, deleting phases 35 */ 36 public PhaseDialog(Frame frame, Component comp, WFPanel wfp, MasterView mv, Phase inPh) { 37 38 super (frame, "Phase Description", true); 39 40 //Set our location (0,0) relative to the given component 41 //setLocationRelativeTo(comp); 42 43 this.wfp = wfp; 44 this.ph = inPh; 45 this.mv = mv; 46 47 // Build the dialog box 48 Box box = new Box(BoxLayout.Y_AXIS); 49 50 phaseCombo = makeComboBox(phaseChoice); 51 phaseCombo.setEditable(true); 52 53 JPanel iePanel = createIePanel(); 54 JPanel fmPanel = createFmPanel(); 55 JPanel wtPanel = createWtPanel(); 56 57 JPanel labelPanel = new JPanel(); 58 labelPanel.setLayout(new GridLayout(0, 1)); 59 labelPanel.add(new JLabel("Phase: ", JLabel.RIGHT) ); 60 labelPanel.add(new JLabel("Onset: ", JLabel.RIGHT) ); 61 labelPanel.add(new JLabel("1st Mo: ", JLabel.RIGHT) ); 62 labelPanel.add(new JLabel("Weight: ", JLabel.RIGHT) ); 63 64 JPanel chooserPanel = new JPanel(); 65 chooserPanel.setLayout(new GridLayout(0, 1)); 66 67 chooserPanel.add(phaseCombo); 68 chooserPanel.add(iePanel); 69 chooserPanel.add(fmPanel); 70 chooserPanel.add(wtPanel); 71 72 JPanel descPanel = new JPanel(); 73 descPanel.setLayout(new BoxLayout(descPanel, BoxLayout.X_AXIS)); 74 descPanel.setBorder( new TitledBorder("Phase Description") ); 75 descPanel.add(labelPanel); 76 descPanel.add(chooserPanel); 77 78 solListCombo = new SolutionListComboBox (mv.solList); 79 80 JPanel assocPanel = new JPanel(); 81 assocPanel.setBorder( new TitledBorder("Association") ); 82 assocPanel.add(solListCombo); 83 84 // Set selected Solution in the comboBox to the one in the Masterview's model 85 solListCombo.addActionListener(new SolutionComboHandler() ); 86 87 // set default values to match current phase 88 phaseCombo.setSelectedItem(ph.description.iphase); 89 // useInLocation // aww 06/22/2006 90 JPanel rejectPanel = new JPanel(); // aww 06/22/2006 91 final JCheckBox wtCheckBox = new JCheckBox("Reject from location"); 92 wtCheckBox.setSelected(ph.isReject()); 93 wtCheckBox.addActionListener(new ActionListener() { 94 public void actionPerformed(ActionEvent e) { 95 ph.setReject(wtCheckBox.isSelected()); 17 WFPanel wfp = null; 18 19 Phase ph = null; 20 MasterView mv = null; 21 22 int wt = 0; 23 24 String phaseChoice[] = { "P", "S", "Pn", "Sn", "Pg"}; 25 26 JComboBox phaseCombo = null; 27 SolutionListComboBox solListCombo = null; // to select association 28 29 RadioListener radioListener = new RadioListener(); // all buttons will register same instance 30 31 /** 32 * Need Phase, MasterView and WFView to completely handle all the bookkeeping for changing, adding, deleting phases 33 */ 34 public PhaseDialog(Frame frame, Component comp, WFPanel wfp, MasterView mv, Phase inPh) { 35 36 super(frame, "Phase Description", true); 37 38 //Set our location (0,0) relative to the given component 39 //setLocationRelativeTo(comp); 40 41 this.wfp = wfp; 42 this.ph = inPh; 43 this.mv = mv; 44 45 // the main panel 46 JPanel mainPanel = new JPanel(); // the main dialog panel 47 mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); 48 mainPanel.add(createDescPanel()); 49 mainPanel.add(createAssocPanel()); 50 mainPanel.add(createExpressPanel()); 51 mainPanel.add(createRejectPanel()); // aww 06/22/2006 52 mainPanel.add(createButtonPanel()); 53 54 getContentPane().add(mainPanel); 55 pack(); 56 show(); 57 } 58 59 JComponent createAssocPanel() { 60 JPanel assocPanel = new JPanel(); 61 assocPanel.setBorder( new TitledBorder("Association") ); 62 solListCombo = new SolutionListComboBox(mv.solList); 63 // Set selected Solution in the comboBox to the one in the Masterview's model 64 solListCombo.addActionListener(new SolutionComboHandler()); 65 assocPanel.add(solListCombo); 66 return assocPanel; 67 } 68 69 JComponent createRejectPanel() { 70 Box rejectPanel = Box.createHorizontalBox(); 71 final JCheckBox wtCheckBox = new JCheckBox("Reject from location"); 72 wtCheckBox.setSelected(ph.isReject()); 73 wtCheckBox.addActionListener(new ActionListener() { 74 public void actionPerformed(ActionEvent e) { 75 ph.setReject(wtCheckBox.isSelected()); 76 } 77 }); 78 wtCheckBox.setHorizontalTextPosition(SwingConstants.LEADING); 79 rejectPanel.add(wtCheckBox); 80 return rejectPanel; 81 } 82 83 JComponent createDescPanel() { 84 Box descPanel = Box.createVerticalBox(); 85 descPanel.setBorder( new TitledBorder("Phase Description") ); 86 descPanel.add(createPhPanel()); 87 descPanel.add(createIePanel()); 88 descPanel.add(createFmPanel()); 89 descPanel.add(createWtPanel()); 90 return descPanel; 91 } 92 93 JComponent createButtonPanel() { 94 // define the buttons: [OK] [Delete] [Cancel]? 95 JPanel buttonPanel = new JPanel(); 96 JButton okButton = new JButton("OK"); 97 okButton.addActionListener(new ActionListener() { 98 public void actionPerformed(ActionEvent e) { 99 OKPressed(); 100 } 101 }); 102 buttonPanel.add( okButton ); 103 JButton cancelButton = new JButton("Cancel"); 104 cancelButton.addActionListener(new ActionListener() { 105 public void actionPerformed(ActionEvent e) { 106 CancelPressed(); 107 } 108 }); 109 buttonPanel.add( cancelButton ); 110 return buttonPanel; 111 } 112 113 JComponent createPhPanel() { 114 JPanel panel = new JPanel(new GridLayout(1,2)); // Box.createHorizontalBox(); 115 panel.add(new JLabel("Phase ", JLabel.LEFT)); 116 117 phaseCombo = makeComboBox(phaseChoice); 118 phaseCombo.setEditable(true); 119 phaseCombo.setToolTipText("Only phase type, don't type a 1st motion, qual, or wt here"); 120 phaseCombo.setPreferredSize(new Dimension(50,20)); 121 phaseCombo.setMaximumSize(new Dimension(50,20)); 122 // set default values to match current phase 123 phaseCombo.setSelectedItem(ph.description.iphase); 124 Box box = Box.createHorizontalBox(); 125 box.add(phaseCombo); 126 box.add(Box.createHorizontalGlue()); 127 panel.add(box); 128 return panel; 129 } 130 131 JComponent createIePanel() { 132 JRadioButton button1 = makeButton("i", 'i'); 133 JRadioButton button2 = makeButton("e", 'e'); 134 JRadioButton button3 = makeButton("w", 'w'); 135 136 // Group the radio buttons. 137 ButtonGroup buttonGroup = new ButtonGroup(); 138 buttonGroup.add(button1); 139 buttonGroup.add(button2); 140 buttonGroup.add(button3); 141 142 if (ph.description.ei == "e") button2.setSelected(true); 143 else if (ph.description.ei == "w") button3.setSelected(true); 144 else button1.setSelected(true); // 'i' default 145 146 JPanel panel = new JPanel(new GridLayout(1,2)); 147 panel.add(new JLabel("Onset ", JLabel.LEFT) ); 148 Box box = Box.createHorizontalBox(); 149 box.add(button1); 150 box.add(button2); 151 box.add(button3); 152 panel.add(box); 153 return panel; 154 } 155 156 JComponent createFmPanel() { 157 JRadioButton button1 = makeButton("c", 'c'); 158 JRadioButton button2 = makeButton("d", 'd'); 159 JRadioButton button3 = makeButton("u", 'u'); 160 JRadioButton button4 = makeButton("r", 'r'); 161 JRadioButton button5 = makeButton(".", '.'); 162 163 // Group the radio buttons. 164 ButtonGroup buttonGroup = new ButtonGroup(); 165 buttonGroup.add(button1); 166 buttonGroup.add(button2); 167 buttonGroup.add(button3); 168 buttonGroup.add(button4); 169 buttonGroup.add(button5); 170 171 JPanel panel = new JPanel(new GridLayout(1,2)); 172 panel.add(new JLabel("1st Mo ", JLabel.LEFT) ); 173 174 Box box = Box.createHorizontalBox(); 175 box.add(button1); 176 box.add(button2); 177 box.add(button3); 178 box.add(button4); 179 box.add(button5); 180 panel.add(box); 181 182 button1.setSelected(true); // 'c' default 183 if (ph.description.fm.equals("d.")) button2.setSelected(true); 184 else if (ph.description.fm.equals("u.")) button3.setSelected(true); 185 else if (ph.description.fm.equals("r.")) button4.setSelected(true); 186 else if (ph.description.fm.equals("..")) button5.setSelected(true); 187 188 return panel; 189 190 } 191 192 JComponent createWtPanel() { 193 JRadioButton button0 = makeButton("0", '0'); 194 JRadioButton button1 = makeButton("1", '1'); 195 JRadioButton button2 = makeButton("2", '2'); 196 JRadioButton button3 = makeButton("3", '3'); 197 JRadioButton button4 = makeButton("4", '4'); 198 199 // Group the radio buttons. 200 ButtonGroup buttonGroup = new ButtonGroup(); 201 buttonGroup.add(button0); 202 buttonGroup.add(button1); 203 buttonGroup.add(button2); 204 buttonGroup.add(button3); 205 buttonGroup.add(button4); 206 207 JPanel panel = new JPanel(new GridLayout(1,2)); 208 panel.add(new JLabel("Weight ", JLabel.LEFT) ); 209 210 Box box = Box.createHorizontalBox(); 211 box.add(button0); 212 box.add(button1); 213 box.add(button2); 214 box.add(button3); 215 box.add(button4); 216 panel.add(box); 217 218 // convert 0->1 quality to 0-4 weight 219 int wt = ph.description.getWeight(); 220 switch (wt) { 221 case 0: 222 button0.setSelected(true); // default 223 break; 224 case 1: 225 button1.setSelected(true); 226 break; 227 case 2: 228 button2.setSelected(true); 229 break; 230 case 3: 231 button3.setSelected(true); 232 break; 233 case 4: 234 button4.setSelected(true); 235 break; 236 default: 237 button0.setSelected(true); // default 96 238 } 97 }); 98 rejectPanel.add(wtCheckBox); 99 100 // The express button Panel 101 JPanel expressPanel = createExpressPanel(); 102 103 // define the buttons: [OK] [Delete] [Cancel]? 104 JPanel buttonPanel = new JPanel(); 105 106 JButton okButton = new JButton("OK"); 107 okButton.addActionListener(new ActionListener() { 108 public void actionPerformed(ActionEvent e) { 109 OKPressed(); 110 } 111 }); 112 buttonPanel.add( okButton ); 113 114 JButton cancelButton = new JButton("Cancel"); 115 cancelButton.addActionListener(new ActionListener() { 116 public void actionPerformed(ActionEvent e) { 117 CancelPressed(); 118 } 119 }); 120 buttonPanel.add( cancelButton ); 121 /* Note Delete meaningless here since phase is "new" so won't be in list -aww 122 JButton deleteButton = new JButton("Delete"); 123 deleteButton.addActionListener(new ActionListener() { 124 public void actionPerformed(ActionEvent e) { 125 DeletePressed(); 126 } 127 }); 128 buttonPanel.add( deleteButton ); 129 */ 130 131 // the main panel 132 JPanel mainPanel = new JPanel(); // the main dialog panel 133 mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); 134 135 mainPanel.add(descPanel); 136 mainPanel.add(assocPanel); 137 mainPanel.add(expressPanel); 138 mainPanel.add(rejectPanel); // aww 06/22/2006 139 mainPanel.add(buttonPanel); 140 141 getContentPane().add(mainPanel); 142 143 pack(); 144 show(); 145 } 146 147 /** 148 * create I/E radio button group 149 */ 150 JPanel createIePanel() { 151 JRadioButton button1 = makeButton("i", 'i'); 152 JRadioButton button2 = makeButton("e", 'e'); 153 JRadioButton button3 = makeButton("w", 'w'); 154 155 // Group the radio buttons. 156 ButtonGroup buttonGroup = new ButtonGroup(); 157 buttonGroup.add(button1); 158 buttonGroup.add(button2); 159 buttonGroup.add(button3); 160 161 if (ph.description.ei == "e") button2.setSelected(true); 162 else if (ph.description.ei == "w") button3.setSelected(true); 163 else button1.setSelected(true); // 'i' default 164 165 JPanel panel = new JPanel(); 166 panel.add(button1); 167 panel.add(button2); 168 panel.add(button3); 169 170 return panel; 171 172 } 173 174 /** 175 * create First Motion radio button group 176 */ 177 JPanel createFmPanel() { 178 JRadioButton button1 = makeButton("c", 'c'); 179 JRadioButton button2 = makeButton("d", 'd'); 180 JRadioButton button3 = makeButton("u", 'u'); 181 JRadioButton button4 = makeButton("r", 'r'); 182 JRadioButton button5 = makeButton(".", '.'); 183 184 // Group the radio buttons. 185 ButtonGroup buttonGroup = new ButtonGroup(); 186 buttonGroup.add(button1); 187 buttonGroup.add(button2); 188 buttonGroup.add(button3); 189 buttonGroup.add(button4); 190 buttonGroup.add(button5); 191 192 JPanel panel = new JPanel(); 193 panel.add(button1); 194 panel.add(button2); 195 panel.add(button3); 196 panel.add(button4); 197 panel.add(button5); 198 199 button1.setSelected(true); // 'c' default 200 if (ph.description.fm.equals("d.")) button2.setSelected(true); 201 if (ph.description.fm.equals("u.")) button3.setSelected(true); 202 if (ph.description.fm.equals("r.")) button4.setSelected(true); 203 if (ph.description.fm.equals("..")) button5.setSelected(true); 204 205 return panel; 206 207 } 208 209 /** 210 * create (old style) Weight radio button group 211 */ 212 JPanel createWtPanel() { 213 JRadioButton button0 = makeButton("0", '0'); 214 JRadioButton button1 = makeButton("1", '1'); 215 JRadioButton button2 = makeButton("2", '2'); 216 JRadioButton button3 = makeButton("3", '3'); 217 JRadioButton button4 = makeButton("4", '4'); 218 219 // Group the radio buttons. 220 ButtonGroup buttonGroup = new ButtonGroup(); 221 buttonGroup.add(button0); 222 buttonGroup.add(button1); 223 buttonGroup.add(button2); 224 buttonGroup.add(button3); 225 buttonGroup.add(button4); 226 227 JPanel panel = new JPanel(); 228 panel.add(button0); 229 panel.add(button1); 230 panel.add(button2); 231 panel.add(button3); 232 panel.add(button4); 233 234 // convert 0->1 quality to 0-4 weight 235 int wt = ph.description.getWeight(); 236 if (wt == 0) button0.setSelected(true); // default 237 if (wt == 1) button1.setSelected(true); 238 if (wt == 2) button2.setSelected(true); 239 if (wt == 3) button3.setSelected(true); 240 if (wt == 4) button4.setSelected(true); 241 242 return panel; 243 } 244 245 /** 246 * Make the subPanel that has one-touch express buttons like 'IP0' ... 247 */ 248 JPanel createExpressPanel() { 239 240 return panel; 241 } 242 243 /** 244 * Make the subPanel that has one-touch express buttons like 'IP0' ... 245 */ 246 JComponent createExpressPanel() { 249 247 JPanel pPanel = new JPanel(); 250 248 JPanel sPanel = new JPanel(); … … 253 251 sPanel.setLayout(new BoxLayout(sPanel, BoxLayout.X_AXIS)); 254 252 255 addExpressButton (new JButton("iP0"), pPanel);256 addExpressButton (new JButton("iP1"), pPanel);257 addExpressButton (new JButton("eP2"), pPanel);258 addExpressButton (new JButton("eP3"), pPanel);259 addExpressButton (new JButton("eP4"), pPanel);260 261 addExpressButton (new JButton("iS0"), sPanel);262 addExpressButton (new JButton("iS1"), sPanel);263 addExpressButton (new JButton("eS2"), sPanel);264 addExpressButton (new JButton("eS3"), sPanel);265 addExpressButton (new JButton("eS4"), sPanel);253 addExpressButton(new JButton("iP0"), pPanel); 254 addExpressButton(new JButton("iP1"), pPanel); 255 addExpressButton(new JButton("eP2"), pPanel); 256 addExpressButton(new JButton("eP3"), pPanel); 257 addExpressButton(new JButton("eP4"), pPanel); 258 259 addExpressButton(new JButton("iS0"), sPanel); 260 addExpressButton(new JButton("iS1"), sPanel); 261 addExpressButton(new JButton("eS2"), sPanel); 262 addExpressButton(new JButton("eS3"), sPanel); 263 addExpressButton(new JButton("eS4"), sPanel); 266 264 267 265 JPanel expPanel = new JPanel(); … … 276 274 } 277 275 278 /*----------------------------------------------------------------- 279 * method to stream line adding of buttons 280 */ 281 void addExpressButton (JButton btn, JPanel panel) { 282 btn.addActionListener (new ExpressButtonHandler() ); 283 panel.add(btn); 284 } 285 286 287 // Handle express buttons 276 void addExpressButton(JButton btn, JPanel panel) { 277 btn.addActionListener(new ExpressButtonHandler() ); 278 panel.add(btn); 279 } 280 281 288 282 class ExpressButtonHandler implements ActionListener { 289 283 public void actionPerformed (ActionEvent evt) { … … 296 290 int weight = 4; 297 291 if (wt != null) { 298 weight= Integer.valueOf( wt ).intValue();292 weight = Integer.valueOf( wt ).intValue(); 299 293 } 300 294 String fm = ph.description.fm; … … 317 311 318 312 319 /** 320 * Generic RadioButton maker. Just simplifies the code a bit 321 */ 322 JRadioButton makeButton (String cmd, char mnem) { 323 JRadioButton rb = new JRadioButton(cmd); 324 rb.setMnemonic(mnem); 325 rb.setActionCommand(cmd); 326 rb.addActionListener(radioListener); 327 return rb; 328 } 329 /** 330 * Simplify creation of JComboBoxes 331 */ 313 JRadioButton makeButton(String cmd, char mnem) { 314 JRadioButton rb = new JRadioButton(cmd); 315 rb.setMnemonic(mnem); 316 rb.setActionCommand(cmd); 317 rb.addActionListener(radioListener); 318 return rb; 319 } 320 332 321 public JComboBox makeComboBox(String[] choiceList) { 333 JComboBox cb = new JComboBox(); 334 335 for (int i = 0; i< choiceList.length; i++) 336 { 337 cb.addItem(choiceList[i]); 338 } 339 340 cb.setEditable(true); // allow freeform user input 341 cb.setSelectedItem(phaseChoice[0]); // default selection 342 cb.setMaximumRowCount(4); // items displayed in scrolling window 343 344 cb.setEditable(false); 345 346 Dimension size = cb.getSize(); 347 348 cb.setSize(20, size.height); 349 350 return cb; 351 } 352 353 // BUTTON ACTIONS BELOW 354 /* Action to take when [DELETE] is pressed * Close dialog, delete the selected phase // 355 public void DeletePressed() { 356 // Delete it in Solution's list so listeners know 357 //mv.getSelectedSolution().phaseList.delete(ph); // aww 04/14/2005 358 mv.getSelectedSolution().erase(ph); 322 JComboBox cb = new JComboBox(); 323 324 for (int i = 0; i< choiceList.length; i++) { 325 cb.addItem(choiceList[i]); 326 } 327 328 cb.setEditable(true); // allow freeform user input 329 cb.setSelectedItem(phaseChoice[0]); // default selection 330 cb.setMaximumRowCount(4); // items displayed in scrolling window 331 332 cb.setEditable(false); 333 334 Dimension size = cb.getSize(); 335 336 cb.setSize(20, size.height); 337 338 return cb; 339 } 340 341 public void CancelPressed() { 359 342 this.setVisible(false); 360 343 } 361 */ 362 /** 363 * Action to take when [CANCEL] is pressed. Final disposition is made by the 364 * caller (MultiWFPanel) A new pick will never be added to any phaseList and so 365 * will be truely deleted. An old pick will revert back to its previous values 366 * and time. */ 367 public void CancelPressed() { 368 // TODO 369 this.setVisible(false); 370 } 371 372 /** 373 * Action to take when [OK] is pressed 374 * Close dialog, make changes 375 */ 344 376 345 public void OKPressed() { 377 346 // time is already set by the caller … … 390 359 } 391 360 392 /** 393 * All buttons will register one instance of this listener. The ActionCommand, 394 * 'cmdStr', of the button is used to tell what to do. */ 395 396 class RadioListener implements ActionListener { 397 398 public void actionPerformed(ActionEvent e) { // source is a radio button 361 class RadioListener implements ActionListener { 362 363 public void actionPerformed(ActionEvent e) { // source is a radio button 399 364 400 if (e.getActionCommand().equals("i")) ph.description.ei = "i"; 401 if (e.getActionCommand().equals("e")) ph.description.ei = "e"; 402 if (e.getActionCommand().equals("w")) ph.description.ei = "w"; 403 404 if (e.getActionCommand().equals("c")) ph.description.fm = "c."; 405 if (e.getActionCommand().equals("d")) ph.description.fm = "d."; 406 if (e.getActionCommand().equals("u")) ph.description.fm = "u."; 407 if (e.getActionCommand().equals("r")) ph.description.fm = "r."; 408 if (e.getActionCommand().equals(".")) ph.description.fm = ".."; 409 410 if (e.getActionCommand().equals("0")) wt = 0; 411 if (e.getActionCommand().equals("1")) wt = 1; 412 if (e.getActionCommand().equals("2")) wt = 2; 413 if (e.getActionCommand().equals("3")) wt = 3; 414 if (e.getActionCommand().equals("4")) wt = 4; 415 416 417 // force quality cutoff test here -aww 11/03/05 418 ph.description.setQuality(PhaseDescription.toQuality(wt), true); // convert to "quality" 419 420 } 365 if (e.getActionCommand().equals("i")) ph.description.ei = "i"; 366 else if (e.getActionCommand().equals("e")) ph.description.ei = "e"; 367 else if (e.getActionCommand().equals("w")) ph.description.ei = "w"; 368 369 else if (e.getActionCommand().equals("c")) ph.description.fm = "c."; 370 else if (e.getActionCommand().equals("d")) ph.description.fm = "d."; 371 else if (e.getActionCommand().equals("u")) ph.description.fm = "u."; 372 else if (e.getActionCommand().equals("r")) ph.description.fm = "r."; 373 else if (e.getActionCommand().equals(".")) ph.description.fm = ".."; 374 375 else if (e.getActionCommand().equals("0")) wt = 0; 376 else if (e.getActionCommand().equals("1")) wt = 1; 377 else if (e.getActionCommand().equals("2")) wt = 2; 378 else if (e.getActionCommand().equals("3")) wt = 3; 379 else if (e.getActionCommand().equals("4")) wt = 4; 380 381 // force quality cutoff test here -aww 11/03/05 382 ph.description.setQuality(PhaseDescription.toQuality(wt), true); // convert to "quality" 383 421 384 } 422 423 424 /** Handle changes to the selected Solution that are made in a SolutionCombobox. 425 */ 385 } 386 387 /** Handle changes to the selected Solution that are made in a SolutionCombobox. */ 426 388 class SolutionComboHandler implements ActionListener { 427 389 // this is the action taken when the selectedOrigin is changed … … 432 394 } 433 395 434 } // end of class435 396 } 397
Note: See TracChangeset
for help on using the changeset viewer.
