]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/ModuleVariables.java
1335694fb8273d855ba7bff1c72b1e6f986fb88b
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / ModuleVariables.java
1 /** @file
2
3 The file is used to create, update Variable of MSA/MBD file
4
5 Copyright (c) 2006, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 **/
15
16 package org.tianocore.frameworkwizard.module.ui;
17
18 import java.awt.event.ActionEvent;
19 import java.awt.event.ComponentEvent;
20 import java.awt.event.ItemEvent;
21 import java.util.Vector;
22
23 import javax.swing.JButton;
24 import javax.swing.JComboBox;
25 import javax.swing.JLabel;
26 import javax.swing.JPanel;
27 import javax.swing.JScrollPane;
28 import javax.swing.JTextArea;
29 import javax.swing.JTextField;
30
31 import org.tianocore.VariableUsage;
32 import org.tianocore.VariablesDocument;
33 import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;
34 import org.tianocore.VariablesDocument.Variables;
35 import org.tianocore.VariablesDocument.Variables.Variable;
36 import org.tianocore.frameworkwizard.common.DataType;
37 import org.tianocore.frameworkwizard.common.DataValidation;
38 import org.tianocore.frameworkwizard.common.EnumerationData;
39 import org.tianocore.frameworkwizard.common.Log;
40 import org.tianocore.frameworkwizard.common.Tools;
41 import org.tianocore.frameworkwizard.common.Identifications.OpeningModuleType;
42 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;
43 import org.tianocore.frameworkwizard.common.ui.StarLabel;
44 import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;
45 import org.tianocore.frameworkwizard.module.Identifications.Variables.VariablesIdentification;
46 import org.tianocore.frameworkwizard.module.Identifications.Variables.VariablesVector;
47
48 /**
49 The class is used to create, update Variable of MSA/MBD file
50 It extends IInternalFrame
51
52 **/
53 public class ModuleVariables extends IInternalFrame {
54
55 ///
56 /// Define class Serial Version UID
57 ///
58 private static final long serialVersionUID = -6998982978030439446L;
59
60 //
61 //Define class members
62 //
63 private JPanel jContentPane = null;
64
65 private JLabel jLabelVariableName = null;
66
67 private JTextField jTextFieldVariableName = null;
68
69 private JLabel jLabelUsage = null;
70
71 private JComboBox jComboBoxUsage = null;
72
73 private StarLabel jStarLabel1 = null;
74
75 private StarLabel jStarLabel2 = null;
76
77 private JTextArea jTextAreaList = null;
78
79 private JComboBox jComboBoxList = null;
80
81 private JButton jButtonAdd = null;
82
83 private JButton jButtonRemove = null;
84
85 private JButton jButtonUpdate = null;
86
87 private JScrollPane jScrollPane = null;
88
89 private JScrollPane jScrollPaneList = null;
90
91 private JLabel jLabelGuidCName = null;
92
93 private JTextField jTextFieldGuidC_Name = null;
94
95 private JTextField jTextFieldFeatureFlag = null;
96
97 private JLabel jLabelFeatureFlag = null;
98
99 private JLabel jLabelArch = null;
100
101 private ICheckBoxList iCheckBoxListArch = null;
102
103 private JScrollPane jScrollPaneArch = null;
104
105 private JLabel jLabelHelpText = null;
106
107 private JTextField jTextFieldHelpText = null;
108
109 //
110 // Not used by UI
111 //
112 private int intSelectedItemId = 0;
113
114 private OpeningModuleType omt = null;
115
116 private ModuleSurfaceArea msa = null;
117
118 private VariablesDocument.Variables variables = null;
119
120 private VariablesIdentification id = null;
121
122 private VariablesVector vid = new VariablesVector();
123
124 private EnumerationData ed = new EnumerationData();
125
126 /**
127 This method initializes jTextFieldString
128
129 @return javax.swing.JTextField jTextFieldString
130
131 **/
132 private JTextField getJTextFieldString() {
133 if (jTextFieldVariableName == null) {
134 jTextFieldVariableName = new JTextField();
135 jTextFieldVariableName.setSize(new java.awt.Dimension(320, 20));
136 jTextFieldVariableName.setPreferredSize(new java.awt.Dimension(320, 20));
137 jTextFieldVariableName.setLocation(new java.awt.Point(160, 10));
138 jTextFieldVariableName.setToolTipText("Enter a Hex Word Array, you must provide leading Zeros. 0x000a, 0x0010, ¡­");
139 }
140 return jTextFieldVariableName;
141 }
142
143 /**
144 This method initializes jComboBoxUsage
145
146 @return javax.swing.JComboBox jComboBoxUsage
147
148 **/
149 private JComboBox getJComboBoxUsage() {
150 if (jComboBoxUsage == null) {
151 jComboBoxUsage = new JComboBox();
152 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 60, 320, 20));
153 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));
154 }
155 return jComboBoxUsage;
156 }
157
158 /**
159 This method initializes jComboBoxFileList
160
161 @return javax.swing.JComboBox jComboBoxFileList
162
163 **/
164 private JComboBox getJComboBoxList() {
165 if (jComboBoxList == null) {
166 jComboBoxList = new JComboBox();
167 jComboBoxList.setBounds(new java.awt.Rectangle(15, 220, 210, 20));
168 jComboBoxList.addItemListener(this);
169 jComboBoxList.addActionListener(this);
170 jComboBoxList.setPreferredSize(new java.awt.Dimension(210, 20));
171 }
172 return jComboBoxList;
173 }
174
175 /**
176 This method initializes jButtonAdd
177
178 @return javax.swing.JButton jButtonAdd
179
180 **/
181 private JButton getJButtonAdd() {
182 if (jButtonAdd == null) {
183 jButtonAdd = new JButton();
184 jButtonAdd.setBounds(new java.awt.Rectangle(230, 220, 80, 20));
185 jButtonAdd.setText("Add");
186 jButtonAdd.addActionListener(this);
187 jButtonAdd.setPreferredSize(new java.awt.Dimension(80, 20));
188 }
189 return jButtonAdd;
190 }
191
192 /**
193 This method initializes jButtonRemove
194
195 @return javax.swing.JButton jButtonRemove
196
197 **/
198 private JButton getJButtonRemove() {
199 if (jButtonRemove == null) {
200 jButtonRemove = new JButton();
201 jButtonRemove.setBounds(new java.awt.Rectangle(400, 220, 80, 20));
202 jButtonRemove.setText("Remove");
203 jButtonRemove.addActionListener(this);
204 jButtonRemove.setPreferredSize(new java.awt.Dimension(80, 20));
205 }
206 return jButtonRemove;
207 }
208
209 /**
210 This method initializes jButtonUpdate
211
212 @return javax.swing.JButton jButtonUpdate
213
214 **/
215 private JButton getJButtonUpdate() {
216 if (jButtonUpdate == null) {
217 jButtonUpdate = new JButton();
218 jButtonUpdate.setBounds(new java.awt.Rectangle(315, 220, 80, 20));
219 jButtonUpdate.setPreferredSize(new java.awt.Dimension(80, 20));
220 jButtonUpdate.setText("Update");
221 jButtonUpdate.addActionListener(this);
222 }
223 return jButtonUpdate;
224 }
225
226 /**
227 * This method initializes jScrollPaneFileList
228 *
229 * @return javax.swing.JScrollPane
230 */
231 private JScrollPane getJScrollPaneList() {
232 if (jScrollPaneList == null) {
233 jScrollPaneList = new JScrollPane();
234 jScrollPaneList.setBounds(new java.awt.Rectangle(15, 245, 465, 240));
235 jScrollPaneList.setViewportView(getJTextAreaList());
236 jScrollPaneList.setPreferredSize(new java.awt.Dimension(465, 240));
237 }
238 return jScrollPaneList;
239 }
240
241 /**
242 This method initializes jScrollPane
243
244 @return javax.swing.JScrollPane
245 */
246 private JScrollPane getJScrollPane() {
247 if (jScrollPane == null) {
248 jScrollPane = new JScrollPane();
249 jScrollPane.setViewportView(getJContentPane());
250 }
251 return jScrollPane;
252 }
253
254 /**
255 * This method initializes jTextAreaFileList
256 *
257 * @return javax.swing.JTextArea
258 */
259 private JTextArea getJTextAreaList() {
260 if (jTextAreaList == null) {
261 jTextAreaList = new JTextArea();
262 jTextAreaList.setEditable(false);
263
264 }
265 return jTextAreaList;
266 }
267
268 /**
269 * This method initializes jTextFieldGuidCName
270 *
271 * @return javax.swing.JTextField
272 */
273 private JTextField getJTextFieldGuidC_Name() {
274 if (jTextFieldGuidC_Name == null) {
275 jTextFieldGuidC_Name = new JTextField();
276 jTextFieldGuidC_Name.setBounds(new java.awt.Rectangle(160, 35, 320, 20));
277 jTextFieldGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));
278 jTextFieldGuidC_Name.setToolTipText("Enter the C Name for the Variable Guid");
279 }
280 return jTextFieldGuidC_Name;
281 }
282
283 /**
284 This method initializes jTextFieldFeatureFlag
285
286 @return javax.swing.JTextField jTextFieldFeatureFlag
287
288 **/
289 private JTextField getJTextFieldFeatureFlag() {
290 if (jTextFieldFeatureFlag == null) {
291 jTextFieldFeatureFlag = new JTextField();
292 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 110, 320, 20));
293 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));
294 }
295 return jTextFieldFeatureFlag;
296 }
297
298 /**
299 This method initializes iCheckBoxListArch
300
301 @return ICheckBoxList
302 **/
303 private ICheckBoxList getICheckBoxListSupportedArchitectures() {
304 if (iCheckBoxListArch == null) {
305 iCheckBoxListArch = new ICheckBoxList();
306 iCheckBoxListArch.addFocusListener(this);
307 iCheckBoxListArch.setToolTipText(DataType.SUP_ARCH_LIST_HELP_TEXT);
308 }
309 return iCheckBoxListArch;
310 }
311
312 /**
313 This method initializes jScrollPaneArch
314
315 @return javax.swing.JScrollPane
316
317 **/
318 private JScrollPane getJScrollPaneArch() {
319 if (jScrollPaneArch == null) {
320 jScrollPaneArch = new JScrollPane();
321 jScrollPaneArch.setBounds(new java.awt.Rectangle(160, 135, 320, 80));
322 jScrollPaneArch.setPreferredSize(new java.awt.Dimension(320, 80));
323 jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());
324 }
325 return jScrollPaneArch;
326 }
327
328 /**
329 This method initializes jTextFieldHelpText
330
331 @return javax.swing.JTextField
332
333 **/
334 private JTextField getJTextFieldHelpText() {
335 if (jTextFieldHelpText == null) {
336 jTextFieldHelpText = new JTextField();
337 jTextFieldHelpText.setBounds(new java.awt.Rectangle(160, 85, 320, 20));
338 jTextFieldHelpText.setPreferredSize(new java.awt.Dimension(320, 20));
339 }
340 return jTextFieldHelpText;
341 }
342
343 public static void main(String[] args) {
344
345 }
346
347 /**
348 This method initializes this
349
350 **/
351 private void init() {
352 this.setSize(500, 515);
353 this.setContentPane(getJScrollPane());
354 this.setTitle("Variables");
355 initFrame();
356 this.setViewMode(false);
357 }
358
359 /**
360 This method initializes this
361 Fill values to all fields if these values are not empty
362
363 @param inPackageDependencies
364
365 **/
366 private void init(Variables inVariables) {
367 init();
368 this.variables = inVariables;
369
370 if (this.variables != null) {
371 if (this.variables.getVariableList().size() > 0) {
372 for (int index = 0; index < this.variables.getVariableList().size(); index++) {
373 String arg0 = variables.getVariableList().get(index).getVariableName();
374 String arg1 = variables.getVariableList().get(index).getGuidCName();
375 String arg2 = null;
376 if (variables.getVariableList().get(index).getUsage() != null) {
377 arg2 = variables.getVariableList().get(index).getUsage().toString();
378 }
379
380 String arg3 = variables.getVariableList().get(index).getFeatureFlag();
381 Vector<String> arg4 = Tools.convertListToVector(variables.getVariableList().get(index).getSupArchList());
382 String arg5 = variables.getVariableList().get(index).getHelpText();
383 id = new VariablesIdentification(arg0, arg1, arg2, arg3, arg4, arg5);
384 vid.addVariables(id);
385 }
386 }
387 }
388 //
389 // Update the list
390 //
391 Tools.generateComboBoxByVector(jComboBoxList, vid.getVariablesName());
392 reloadListArea();
393 }
394
395 /**
396 This is the default constructor
397
398 **/
399 public ModuleVariables() {
400 super();
401 init();
402 this.setVisible(true);
403 }
404
405 /**
406 This is the override edit constructor
407
408 @param inVariables The input data of VariablesDocument.Variables
409
410 **/
411 public ModuleVariables(OpeningModuleType inOmt) {
412 super();
413 this.omt = inOmt;
414 this.msa = omt.getXmlMsa();
415 init(msa.getVariables());
416 this.setVisible(true);
417 }
418
419 /**
420 Disable all components when the mode is view
421
422 @param isView true - The view mode; false - The non-view mode
423
424 **/
425 public void setViewMode(boolean isView) {
426 if (isView) {
427 this.jTextFieldVariableName.setEnabled(!isView);
428 this.jComboBoxUsage.setEnabled(!isView);
429 }
430 }
431
432 /**
433 This method initializes jContentPane
434
435 @return javax.swing.JPanel jContentPane
436
437 **/
438 private JPanel getJContentPane() {
439 if (jContentPane == null) {
440 jLabelGuidCName = new JLabel();
441 jLabelGuidCName.setBounds(new java.awt.Rectangle(15, 35, 140, 20));
442 jLabelGuidCName.setText("Guid C_Name");
443 jLabelUsage = new JLabel();
444 jLabelUsage.setText("Usage");
445 jLabelUsage.setBounds(new java.awt.Rectangle(15, 60, 140, 20));
446 jLabelVariableName = new JLabel();
447 jLabelVariableName.setText("Variable Name");
448 jLabelVariableName.setLocation(new java.awt.Point(15, 10));
449 jLabelVariableName.setSize(new java.awt.Dimension(140, 20));
450 jLabelArch = new JLabel();
451 jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 140, 20));
452 jLabelArch.setText("Arch");
453 jLabelFeatureFlag = new JLabel();
454 jLabelFeatureFlag.setText("Feature Flag");
455 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 140, 20));
456
457 jContentPane = new JPanel();
458 jContentPane.setLayout(null);
459 jContentPane.setPreferredSize(new java.awt.Dimension(490, 495));
460
461 jContentPane.add(jLabelVariableName, null);
462 jContentPane.add(jLabelGuidCName, null);
463 jContentPane.add(getJTextFieldGuidC_Name(), null);
464 jContentPane.add(getJTextFieldString(), null);
465 jContentPane.add(jLabelUsage, null);
466 jContentPane.add(getJComboBoxUsage(), null);
467 jStarLabel1 = new StarLabel();
468 jStarLabel1.setLocation(new java.awt.Point(0, 10));
469 jStarLabel2 = new StarLabel();
470 jStarLabel2.setLocation(new java.awt.Point(0, 35));
471 jLabelHelpText = new JLabel();
472 jLabelHelpText.setBounds(new java.awt.Rectangle(14, 85, 140, 20));
473 jLabelHelpText.setText("Help Text");
474
475 jContentPane.add(jStarLabel1, null);
476 jContentPane.add(jStarLabel2, null);
477
478 jContentPane.add(getJComboBoxList(), null);
479 jContentPane.add(getJButtonAdd(), null);
480 jContentPane.add(getJButtonRemove(), null);
481 jContentPane.add(getJButtonUpdate(), null);
482 jContentPane.add(getJScrollPaneList(), null);
483
484 jContentPane.add(jLabelArch, null);
485 jContentPane.add(jLabelFeatureFlag, null);
486 jContentPane.add(getJTextFieldFeatureFlag(), null);
487 jContentPane.add(getJScrollPaneArch(), null);
488 jContentPane.add(jLabelHelpText, null);
489 jContentPane.add(getJTextFieldHelpText(), null);
490 }
491 return jContentPane;
492 }
493
494 /* (non-Javadoc)
495 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
496 *
497 * Override actionPerformed to listen all actions
498 *
499 */
500 public void actionPerformed(ActionEvent arg0) {
501 if (arg0.getSource() == jButtonAdd) {
502 if (!checkAdd()) {
503 return;
504 }
505 addToList();
506 }
507 if (arg0.getSource() == jButtonRemove) {
508 removeFromList();
509 }
510 if (arg0.getSource() == jButtonUpdate) {
511 if (!checkAdd()) {
512 return;
513 }
514 updateForList();
515 }
516 }
517
518 /**
519 This method initializes Usage type
520
521 **/
522 private void initFrame() {
523 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVPpiUsage());
524 this.iCheckBoxListArch.setAllItems(ed.getVSupportedArchitectures());
525 }
526
527 /**
528 Data validation for all fields
529
530 @retval true - All datas are valid
531 @retval false - At least one data is invalid
532
533 **/
534 public boolean checkAdd() {
535 //
536 // Check if all fields have correct data types
537 //
538
539 //
540 // Check VariableName
541 //
542 if (isEmpty(this.jTextFieldVariableName.getText())) {
543 Log.err("Variable Name couldn't be empty");
544 return false;
545 }
546
547 if (!isEmpty(this.jTextFieldVariableName.getText())) {
548 if (!DataValidation.isHexWordArrayType(this.jTextFieldVariableName.getText())) {
549 Log.err("Incorrect data type for Variable Name");
550 return false;
551 }
552 }
553
554 //
555 // Check GuidC_Name
556 //
557 if (isEmpty(this.jTextFieldGuidC_Name.getText())) {
558 Log.err("Guid C_Name couldn't be empty");
559 return false;
560 }
561
562 if (!isEmpty(this.jTextFieldGuidC_Name.getText())) {
563 if (!DataValidation.isC_NameType(this.jTextFieldGuidC_Name.getText())) {
564 Log.err("Incorrect data type for Guid C_Name");
565 return false;
566 }
567 }
568
569 //
570 // Check FeatureFlag
571 //
572 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {
573 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {
574 Log.err("Incorrect data type for Feature Flag");
575 return false;
576 }
577 }
578
579 return true;
580 }
581
582 /**
583 Save all components of Variables
584 if exists variables, set the value directly
585 if not exists variables, new an instance first
586
587 **/
588 public void save() {
589 try {
590 int count = this.vid.size();
591
592 this.variables = Variables.Factory.newInstance();
593 if (count > 0) {
594 for (int index = 0; index < count; index++) {
595 Variable p = Variable.Factory.newInstance();
596 if (!isEmpty(vid.getVariables(index).getName())) {
597 p.setVariableName(vid.getVariables(index).getName());
598 }
599 if (!isEmpty(vid.getVariables(index).getGuid())) {
600 p.setGuidCName(vid.getVariables(index).getGuid());
601 }
602 if (!isEmpty(vid.getVariables(index).getUsage())) {
603 p.setUsage(VariableUsage.Enum.forString(vid.getVariables(index).getUsage()));
604 }
605 if (!isEmpty(vid.getVariables(index).getFeatureFlag())) {
606 p.setFeatureFlag(vid.getVariables(index).getFeatureFlag());
607 }
608 if (vid.getVariables(index).getSupArchList() != null && vid.getVariables(index).getSupArchList().size() > 0) {
609 p.setSupArchList(vid.getVariables(index).getSupArchList());
610 }
611 if (!isEmpty(vid.getVariables(index).getHelp())) {
612 p.setHelpText(vid.getVariables(index).getHelp());
613 }
614 this.variables.addNewVariable();
615 this.variables.setVariableArray(variables.getVariableList().size() - 1, p);
616 }
617 }
618
619 this.msa.setVariables(variables);
620 this.omt.setSaved(false);
621 } catch (Exception e) {
622 Log.err("Update Variables", e.getMessage());
623 }
624 }
625
626 /* (non-Javadoc)
627 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
628 *
629 * Override componentResized to resize all components when frame's size is changed
630 */
631 public void componentResized(ComponentEvent arg0) {
632 int intCurrentWidth = this.getJContentPane().getWidth();
633 int intCurrentHeight = this.getJContentPane().getHeight();
634 int intPreferredWidth = this.getJContentPane().getPreferredSize().width;
635 int intPreferredHeight = this.getJContentPane().getPreferredSize().height;
636
637 resizeComponentWidth(jTextFieldVariableName, intCurrentWidth, intPreferredWidth);
638 resizeComponentWidth(jTextFieldGuidC_Name, intCurrentWidth, intPreferredWidth);
639 resizeComponentWidth(jComboBoxUsage, intCurrentWidth, intPreferredWidth);
640 resizeComponentWidth(jTextFieldHelpText, intCurrentWidth, intPreferredWidth);
641 resizeComponentWidth(jTextFieldFeatureFlag, intCurrentWidth, intPreferredWidth);
642 resizeComponentWidth(jScrollPaneArch, intCurrentWidth, intPreferredWidth);
643
644 resizeComponentWidth(jComboBoxList, intCurrentWidth, intPreferredWidth);
645 resizeComponent(jScrollPaneList, intCurrentWidth, intCurrentHeight, intPreferredWidth, intPreferredHeight);
646 relocateComponentX(jButtonAdd, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_ADD_BUTTON);
647 relocateComponentX(jButtonRemove, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON);
648 relocateComponentX(jButtonUpdate, intCurrentWidth, intPreferredWidth, DataType.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON);
649 }
650
651 private VariablesIdentification getCurrentVariables() {
652 String arg0 = this.jTextFieldVariableName.getText();
653 String arg1 = this.jTextFieldGuidC_Name.getText();
654 String arg2 = this.jComboBoxUsage.getSelectedItem().toString();
655
656 String arg3 = this.jTextFieldFeatureFlag.getText();
657 Vector<String> arg4 = this.iCheckBoxListArch.getAllCheckedItemsString();
658 String arg5 = this.jTextFieldHelpText.getText();
659
660 id = new VariablesIdentification(arg0, arg1, arg2, arg3, arg4, arg5);
661 return id;
662 }
663
664 /**
665 Add current item to Vector
666
667 **/
668 private void addToList() {
669 intSelectedItemId = vid.size();
670
671 vid.addVariables(getCurrentVariables());
672
673 jComboBoxList.addItem(id.getName());
674 jComboBoxList.setSelectedItem(id.getName());
675
676 //
677 // Reset select item index
678 //
679 intSelectedItemId = vid.size();
680
681 //
682 // Reload all fields of selected item
683 //
684 reloadFromList();
685
686 //
687 // Save to memory
688 //
689 save();
690 }
691
692 /**
693 Remove current item from Vector
694
695 **/
696 private void removeFromList() {
697 //
698 // Check if exist items
699 //
700 if (this.vid.size() < 1) {
701 return;
702 }
703
704 int intTempIndex = intSelectedItemId;
705
706 jComboBoxList.removeItemAt(intSelectedItemId);
707
708 vid.removeVariables(intTempIndex);
709
710 //
711 // Reload all fields of selected item
712 //
713 reloadFromList();
714
715 //
716 // Save to memory
717 //
718 save();
719 }
720
721 /**
722 Update current item of Vector
723
724 **/
725 private void updateForList() {
726 //
727 // Check if exist items
728 //
729 if (this.vid.size() < 1) {
730 return;
731 }
732
733 //
734 // Backup selected item index
735 //
736 int intTempIndex = intSelectedItemId;
737
738 vid.updateVariables(getCurrentVariables(), intTempIndex);
739
740 jComboBoxList.removeAllItems();
741 for (int index = 0; index < vid.size(); index++) {
742 jComboBoxList.addItem(vid.getVariables(index).getName());
743 }
744
745 //
746 // Restore selected item index
747 //
748 intSelectedItemId = intTempIndex;
749
750 //
751 // Reset select item index
752 //
753 jComboBoxList.setSelectedIndex(intSelectedItemId);
754
755 //
756 // Reload all fields of selected item
757 //
758 reloadFromList();
759
760 //
761 // Save to memory
762 //
763 save();
764 }
765
766 /**
767 Refresh all fields' values of selected item of Vector
768
769 **/
770 private void reloadFromList() {
771 if (vid.size() > 0) {
772 //
773 // Get selected item index
774 //
775 intSelectedItemId = jComboBoxList.getSelectedIndex();
776
777 this.jTextFieldVariableName.setText(vid.getVariables(intSelectedItemId).getName());
778 this.jTextFieldGuidC_Name.setText(vid.getVariables(intSelectedItemId).getGuid());
779 this.jComboBoxUsage.setSelectedItem(vid.getVariables(intSelectedItemId).getUsage());
780 this.jTextFieldHelpText.setText(vid.getVariables(intSelectedItemId).getHelp());
781
782 jTextFieldFeatureFlag.setText(vid.getVariables(intSelectedItemId).getFeatureFlag());
783 iCheckBoxListArch.setAllItemsUnchecked();
784 iCheckBoxListArch.initCheckedItem(true, vid.getVariables(intSelectedItemId).getSupArchList());
785
786 } else {
787 }
788
789 reloadListArea();
790 }
791
792 /**
793 Update list area pane via the elements of Vector
794
795 **/
796 private void reloadListArea() {
797 String strListItem = "";
798 for (int index = 0; index < vid.size(); index++) {
799 strListItem = strListItem + vid.getVariables(index).getName() + DataType.UNIX_LINE_SEPARATOR;
800 }
801 this.jTextAreaList.setText(strListItem);
802 }
803
804 /* (non-Javadoc)
805 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
806 *
807 * Reflesh the frame when selected item changed
808 *
809 */
810 public void itemStateChanged(ItemEvent arg0) {
811 if (arg0.getSource() == this.jComboBoxList && arg0.getStateChange() == ItemEvent.SELECTED) {
812 reloadFromList();
813 }
814 }
815 }