]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdBuildOptions.java
1. Make SPD editor tables bigger.and table now focus the entry added.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdBuildOptions.java
1 /** @file
2
3 The file is used to create, update BuildOptions of Fpd 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 package org.tianocore.frameworkwizard.platform.ui;
16
17 import java.awt.BorderLayout;
18
19 import javax.swing.JPanel;
20 import javax.swing.JTabbedPane;
21 import javax.swing.JCheckBox;
22 import javax.swing.JLabel;
23 import java.awt.FlowLayout;
24 import javax.swing.AbstractAction;
25 import java.awt.event.ActionEvent;
26 import java.awt.event.ActionListener;
27
28 import javax.swing.DefaultCellEditor;
29 import javax.swing.JFileChooser;
30 import javax.swing.JFrame;
31 import javax.swing.JOptionPane;
32 import javax.swing.JTextField;
33 import javax.swing.JButton;
34 import javax.swing.JScrollPane;
35 import javax.swing.JTable;
36 import javax.swing.JComboBox;
37 import javax.swing.ListSelectionModel;
38 import javax.swing.event.InternalFrameAdapter;
39 import javax.swing.event.InternalFrameEvent;
40 import javax.swing.event.ListSelectionEvent;
41 import javax.swing.event.ListSelectionListener;
42 import javax.swing.event.TableModelEvent;
43 import javax.swing.event.TableModelListener;
44 import javax.swing.table.DefaultTableModel;
45 import javax.swing.table.TableModel;
46
47 import org.tianocore.PlatformSurfaceAreaDocument;
48 import org.tianocore.frameworkwizard.common.DataValidation;
49 import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;
50 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;
51
52 import java.io.File;
53 import java.util.ArrayList;
54 import java.util.Iterator;
55 import java.util.LinkedHashMap;
56 import java.util.Set;
57 import java.util.Vector;
58 import java.awt.Dimension;
59
60 public class FpdBuildOptions extends IInternalFrame {
61
62 private static final long serialVersionUID = 1L;
63 static JFrame frame;
64 private JPanel jContentPane = null;
65 private JPanel jPanel = null;
66 private JPanel jPanel1 = null;
67 private JPanel jPanel2 = null;
68 private JPanel jPanel3 = null;
69 private JTabbedPane jTabbedPane = null;
70 private JPanel jPanel8 = null;
71 private JPanel jPanel9 = null;
72 private JPanel jPanel10 = null;
73 private JPanel jPanel11 = null;
74 private JTextField jTextField2 = null;
75 private JLabel jLabel3 = null;
76 private JTextField jTextField3 = null;
77 private JButton jButton4 = null;
78 private JButton jButton5 = null;
79 private JTextField jTextField4 = null;
80 private JScrollPane jScrollPane2 = null;
81 private JTable jTable2 = null;
82 private DefaultTableModel ffsTableModel = null;
83 private DefaultTableModel sectionsTableModel = null;
84 private DefaultTableModel sectionTableModel = null;
85 private DefaultTableModel subsectionsTableModel = null;
86 private DefaultTableModel antTaskTableModel = null;
87 private DefaultTableModel ffsAttributesTableModel = null;
88 private DefaultTableModel optionsTableModel = null;
89 private JPanel jPanel13 = null;
90 private JPanel jPanel18 = null;
91 private JPanel jPanel15 = null;
92 private JPanel jPanel16 = null;
93 private JPanel jPanel17 = null;
94 private JLabel jLabel7 = null;
95 private JTextField jTextField6 = null;
96 private JButton jButton8 = null;
97 private JButton jButton9 = null;
98 private JScrollPane jScrollPane5 = null;
99 private JTable jTable4 = null;
100 private JPanel jPanel19 = null;
101 private JPanel jPanel20 = null;
102 private JLabel jLabel9 = null;
103 private JTextField jTextField7 = null;
104 private JLabel jLabel10 = null;
105 private JComboBox jComboBox2 = null;
106 private JLabel jLabel11 = null;
107 private JLabel jLabel12 = null;
108 private JTextField jTextField8 = null;
109 private JScrollPane jScrollPane6 = null;
110 private JTable jTable5 = null;
111 private JButton jButton10 = null;
112 private JButton jButton11 = null;
113 private JButton jButton17 = null;
114 private JButton jButton18 = null;
115 private FpdFileContents ffc = null;
116 private OpeningPlatformType docConsole = null;
117 private JCheckBox jCheckBox9 = null;
118 private JCheckBox jCheckBox10 = null;
119 private JCheckBox jCheckBox11 = null;
120 private JCheckBox jCheckBox12 = null;
121 private JCheckBox jCheckBox13 = null;
122 private JCheckBox jCheckBox14 = null;
123 private JLabel jLabel14 = null;
124 private JTextField jTextField12 = null;
125 private JTextField jTextField13 = null;
126 private JLabel jLabel15 = null;
127 private int selectedRow = -1;
128 private JLabel jLabel = null;
129 private JLabel jLabel1 = null;
130 private JScrollPane jScrollPane = null;
131 private JTable jTable = null;
132 private JLabel jLabel2 = null;
133 private JScrollPane jScrollPane1 = null;
134 private JTable jTable1 = null;
135 private JLabel jLabel4 = null;
136 private JScrollPane jScrollPane3 = null;
137 private JTable jTable3 = null;
138 private JLabel jLabel5 = null;
139 private JTextField jTextField = null;
140 private JPanel jPanel4 = null;
141 private JLabel jLabel6 = null;
142 private JButton jButton = null;
143 private JButton jButton1 = null;
144 private JButton jButton2 = null;
145 private JButton jButton3 = null;
146 private JLabel jLabel8 = null;
147 private JButton jButton6 = null;
148 private JButton jButton7 = null;
149 private JScrollPane jScrollPane4 = null;
150 private JTable jTable6 = null;
151 private JButton jButton12 = null;
152 private JTextField jTextField1 = null;
153 /**
154 * This method initializes jPanel
155 *
156 * @return javax.swing.JPanel
157 */
158 private JPanel getJPanel() {
159 if (jPanel == null) {
160 jPanel = new JPanel();
161 }
162 return jPanel;
163 }
164
165 /**
166 * This method initializes jPanel1
167 *
168 * @return javax.swing.JPanel
169 */
170 private JPanel getJPanel1() {
171 if (jPanel1 == null) {
172 jPanel1 = new JPanel();
173 }
174 return jPanel1;
175 }
176
177 /**
178 * This method initializes jPanel2
179 *
180 * @return javax.swing.JPanel
181 */
182 private JPanel getJPanel2() {
183 if (jPanel2 == null) {
184 jPanel2 = new JPanel();
185 }
186 return jPanel2;
187 }
188
189 /**
190 * This method initializes jPanel3
191 *
192 * @return javax.swing.JPanel
193 */
194 private JPanel getJPanel3() {
195 if (jPanel3 == null) {
196 jPanel3 = new JPanel();
197 }
198 return jPanel3;
199 }
200
201 /**
202 * This method initializes jTabbedPane
203 *
204 * @return javax.swing.JTabbedPane
205 */
206 private JTabbedPane getJTabbedPane() {
207 if (jTabbedPane == null) {
208 jTabbedPane = new JTabbedPane();
209 jTabbedPane.addTab("FFS", null, getJPanel13(), null);
210 jTabbedPane.addTab("Options", null, getJPanel20(), null);
211 jTabbedPane.addTab("User Defined ANT Tasks", null, getJPanel8(), null);
212 }
213 return jTabbedPane;
214 }
215
216
217 /**
218 * This method initializes jPanel8
219 *
220 * @return javax.swing.JPanel
221 */
222 private JPanel getJPanel8() {
223 if (jPanel8 == null) {
224 jPanel8 = new JPanel();
225 jPanel8.setLayout(new BorderLayout());
226 jPanel8.add(getJPanel9(), java.awt.BorderLayout.NORTH);
227 jPanel8.add(getJPanel10(), java.awt.BorderLayout.SOUTH);
228 jPanel8.add(getJPanel11(), java.awt.BorderLayout.CENTER);
229
230 }
231 return jPanel8;
232 }
233
234 /**
235 * This method initializes jPanel9
236 *
237 * @return javax.swing.JPanel
238 */
239 private JPanel getJPanel9() {
240 if (jPanel9 == null) {
241 jLabel = new JLabel();
242 jLabel.setText("ANT Task File");
243 jLabel.setPreferredSize(new java.awt.Dimension(80,20));
244 FlowLayout flowLayout8 = new FlowLayout();
245 flowLayout8.setAlignment(java.awt.FlowLayout.LEFT);
246 jLabel3 = new JLabel();
247 jLabel3.setText("ID");
248 jPanel9 = new JPanel();
249 jPanel9.setLayout(flowLayout8);
250 jPanel9.add(jLabel, null);
251 jPanel9.add(getJTextField2(), null);
252 jPanel9.add(getJButton12(), null);
253 jPanel9.add(jLabel3, null);
254 jPanel9.add(getJTextField3(), null);
255 }
256 return jPanel9;
257 }
258
259 /**
260 * This method initializes jPanel10
261 *
262 * @return javax.swing.JPanel
263 */
264 private JPanel getJPanel10() {
265 if (jPanel10 == null) {
266 jPanel10 = new JPanel();
267 }
268 return jPanel10;
269 }
270
271 /**
272 * This method initializes jPanel11
273 *
274 * @return javax.swing.JPanel
275 */
276 private JPanel getJPanel11() {
277 if (jPanel11 == null) {
278 jLabel1 = new JLabel();
279 jLabel1.setText("ANT Command Options");
280 jLabel1.setPreferredSize(new java.awt.Dimension(131,20));
281 FlowLayout flowLayout3 = new FlowLayout();
282 flowLayout3.setHgap(5);
283 flowLayout3.setAlignment(java.awt.FlowLayout.LEFT);
284 jPanel11 = new JPanel();
285 jPanel11.setLayout(flowLayout3);
286 jPanel11.add(jLabel1, null);
287 jPanel11.add(getJTextField4(), null);
288 jPanel11.add(getJButton4(), null);
289 jPanel11.add(getJButton5(), null);
290 jPanel11.add(getJScrollPane2(), null);
291 }
292 return jPanel11;
293 }
294
295 /**
296 * This method initializes jTextField2
297 *
298 * @return javax.swing.JTextField
299 */
300 private JTextField getJTextField2() {
301 if (jTextField2 == null) {
302 jTextField2 = new JTextField();
303 jTextField2.setPreferredSize(new java.awt.Dimension(200,20));
304 }
305 return jTextField2;
306 }
307
308 /**
309 * This method initializes jTextField3
310 *
311 * @return javax.swing.JTextField
312 */
313 private JTextField getJTextField3() {
314 if (jTextField3 == null) {
315 jTextField3 = new JTextField();
316 jTextField3.setPreferredSize(new java.awt.Dimension(100,20));
317 }
318 return jTextField3;
319 }
320
321 /**
322 * This method initializes jButton4
323 *
324 * @return javax.swing.JButton
325 */
326 private JButton getJButton4() {
327 if (jButton4 == null) {
328 jButton4 = new JButton();
329 jButton4.setPreferredSize(new java.awt.Dimension(90,20));
330 jButton4.setText("Add");
331 jButton4.addActionListener(new ActionListener() {
332 public void actionPerformed(ActionEvent e) {
333 if (!DataValidation.isInt(jTextField3.getText()) || jTextField3.getText().length() != 8) {
334 JOptionPane.showMessageDialog(frame, "ID must be an 8-digit integer.");
335 return;
336 }
337 Object[] o = {jTextField3.getText(), null, null};
338 o[1] = jTextField2.getText();
339 o[2] = jTextField4.getText();
340 ffc.genBuildOptionsUserDefAntTask(o[0]+"", o[1]+"", o[2]+"");
341 antTaskTableModel.addRow(o);
342 docConsole.setSaved(false);
343 }
344 });
345 }
346 return jButton4;
347 }
348
349 /**
350 * This method initializes jButton5
351 *
352 * @return javax.swing.JButton
353 */
354 private JButton getJButton5() {
355 if (jButton5 == null) {
356 jButton5 = new JButton();
357 jButton5.setPreferredSize(new java.awt.Dimension(90,20));
358 jButton5.setText("Delete");
359 jButton5.addActionListener(new ActionListener() {
360 public void actionPerformed(ActionEvent e) {
361 if (selectedRow >= 0) {
362 docConsole.setSaved(false);
363 antTaskTableModel.removeRow(selectedRow);
364 ffc.removeBuildOptionsUserDefAntTask(selectedRow);
365 }
366 }
367 });
368 }
369 return jButton5;
370 }
371
372 /**
373 * This method initializes jTextField4
374 *
375 * @return javax.swing.JTextField
376 */
377 private JTextField getJTextField4() {
378 if (jTextField4 == null) {
379 jTextField4 = new JTextField();
380 jTextField4.setPreferredSize(new java.awt.Dimension(270,20));
381 jTextField4.setEnabled(true);
382 }
383 return jTextField4;
384 }
385
386 /**
387 * This method initializes jScrollPane2
388 *
389 * @return javax.swing.JScrollPane
390 */
391 private JScrollPane getJScrollPane2() {
392 if (jScrollPane2 == null) {
393 jScrollPane2 = new JScrollPane();
394 jScrollPane2.setPreferredSize(new java.awt.Dimension(600,100));
395 jScrollPane2.setViewportView(getJTable2());
396 }
397 return jScrollPane2;
398 }
399
400 /**
401 * This method initializes jTable2
402 *
403 * @return javax.swing.JTable
404 */
405 private JTable getJTable2() {
406 if (jTable2 == null) {
407 antTaskTableModel = new DefaultTableModel();
408 jTable2 = new JTable(antTaskTableModel);
409 jTable2.setRowHeight(20);
410 antTaskTableModel.addColumn("ID");
411 antTaskTableModel.addColumn("Filename");
412 antTaskTableModel.addColumn("ANT Command Options");
413
414 jTable2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
415 jTable2.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
416 public void valueChanged(ListSelectionEvent e) {
417 selectedRow = -1;
418 if (e.getValueIsAdjusting()){
419 return;
420 }
421 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
422 if (lsm.isSelectionEmpty()) {
423 return;
424 }
425 else{
426 selectedRow = lsm.getMinSelectionIndex();
427 }
428 }
429 });
430
431 jTable2.getModel().addTableModelListener(new TableModelListener() {
432 public void tableChanged(TableModelEvent arg0) {
433 // TODO Auto-generated method stub
434 int row = arg0.getFirstRow();
435 TableModel m = (TableModel)arg0.getSource();
436 if (arg0.getType() == TableModelEvent.UPDATE){
437 //ToDo Data Validition check.
438 String id = m.getValueAt(row, 0) + "";
439 String file = m.getValueAt(row, 1) + "";
440 String execOrder = m.getValueAt(row, 2) + "";
441 if (id.length() == 0) {
442 return;
443 }
444 if (file.length() == 0 && execOrder.length() == 0){
445 return;
446 }
447 if (file.length() == 0) {
448 file = null;
449 }
450 if (execOrder.length() == 0) {
451 execOrder = null;
452 }
453 ffc.updateBuildOptionsUserDefAntTask(row, id, file, execOrder);
454
455 }
456 }
457 });
458 }
459 return jTable2;
460 }
461
462 /**
463 * This method initializes jPanel13
464 *
465 * @return javax.swing.JPanel
466 */
467 private JPanel getJPanel13() {
468 if (jPanel13 == null) {
469 jPanel13 = new JPanel();
470 jPanel13.setLayout(new BorderLayout());
471 jPanel13.add(getJPanel18(), java.awt.BorderLayout.CENTER);
472 jPanel13.add(getJScrollPane(), java.awt.BorderLayout.WEST);
473 }
474 return jPanel13;
475 }
476
477 /**
478 * This method initializes jPanel18
479 *
480 * @return javax.swing.JPanel
481 */
482 private JPanel getJPanel18() {
483 if (jPanel18 == null) {
484 jPanel18 = new JPanel();
485 jPanel18.setLayout(new BorderLayout());
486 jPanel18.add(getJPanel15(), java.awt.BorderLayout.NORTH);
487 jPanel18.add(getJPanel16(), java.awt.BorderLayout.SOUTH);
488 jPanel18.add(getJPanel17(), java.awt.BorderLayout.EAST);
489 jPanel18.add(getJPanel19(), java.awt.BorderLayout.CENTER);
490 }
491 return jPanel18;
492 }
493
494 /**
495 * This method initializes jPanel15
496 *
497 * @return javax.swing.JPanel
498 */
499 private JPanel getJPanel15() {
500 if (jPanel15 == null) {
501 jLabel5 = new JLabel();
502 jLabel5.setText("Encapsulation Type");
503 FlowLayout flowLayout5 = new FlowLayout();
504 flowLayout5.setAlignment(java.awt.FlowLayout.RIGHT);
505 jLabel7 = new JLabel();
506 jLabel7.setText("FFS Key");
507 jPanel15 = new JPanel();
508 jPanel15.setLayout(flowLayout5);
509 jPanel15.add(jLabel7, null);
510 jPanel15.add(getJTextField6(), null);
511 jPanel15.add(jLabel5, null);
512 jPanel15.add(getJTextField(), null);
513 jPanel15.add(getJButton8(), null);
514 jPanel15.add(getJButton9(), null);
515 }
516 return jPanel15;
517 }
518
519 /**
520 * This method initializes jPanel16
521 *
522 * @return javax.swing.JPanel
523 */
524 private JPanel getJPanel16() {
525 if (jPanel16 == null) {
526 jLabel6 = new JLabel();
527 jLabel6.setText("Attributes");
528 FlowLayout flowLayout6 = new FlowLayout();
529 flowLayout6.setHgap(5);
530 flowLayout6.setVgap(20);
531 flowLayout6.setAlignment(java.awt.FlowLayout.CENTER);
532 jPanel16 = new JPanel();
533 jPanel16.setPreferredSize(new java.awt.Dimension(491,130));
534 jPanel16.setLayout(flowLayout6);
535 jPanel16.add(jLabel6, null);
536 jPanel16.add(getJScrollPane5(), null);
537 jPanel16.add(getJPanel4(), null);
538 }
539 return jPanel16;
540 }
541
542 /**
543 * This method initializes jPanel17
544 *
545 * @return javax.swing.JPanel
546 */
547 private JPanel getJPanel17() {
548 if (jPanel17 == null) {
549 jPanel17 = new JPanel();
550 }
551 return jPanel17;
552 }
553
554 /**
555 * This method initializes jTextField6
556 *
557 * @return javax.swing.JTextField
558 */
559 private JTextField getJTextField6() {
560 if (jTextField6 == null) {
561 jTextField6 = new JTextField();
562 jTextField6.setPreferredSize(new java.awt.Dimension(100,20));
563 jTextField6.setEditable(true);
564 jTextField6.addFocusListener(new java.awt.event.FocusAdapter() {
565 public void focusLost(java.awt.event.FocusEvent e) {
566 if (jTable.getSelectedRow() < 0) {
567 return;
568 }
569 // ffc.updateBuildOptionsFfsKey(jTable.getSelectedRow(), jTextField6.getText());
570 }
571 });
572 }
573 return jTextField6;
574 }
575
576 /**
577 * This method initializes jButton8
578 *
579 * @return javax.swing.JButton
580 */
581 private JButton getJButton8() {
582 if (jButton8 == null) {
583 jButton8 = new JButton();
584 jButton8.setPreferredSize(new java.awt.Dimension(70,20));
585 jButton8.setText("Add");
586 jButton8.addActionListener(new AbstractAction() {
587 /**
588 *
589 */
590 private static final long serialVersionUID = -2923720717273384221L;
591
592 public void actionPerformed(java.awt.event.ActionEvent e) {
593 if (jTextField6.getText().length() > 0) {
594 String[] row = {jTextField6.getText()};
595 ffsTableModel.addRow(row);
596 docConsole.setSaved(false);
597 ffc.genBuildOptionsFfs(jTextField6.getText(), jTextField.getText());
598 }
599 }
600 });
601 }
602 return jButton8;
603 }
604
605 /**
606 * This method initializes jButton9
607 *
608 * @return javax.swing.JButton
609 */
610 private JButton getJButton9() {
611 if (jButton9 == null) {
612 jButton9 = new JButton();
613 jButton9.setPreferredSize(new java.awt.Dimension(70,20));
614 jButton9.setText("Delete");
615 jButton9.addActionListener(new AbstractAction() {
616 /**
617 *
618 */
619 private static final long serialVersionUID = -4002678939178194476L;
620
621 public void actionPerformed(ActionEvent arg0){
622 if (jTable.getSelectedRow() < 0) {
623 return;
624 }
625 docConsole.setSaved(false);
626 ffc.removeBuildOptionsFfs(jTable.getSelectedRow());
627 }
628 });
629 }
630 return jButton9;
631 }
632
633 /**
634 * This method initializes jScrollPane5
635 *
636 * @return javax.swing.JScrollPane
637 */
638 private JScrollPane getJScrollPane5() {
639 if (jScrollPane5 == null) {
640 jScrollPane5 = new JScrollPane();
641 jScrollPane5.setPreferredSize(new java.awt.Dimension(350,100));
642 jScrollPane5.setViewportView(getJTable4());
643 }
644 return jScrollPane5;
645 }
646
647 /**
648 * This method initializes jTable4
649 *
650 * @return javax.swing.JTable
651 */
652 private JTable getJTable4() {
653 if (jTable4 == null) {
654 ffsAttributesTableModel = new DefaultTableModel();
655 jTable4 = new JTable(ffsAttributesTableModel);
656 jTable4.setPreferredSize(new java.awt.Dimension(400,80));
657 jTable4.setRowHeight(20);
658 ffsAttributesTableModel.addColumn("Name");
659 ffsAttributesTableModel.addColumn("Value");
660
661 jTable4.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
662 jTable4.getModel().addTableModelListener(new TableModelListener() {
663 public void tableChanged(TableModelEvent arg0) {
664 // TODO Auto-generated method stub
665 int row = arg0.getFirstRow();
666 TableModel m = (TableModel)arg0.getSource();
667 if (arg0.getType() == TableModelEvent.UPDATE){
668 //ToDo Data Validition check.
669 String name = m.getValueAt(row, 0) + "";
670 String value = m.getValueAt(row, 1) + "";
671
672 if (name.length() == 0) {
673 return;
674 }
675 if (value.length() == 0){
676 return;
677 }
678 docConsole.setSaved(false);
679 ffc.updateBuildOptionsFfsAttribute(jTable.getSelectedRow(), row, name, value);
680 }
681 }
682 });
683 }
684 return jTable4;
685 }
686
687 /**
688 * This method initializes jPanel19
689 *
690 * @return javax.swing.JPanel
691 */
692 private JPanel getJPanel19() {
693 if (jPanel19 == null) {
694 jLabel8 = new JLabel();
695 jLabel8.setText("Sections");
696 jLabel4 = new JLabel();
697 jLabel4.setText("Sub-Sections");
698 jLabel2 = new JLabel();
699 jLabel2.setText("Section");
700 jPanel19 = new JPanel();
701 jPanel19.setLayout(new FlowLayout());
702 jPanel19.add(jLabel2, null);
703 jPanel19.add(getJButton(), null);
704 jPanel19.add(getJButton1(), null);
705 jPanel19.add(getJScrollPane1(), null);
706 jPanel19.add(jLabel8, null);
707 jPanel19.add(getJButton6(), null);
708 jPanel19.add(getJButton7(), null);
709 jPanel19.add(getJScrollPane4(), null);
710 jPanel19.add(jLabel4, null);
711 jPanel19.add(getJButton2(), null);
712 jPanel19.add(getJButton3(), null);
713 jPanel19.add(getJScrollPane3(), null);
714 }
715 return jPanel19;
716 }
717
718 /**
719 * This method initializes jPanel20
720 *
721 * @return javax.swing.JPanel
722 */
723 private JPanel getJPanel20() {
724 if (jPanel20 == null) {
725 jLabel15 = new JLabel();
726 jLabel15.setText("Tag Name");
727 FlowLayout flowLayout9 = new FlowLayout();
728 flowLayout9.setAlignment(java.awt.FlowLayout.LEFT);
729 jLabel14 = new JLabel();
730 jLabel14.setText("Build Targets");
731 jLabel12 = new JLabel();
732 jLabel12.setText("Tool Command");
733 jLabel11 = new JLabel();
734 jLabel11.setText("Supported Arch");
735 jLabel10 = new JLabel();
736 jLabel10.setText("Tool Chain Family");
737 jLabel9 = new JLabel();
738 jLabel9.setText("Option Contents");
739 jPanel20 = new JPanel();
740 jPanel20.setLayout(flowLayout9);
741 jPanel20.add(jLabel14, null);
742 jPanel20.add(getJTextField12(), null);
743 jPanel20.add(jLabel10, null);
744 jPanel20.add(getJTextField1(), null);
745 jPanel20.add(getJComboBox2(), null);
746 jPanel20.add(jLabel12, null);
747 jPanel20.add(getJTextField8(), null);
748 jPanel20.add(jLabel11, null);
749 jPanel20.add(getJCheckBox9(), null);
750 jPanel20.add(getJCheckBox10(), null);
751 jPanel20.add(getJCheckBox11(), null);
752 jPanel20.add(getJCheckBox12(), null);
753 jPanel20.add(getJCheckBox13(), null);
754 jPanel20.add(getJCheckBox14(), null);
755 jPanel20.add(jLabel15, null);
756 jPanel20.add(getJTextField13(), null);
757 jPanel20.add(jLabel9, null);
758 jPanel20.add(getJTextField7(), null);
759 jPanel20.add(getJButton10(), null);
760 jPanel20.add(getJButton11(), null);
761 jPanel20.add(getJScrollPane6(), null);
762 }
763 return jPanel20;
764 }
765
766 /**
767 * This method initializes jTextField7
768 *
769 * @return javax.swing.JTextField
770 */
771 private JTextField getJTextField7() {
772 if (jTextField7 == null) {
773 jTextField7 = new JTextField();
774 jTextField7.setPreferredSize(new java.awt.Dimension(300,20));
775 }
776 return jTextField7;
777 }
778
779 /**
780 * This method initializes jComboBox2
781 *
782 * @return javax.swing.JComboBox
783 */
784 private JComboBox getJComboBox2() {
785 if (jComboBox2 == null) {
786 jComboBox2 = new JComboBox();
787 jComboBox2.setPreferredSize(new java.awt.Dimension(80,20));
788 jComboBox2.addItem("MSFT");
789 jComboBox2.addItem("GCC");
790 jComboBox2.addItem("CYGWIN");
791 jComboBox2.addItem("INTEL");
792 jComboBox2.setSelectedIndex(0);
793 jComboBox2.setVisible(false);
794 }
795 return jComboBox2;
796 }
797
798 /**
799 * This method initializes jTextField8
800 *
801 * @return javax.swing.JTextField
802 */
803 private JTextField getJTextField8() {
804 if (jTextField8 == null) {
805 jTextField8 = new JTextField();
806 jTextField8.setPreferredSize(new java.awt.Dimension(110,20));
807 }
808 return jTextField8;
809 }
810
811 /**
812 * This method initializes jScrollPane6
813 *
814 * @return javax.swing.JScrollPane
815 */
816 private JScrollPane getJScrollPane6() {
817 if (jScrollPane6 == null) {
818 jScrollPane6 = new JScrollPane();
819 jScrollPane6.setPreferredSize(new java.awt.Dimension(630,200));
820 jScrollPane6.setViewportView(getJTable5());
821 }
822 return jScrollPane6;
823 }
824
825 /**
826 * This method initializes jTable5
827 *
828 * @return javax.swing.JTable
829 */
830 private JTable getJTable5() {
831 if (jTable5 == null) {
832 optionsTableModel = new DefaultTableModel();
833 jTable5 = new JTable(optionsTableModel);
834 jTable5.setRowHeight(20);
835 optionsTableModel.addColumn("BuildTargets");
836 optionsTableModel.addColumn("ToolChainFamily");
837 optionsTableModel.addColumn("SupportedArch");
838 optionsTableModel.addColumn("ToolCommand");
839 optionsTableModel.addColumn("TagName");
840 optionsTableModel.addColumn("Contents");
841
842 // TableColumn toolFamilyCol = jTable5.getColumnModel().getColumn(1);
843 // JComboBox cb = new JComboBox();
844 // cb.addItem("MSFT");
845 // cb.addItem("GCC");
846 // cb.addItem("CYGWIN");
847 // cb.addItem("INTEL");
848 // toolFamilyCol.setCellEditor(new DefaultCellEditor(cb));
849 Vector<String> vArch = new Vector<String>();
850 vArch.add("IA32");
851 vArch.add("X64");
852 vArch.add("IPF");
853 vArch.add("EBC");
854 vArch.add("ARM");
855 vArch.add("PPC");
856 jTable5.getColumnModel().getColumn(2).setCellEditor(new ListEditor(vArch));
857 jTable5.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
858 jTable5.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
859 public void valueChanged(ListSelectionEvent e) {
860 selectedRow = -1;
861 if (e.getValueIsAdjusting()){
862 return;
863 }
864 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
865 if (lsm.isSelectionEmpty()) {
866 return;
867 }
868 else{
869 selectedRow = lsm.getMinSelectionIndex();
870 }
871 }
872 });
873
874 jTable5.getModel().addTableModelListener(new TableModelListener() {
875 public void tableChanged(TableModelEvent arg0) {
876 // TODO Auto-generated method stub
877 int row = arg0.getFirstRow();
878 TableModel m = (TableModel)arg0.getSource();
879 if (arg0.getType() == TableModelEvent.UPDATE){
880 //ToDo Data Validition check.
881 String targets = m.getValueAt(row, 0) + "";
882 Vector<Object> targetName = new Vector<Object>();
883 String[] sArray = targets.split("( )+");
884 for (int i = 0; i < sArray.length; ++i) {
885 targetName.add(sArray[i]);
886 }
887 String toolChain = m.getValueAt(row, 1) + "";
888 String archs = m.getValueAt(row, 2) + "";
889 Vector<Object> supArch = null;
890 if (archs.length() > 0) {
891 supArch = new Vector<Object>();
892 String[] sArray1 = archs.split("( )+");
893 for (int i = 0; i < sArray1.length; ++i) {
894 supArch.add(sArray1[i]);
895 }
896 }
897
898 String toolCmd = m.getValueAt(row, 3) + "";
899 String tagName = m.getValueAt(row, 4) + "";
900 String contents = m.getValueAt(row, 5) + "";
901 docConsole.setSaved(false);
902 ffc.updateBuildOptionsOpt(row, targetName, toolChain, tagName, toolCmd, supArch, contents);
903 }
904 }
905 });
906 }
907 return jTable5;
908 }
909
910 /**
911 * This method initializes jButton10
912 *
913 * @return javax.swing.JButton
914 */
915 private JButton getJButton10() {
916 if (jButton10 == null) {
917 jButton10 = new JButton();
918 jButton10.setText("Add");
919 jButton10.setPreferredSize(new java.awt.Dimension(90,20));
920 jButton10.addActionListener(new AbstractAction() {
921 /**
922 *
923 */
924 private static final long serialVersionUID = 1L;
925
926 public void actionPerformed(java.awt.event.ActionEvent e) {
927 boolean[] boolArray = {jCheckBox9.isSelected(),jCheckBox10.isSelected(),jCheckBox11.isSelected(),
928 jCheckBox12.isSelected(),jCheckBox13.isSelected(),jCheckBox14.isSelected()};
929 String s = boolToList(boolArray);
930 Object[] o = {jTextField12.getText(), jTextField1.getText(), s,
931 jTextField8.getText(), jTextField13.getText(), jTextField7.getText()};
932 optionsTableModel.addRow(o);
933 docConsole.setSaved(false);
934 ffc.genBuildOptionsOpt(stringToVector(jTextField12.getText()), jTextField1.getText(), jTextField13.getText(), jTextField8.getText(), stringToVector(s), jTextField7.getText());
935 }
936 });
937 }
938 return jButton10;
939 }
940
941 private Vector<Object> stringToVector(String s) {
942 String[] sArray = s.split(" ");
943 Vector<Object> v = null;
944 if (s.length() > 0) {
945 v = new Vector<Object>();
946 for (int i = 0; i < sArray.length; ++i) {
947 v.add(sArray[i]);
948 }
949 }
950 return v;
951 }
952
953 private String boolToList (boolean[] bool) {
954 String s = " ";
955 if (bool[0]) {
956 s += "IA32 ";
957 }
958 if (bool[1]) {
959 s += "IPF ";
960 }
961 if (bool[2]) {
962 s += "X64 ";
963 }
964 if (bool[3]) {
965 s += "EBC ";
966 }
967 if (bool[4]) {
968 s += "ARM ";
969 }
970 if (bool[5]) {
971 s += "PPC ";
972 }
973 if (s == " ") {
974 s += "IA32";
975 }
976 return s.trim();
977 }
978
979 /**
980 * This method initializes jButton11
981 *
982 * @return javax.swing.JButton
983 */
984 private JButton getJButton11() {
985 if (jButton11 == null) {
986 jButton11 = new JButton();
987 jButton11.setText("Delete");
988 jButton11.setPreferredSize(new java.awt.Dimension(90,20));
989 jButton11.addActionListener(new AbstractAction() {
990 /**
991 *
992 */
993 private static final long serialVersionUID = 1L;
994
995 public void actionPerformed(java.awt.event.ActionEvent e) {
996 if (selectedRow >= 0) {
997 optionsTableModel.removeRow(selectedRow);
998 docConsole.setSaved(false);
999 ffc.removeBuildOptionsOpt(selectedRow);
1000 }
1001 }
1002 });
1003 }
1004 return jButton11;
1005 }
1006
1007 /**
1008 * This method initializes jButton17
1009 *
1010 * @return javax.swing.JButton
1011 */
1012 private JButton getJButton17() {
1013 if (jButton17 == null) {
1014 jButton17 = new JButton();
1015 jButton17.setPreferredSize(new java.awt.Dimension(80,20));
1016 jButton17.setText("New");
1017 jButton17.addActionListener(new AbstractAction() {
1018 /**
1019 *
1020 */
1021 private static final long serialVersionUID = 1L;
1022
1023 public void actionPerformed(ActionEvent arg0){
1024 if (jTable.getSelectedRow() < 0) {
1025 return;
1026 }
1027 Object[] o = {"", ""};
1028 ffsAttributesTableModel.addRow(o);
1029 docConsole.setSaved(false);
1030 ffc.genBuildOptionsFfsAttribute(jTable.getSelectedRow(), "", "");
1031 }
1032 });
1033 }
1034 return jButton17;
1035 }
1036
1037 /**
1038 * This method initializes jButton18
1039 *
1040 * @return javax.swing.JButton
1041 */
1042 private JButton getJButton18() {
1043 if (jButton18 == null) {
1044 jButton18 = new JButton();
1045 jButton18.setPreferredSize(new java.awt.Dimension(80,20));
1046 jButton18.setText("Remove");
1047 jButton18.addActionListener(new AbstractAction(){
1048 /**
1049 *
1050 */
1051 private static final long serialVersionUID = 1L;
1052
1053 public void actionPerformed(ActionEvent arg0){
1054 if (jTable.getSelectedRow() < 0) {
1055 return;
1056 }
1057 if (jTable4.getSelectedRow() >= 0){
1058 docConsole.setSaved(false);
1059 ffsAttributesTableModel.removeRow(jTable4.getSelectedRow());
1060 ffc.removeBuildOptionsFfsAttribute(jTable.getSelectedRow(), jTable4.getSelectedRow());
1061 }
1062 }
1063 });
1064 }
1065 return jButton18;
1066 }
1067
1068 /**
1069 * This method initializes jCheckBox9
1070 *
1071 * @return javax.swing.JCheckBox
1072 */
1073 private JCheckBox getJCheckBox9() {
1074 if (jCheckBox9 == null) {
1075 jCheckBox9 = new JCheckBox();
1076 jCheckBox9.setPreferredSize(new java.awt.Dimension(50,20));
1077 jCheckBox9.setText("IA32");
1078 }
1079 return jCheckBox9;
1080 }
1081
1082 /**
1083 * This method initializes jCheckBox10
1084 *
1085 * @return javax.swing.JCheckBox
1086 */
1087 private JCheckBox getJCheckBox10() {
1088 if (jCheckBox10 == null) {
1089 jCheckBox10 = new JCheckBox();
1090 jCheckBox10.setPreferredSize(new java.awt.Dimension(50,20));
1091 jCheckBox10.setText("IPF");
1092 }
1093 return jCheckBox10;
1094 }
1095
1096 /**
1097 * This method initializes jCheckBox11
1098 *
1099 * @return javax.swing.JCheckBox
1100 */
1101 private JCheckBox getJCheckBox11() {
1102 if (jCheckBox11 == null) {
1103 jCheckBox11 = new JCheckBox();
1104 jCheckBox11.setText("X64");
1105 jCheckBox11.setPreferredSize(new java.awt.Dimension(47,20));
1106 }
1107 return jCheckBox11;
1108 }
1109
1110 /**
1111 * This method initializes jCheckBox12
1112 *
1113 * @return javax.swing.JCheckBox
1114 */
1115 private JCheckBox getJCheckBox12() {
1116 if (jCheckBox12 == null) {
1117 jCheckBox12 = new JCheckBox();
1118 jCheckBox12.setPreferredSize(new java.awt.Dimension(50,20));
1119 jCheckBox12.setText("EBC");
1120 }
1121 return jCheckBox12;
1122 }
1123
1124 /**
1125 * This method initializes jCheckBox13
1126 *
1127 * @return javax.swing.JCheckBox
1128 */
1129 private JCheckBox getJCheckBox13() {
1130 if (jCheckBox13 == null) {
1131 jCheckBox13 = new JCheckBox();
1132 jCheckBox13.setPreferredSize(new java.awt.Dimension(55,20));
1133 jCheckBox13.setText("ARM");
1134 }
1135 return jCheckBox13;
1136 }
1137
1138 /**
1139 * This method initializes jCheckBox14
1140 *
1141 * @return javax.swing.JCheckBox
1142 */
1143 private JCheckBox getJCheckBox14() {
1144 if (jCheckBox14 == null) {
1145 jCheckBox14 = new JCheckBox();
1146 jCheckBox14.setPreferredSize(new java.awt.Dimension(50,20));
1147 jCheckBox14.setText("PPC");
1148 }
1149 return jCheckBox14;
1150 }
1151
1152 /**
1153 * This method initializes jTextField12
1154 *
1155 * @return javax.swing.JTextField
1156 */
1157 private JTextField getJTextField12() {
1158 if (jTextField12 == null) {
1159 jTextField12 = new JTextField();
1160 jTextField12.setPreferredSize(new java.awt.Dimension(150,20));
1161 }
1162 return jTextField12;
1163 }
1164
1165 /**
1166 * This method initializes jTextField13
1167 *
1168 * @return javax.swing.JTextField
1169 */
1170 private JTextField getJTextField13() {
1171 if (jTextField13 == null) {
1172 jTextField13 = new JTextField();
1173 jTextField13.setPreferredSize(new java.awt.Dimension(140,20));
1174 }
1175 return jTextField13;
1176 }
1177
1178 /**
1179 * This method initializes jScrollPane
1180 *
1181 * @return javax.swing.JScrollPane
1182 */
1183 private JScrollPane getJScrollPane() {
1184 if (jScrollPane == null) {
1185 jScrollPane = new JScrollPane();
1186 jScrollPane.setPreferredSize(new java.awt.Dimension(150,419));
1187 jScrollPane.setViewportView(getJTable());
1188 }
1189 return jScrollPane;
1190 }
1191
1192 /**
1193 * This method initializes jTable
1194 *
1195 * @return javax.swing.JTable
1196 */
1197 private JTable getJTable() {
1198 if (jTable == null) {
1199 ffsTableModel = new DefaultTableModel();
1200 ffsTableModel.addColumn("FFS Type");
1201 jTable = new JTable(ffsTableModel);
1202 jTable.setShowGrid(false);
1203 jTable.setRowHeight(20);
1204
1205 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
1206 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
1207 public void valueChanged(ListSelectionEvent e) {
1208
1209 if (e.getValueIsAdjusting()){
1210 return;
1211 }
1212 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
1213 if (lsm.isSelectionEmpty()) {
1214 return;
1215 }
1216 else{
1217 int row = lsm.getMinSelectionIndex();
1218 sectionTableModel.setRowCount(0);
1219 sectionsTableModel.setRowCount(0);
1220 subsectionsTableModel.setRowCount(0);
1221 ffsAttributesTableModel.setRowCount(0);
1222 String[] sArray = {"", ""};
1223 LinkedHashMap<String, String> lhm = new LinkedHashMap<String, String>();
1224 ArrayList<String> alSections = new ArrayList<String>();
1225 ArrayList<String> alSection = new ArrayList<String>();
1226 ffc.getBuildOptionsFfs(row, sArray, lhm, alSections, alSection);
1227 jTextField6.setText(sArray[0]);
1228 jTextField.setText(sArray[1]);
1229 for (int i = 0; i < alSection.size(); ++i) {
1230 String[] sectionRow = {alSection.get(i)};
1231 sectionTableModel.addRow(sectionRow);
1232 }
1233 for (int j = 0; j < alSections.size(); ++j) {
1234 String[] sectionsRow = {alSections.get(j)};
1235 sectionsTableModel.addRow(sectionsRow);
1236 }
1237 if (lhm.size() <= 0 ) {
1238 return;
1239 }
1240 Set<String> keySet = lhm.keySet();
1241 Iterator<String> is = keySet.iterator();
1242 while(is.hasNext()) {
1243 String key = is.next();
1244 String[] attribRow = {key, lhm.get(key)};
1245 ffsAttributesTableModel.addRow(attribRow);
1246 }
1247 }
1248 }
1249 });
1250
1251 jTable.getModel().addTableModelListener(new TableModelListener() {
1252 public void tableChanged(TableModelEvent arg0) {
1253 // TODO Auto-generated method stub
1254 int row = arg0.getFirstRow();
1255 TableModel m = (TableModel)arg0.getSource();
1256 if (arg0.getType() == TableModelEvent.UPDATE){
1257 //ToDo Data Validition check.
1258 String id = m.getValueAt(row, 0) + "";
1259
1260 if (id.length() == 0) {
1261 return;
1262 }
1263 docConsole.setSaved(false);
1264 ffc.updateBuildOptionsFfsKey(row, id);
1265 }
1266 }
1267 });
1268 }
1269 return jTable;
1270 }
1271
1272 /**
1273 * This method initializes jScrollPane1
1274 *
1275 * @return javax.swing.JScrollPane
1276 */
1277 private JScrollPane getJScrollPane1() {
1278 if (jScrollPane1 == null) {
1279 jScrollPane1 = new JScrollPane();
1280 jScrollPane1.setPreferredSize(new java.awt.Dimension(500,80));
1281 jScrollPane1.setViewportView(getJTable1());
1282 }
1283 return jScrollPane1;
1284 }
1285
1286 /**
1287 * This method initializes jTable1
1288 *
1289 * @return javax.swing.JTable
1290 */
1291 private JTable getJTable1() {
1292 if (jTable1 == null) {
1293 sectionTableModel = new DefaultTableModel();
1294 sectionTableModel.addColumn("SectionType");
1295
1296 jTable1 = new JTable(sectionTableModel);
1297 jTable1.setRowHeight(20);
1298 JComboBox cb = new JComboBox();
1299 cb.addItem("EFI_SECTION_FREEFORM_SUBTYPE_GUID");
1300 cb.addItem("EFI_SECTION_VERSION");
1301 cb.addItem("EFI_SECTION_USER_INTERFACE");
1302 cb.addItem("EFI_SECTION_DXE_DEPEX");
1303 cb.addItem("EFI_SECTION_PEI_DEPEX");
1304 cb.addItem("EFI_SECTION_PE32");
1305 cb.addItem("EFI_SECTION_PIC");
1306 cb.addItem("EFI_SECTION_TE");
1307 cb.addItem("EFI_SECTION_RAW");
1308 cb.addItem("EFI_SECTION_COMPRESSION");
1309 cb.addItem("EFI_SECTION_GUID_DEFINED");
1310 cb.addItem("EFI_SECTION_COMPATIBILITY16");
1311 cb.addItem("EFI_SECTION_FIRMWARE_VOLUME_IMAGE");
1312 jTable1.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(cb));
1313
1314 jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
1315
1316 jTable1.getModel().addTableModelListener(new TableModelListener() {
1317 public void tableChanged(TableModelEvent arg0) {
1318 // TODO Auto-generated method stub
1319 if (jTable.getSelectedRow() < 0) {
1320 return;
1321 }
1322 int row = arg0.getFirstRow();
1323 TableModel m = (TableModel)arg0.getSource();
1324 if (arg0.getType() == TableModelEvent.UPDATE){
1325 //ToDo Data Validition check.
1326 String type = m.getValueAt(row, 0) + "";
1327 docConsole.setSaved(false);
1328 ffc.updateBuildOptionsFfsSectionsSection(jTable.getSelectedRow(), row, type);
1329 }
1330 }
1331 });
1332 }
1333 return jTable1;
1334 }
1335
1336 /**
1337 * This method initializes jScrollPane3
1338 *
1339 * @return javax.swing.JScrollPane
1340 */
1341 private JScrollPane getJScrollPane3() {
1342 if (jScrollPane3 == null) {
1343 jScrollPane3 = new JScrollPane();
1344 jScrollPane3.setPreferredSize(new java.awt.Dimension(500,90));
1345 jScrollPane3.setViewportView(getJTable3());
1346 }
1347 return jScrollPane3;
1348 }
1349
1350 /**
1351 * This method initializes jTable3
1352 *
1353 * @return javax.swing.JTable
1354 */
1355 private JTable getJTable3() {
1356 if (jTable3 == null) {
1357 subsectionsTableModel = new DefaultTableModel();
1358 subsectionsTableModel.addColumn("SectionType");
1359 jTable3 = new JTable(subsectionsTableModel);
1360 jTable3.setRowHeight(20);
1361 JComboBox cb = new JComboBox();
1362 cb.addItem("EFI_SECTION_FREEFORM_SUBTYPE_GUID");
1363 cb.addItem("EFI_SECTION_VERSION");
1364 cb.addItem("EFI_SECTION_USER_INTERFACE");
1365 cb.addItem("EFI_SECTION_DXE_DEPEX");
1366 cb.addItem("EFI_SECTION_PEI_DEPEX");
1367 cb.addItem("EFI_SECTION_PE32");
1368 cb.addItem("EFI_SECTION_PIC");
1369 cb.addItem("EFI_SECTION_TE");
1370 cb.addItem("EFI_SECTION_RAW");
1371 cb.addItem("EFI_SECTION_COMPRESSION");
1372 cb.addItem("EFI_SECTION_GUID_DEFINED");
1373 cb.addItem("EFI_SECTION_COMPATIBILITY16");
1374 cb.addItem("EFI_SECTION_FIRMWARE_VOLUME_IMAGE");
1375 jTable3.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(cb));
1376 jTable3.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
1377
1378 jTable3.getModel().addTableModelListener(new TableModelListener() {
1379 public void tableChanged(TableModelEvent arg0) {
1380 // TODO Auto-generated method stub
1381 if (jTable.getSelectedRow() < 0 || jTable6.getSelectedRow() < 0) {
1382 return;
1383 }
1384 int row = arg0.getFirstRow();
1385 TableModel m = (TableModel)arg0.getSource();
1386 if (arg0.getType() == TableModelEvent.UPDATE){
1387 //ToDo Data Validition check.
1388 String type = m.getValueAt(row, 0) + "";
1389 docConsole.setSaved(false);
1390 ffc.updateBuildOptionsFfsSectionsSectionsSection(jTable.getSelectedRow(), jTable6.getSelectedRow(), row, type);
1391 }
1392 }
1393 });
1394 }
1395 return jTable3;
1396 }
1397
1398 /**
1399 * This method initializes jTextField
1400 *
1401 * @return javax.swing.JTextField
1402 */
1403 private JTextField getJTextField() {
1404 if (jTextField == null) {
1405 jTextField = new JTextField();
1406 jTextField.setPreferredSize(new java.awt.Dimension(100,20));
1407 jTextField.addFocusListener(new java.awt.event.FocusAdapter() {
1408 public void focusLost(java.awt.event.FocusEvent e) {
1409 if (jTable.getSelectedRow() < 0) {
1410 return;
1411 }
1412 ffc.updateBuildOptionsFfsSectionsType(jTable.getSelectedRow(), jTextField.getText());
1413 }
1414 });
1415 }
1416 return jTextField;
1417 }
1418
1419 /**
1420 * This method initializes jPanel4
1421 *
1422 * @return javax.swing.JPanel
1423 */
1424 private JPanel getJPanel4() {
1425 if (jPanel4 == null) {
1426 jPanel4 = new JPanel();
1427 jPanel4.setPreferredSize(new java.awt.Dimension(100,100));
1428 jPanel4.add(getJButton17(), null);
1429 jPanel4.add(getJButton18(), null);
1430 }
1431 return jPanel4;
1432 }
1433
1434 /**
1435 * This method initializes jButton
1436 *
1437 * @return javax.swing.JButton
1438 */
1439 private JButton getJButton() {
1440 if (jButton == null) {
1441 jButton = new JButton();
1442 jButton.setPreferredSize(new java.awt.Dimension(80,20));
1443 jButton.setText("New");
1444 jButton.addActionListener(new java.awt.event.ActionListener() {
1445 public void actionPerformed(java.awt.event.ActionEvent e) {
1446 if (jTable.getSelectedRow() < 0) {
1447 return;
1448 }
1449 docConsole.setSaved(false);
1450 String[] row = {"EFI_SECTION_RAW"};
1451 sectionTableModel.addRow(row);
1452 ffc.genBuildOptionsFfsSectionsSection(jTable.getSelectedRow(), row[0]);
1453 }
1454 });
1455 }
1456 return jButton;
1457 }
1458
1459 /**
1460 * This method initializes jButton1
1461 *
1462 * @return javax.swing.JButton
1463 */
1464 private JButton getJButton1() {
1465 if (jButton1 == null) {
1466 jButton1 = new JButton();
1467 jButton1.setPreferredSize(new java.awt.Dimension(80,20));
1468 jButton1.setText("Remove");
1469
1470 jButton1.addActionListener(new java.awt.event.ActionListener() {
1471 public void actionPerformed(java.awt.event.ActionEvent e) {
1472 if (jTable.getSelectedRow() < 0 || jTable1.getSelectedRow() < 0) {
1473 return;
1474 }
1475 docConsole.setSaved(false);
1476 sectionTableModel.removeRow(jTable1.getSelectedRow());
1477 ffc.removeBuildOptionsFfsSectionsSection(jTable.getSelectedRow(), jTable1.getSelectedRow());
1478 }
1479 });
1480 }
1481 return jButton1;
1482 }
1483
1484 /**
1485 * This method initializes jButton2
1486 *
1487 * @return javax.swing.JButton
1488 */
1489 private JButton getJButton2() {
1490 if (jButton2 == null) {
1491 jButton2 = new JButton();
1492 jButton2.setPreferredSize(new java.awt.Dimension(80,20));
1493 jButton2.setText("New");
1494 jButton2.addActionListener(new java.awt.event.ActionListener() {
1495 public void actionPerformed(java.awt.event.ActionEvent e) {
1496 if (jTable.getSelectedRow() < 0 || jTable6.getSelectedRow() < 0) {
1497 return;
1498 }
1499 docConsole.setSaved(false);
1500 String[] row = {"EFI_SECTION_RAW"};
1501 subsectionsTableModel.addRow(row);
1502 ffc.genBuildOptionsFfsSectionsSectionsSection(jTable.getSelectedRow(), jTable6.getSelectedRow(), row[0]);
1503
1504 }
1505 });
1506 }
1507 return jButton2;
1508 }
1509
1510 /**
1511 * This method initializes jButton3
1512 *
1513 * @return javax.swing.JButton
1514 */
1515 private JButton getJButton3() {
1516 if (jButton3 == null) {
1517 jButton3 = new JButton();
1518 jButton3.setPreferredSize(new java.awt.Dimension(80,20));
1519 jButton3.setText("Remove");
1520 jButton3.addActionListener(new java.awt.event.ActionListener() {
1521 public void actionPerformed(java.awt.event.ActionEvent e) {
1522 if (jTable.getSelectedRow() < 0 || jTable6.getSelectedRow() < 0 || jTable3.getSelectedRow() < 0) {
1523 return;
1524 }
1525 docConsole.setSaved(false);
1526 subsectionsTableModel.removeRow(jTable3.getSelectedRow());
1527 ffc.removeBuildOptionsFfsSectionsSectionsSection(jTable.getSelectedRow(), jTable6.getSelectedRow(), jTable3.getSelectedRow());
1528 }
1529 });
1530 }
1531 return jButton3;
1532 }
1533
1534 /**
1535 * This method initializes jButton6
1536 *
1537 * @return javax.swing.JButton
1538 */
1539 private JButton getJButton6() {
1540 if (jButton6 == null) {
1541 jButton6 = new JButton();
1542 jButton6.setPreferredSize(new java.awt.Dimension(80,20));
1543 jButton6.setText("New");
1544 jButton6.addActionListener(new java.awt.event.ActionListener() {
1545 public void actionPerformed(java.awt.event.ActionEvent e) {
1546 if (jTable.getSelectedRow() < 0) {
1547 return;
1548 }
1549 docConsole.setSaved(false);
1550 String[] row = {""};
1551 sectionsTableModel.addRow(row);
1552 ffc.genBuildOptionsFfsSectionsSections(jTable.getSelectedRow(), "");
1553 }
1554 });
1555 }
1556 return jButton6;
1557 }
1558
1559 /**
1560 * This method initializes jButton7
1561 *
1562 * @return javax.swing.JButton
1563 */
1564 private JButton getJButton7() {
1565 if (jButton7 == null) {
1566 jButton7 = new JButton();
1567 jButton7.setPreferredSize(new java.awt.Dimension(80,20));
1568 jButton7.setText("Remove");
1569 jButton7.addActionListener(new java.awt.event.ActionListener() {
1570 public void actionPerformed(java.awt.event.ActionEvent e) {
1571 if (jTable.getSelectedRow() < 0 || jTable6.getSelectedRow() < 0) {
1572 return;
1573 }
1574 docConsole.setSaved(false);
1575 sectionsTableModel.removeRow(jTable6.getSelectedRow());
1576 ffc.removeBuildOptionsFfsSectionsSections(jTable.getSelectedRow(), jTable6.getSelectedRow());
1577 }
1578 });
1579 }
1580 return jButton7;
1581 }
1582
1583 /**
1584 * This method initializes jScrollPane4
1585 *
1586 * @return javax.swing.JScrollPane
1587 */
1588 private JScrollPane getJScrollPane4() {
1589 if (jScrollPane4 == null) {
1590 jScrollPane4 = new JScrollPane();
1591 jScrollPane4.setPreferredSize(new java.awt.Dimension(500,80));
1592 jScrollPane4.setViewportView(getJTable6());
1593 }
1594 return jScrollPane4;
1595 }
1596
1597 /**
1598 * This method initializes jTable6
1599 *
1600 * @return javax.swing.JTable
1601 */
1602 private JTable getJTable6() {
1603 if (jTable6 == null) {
1604 sectionsTableModel = new DefaultTableModel();
1605 sectionsTableModel.addColumn("EncapsulationType");
1606 jTable6 = new JTable(sectionsTableModel);
1607 jTable6.setRowHeight(20);
1608 jTable6.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
1609 jTable6.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
1610 public void valueChanged(ListSelectionEvent e) {
1611 if (e.getValueIsAdjusting()){
1612 return;
1613 }
1614 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
1615 if (lsm.isSelectionEmpty()) {
1616 return;
1617 }
1618 else{
1619 int sectionsRow = lsm.getMinSelectionIndex();
1620 if (jTable.getSelectedRow() < 0) {
1621 return;
1622 }
1623 subsectionsTableModel.setRowCount(0);
1624 ArrayList<String> al = new ArrayList<String>();
1625 ffc.getBuildOptionsFfsSectionsSectionsSection(jTable.getSelectedRow(), sectionsRow, al);
1626 for (int i = 0; i < al.size(); ++i) {
1627 String[] subsectionRow = {al.get(i)};
1628 subsectionsTableModel.addRow(subsectionRow);
1629 }
1630 }
1631 }
1632 });
1633
1634 jTable6.getModel().addTableModelListener(new TableModelListener() {
1635 public void tableChanged(TableModelEvent arg0) {
1636 // TODO Auto-generated method stub
1637 int row = arg0.getFirstRow();
1638 TableModel m = (TableModel)arg0.getSource();
1639 if (arg0.getType() == TableModelEvent.UPDATE){
1640 //ToDo Data Validition check.
1641 String encapType = m.getValueAt(row, 0) + "";
1642 docConsole.setSaved(false);
1643 ffc.updateBuildOptionsFfsSectionsSections(jTable.getSelectedRow(), row, encapType);
1644 }
1645 }
1646 });
1647 }
1648 return jTable6;
1649 }
1650
1651 /**
1652 * This method initializes jButton12
1653 *
1654 * @return javax.swing.JButton
1655 */
1656 private JButton getJButton12() {
1657 if (jButton12 == null) {
1658 jButton12 = new JButton();
1659 jButton12.setPreferredSize(new Dimension(90, 20));
1660 jButton12.setText("Browse");
1661 jButton12.addActionListener(new AbstractAction() {
1662 private static final long serialVersionUID = 1L;
1663
1664 public void actionPerformed(ActionEvent arg0) {
1665 //
1666 // Select files from current workspace
1667 //
1668 String dirPrefix = System.getenv("WORKSPACE");
1669 JFileChooser chooser = new JFileChooser(dirPrefix);
1670 File theFile = null;
1671 String headerDest = null;
1672
1673 chooser.setMultiSelectionEnabled(false);
1674 chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
1675 int retval = chooser.showOpenDialog(frame);
1676 if (retval == JFileChooser.APPROVE_OPTION) {
1677
1678 theFile = chooser.getSelectedFile();
1679 String file = theFile.getPath();
1680 if (!file.startsWith(dirPrefix)) {
1681 JOptionPane.showMessageDialog(frame, "You can only select files in current package!");
1682 return;
1683 }
1684 }
1685 else {
1686 return;
1687 }
1688
1689 headerDest = theFile.getPath();
1690 jTextField2.setText(headerDest.substring(dirPrefix.length()).replace('\\', '/'));
1691
1692 }
1693
1694 });
1695 }
1696 return jButton12;
1697 }
1698
1699 /**
1700 * This method initializes jTextField1
1701 *
1702 * @return javax.swing.JTextField
1703 */
1704 private JTextField getJTextField1() {
1705 if (jTextField1 == null) {
1706 jTextField1 = new JTextField();
1707 jTextField1.setPreferredSize(new java.awt.Dimension(85,20));
1708 }
1709 return jTextField1;
1710 }
1711
1712 /**
1713 * @param args
1714 */
1715 public static void main(String[] args) {
1716 // TODO Auto-generated method stub
1717 new FpdBuildOptions().setVisible(true);
1718 }
1719
1720 /**
1721 * This is the default constructor
1722 */
1723 public FpdBuildOptions() {
1724 super();
1725 initialize();
1726 this.setVisible(true);
1727 }
1728
1729 public FpdBuildOptions(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {
1730 this();
1731 ffc = new FpdFileContents(fpd);
1732 init(ffc);
1733 }
1734
1735 public FpdBuildOptions(OpeningPlatformType opt) {
1736 this(opt.getXmlFpd());
1737 docConsole = opt;
1738 }
1739
1740 private void init(FpdFileContents ffc) {
1741 initOptionTable();
1742 initAntTaskTable();
1743 initFfsTable();
1744 this.addInternalFrameListener(new InternalFrameAdapter(){
1745 public void internalFrameDeactivated(InternalFrameEvent e){
1746 if (jTable.isEditing()) {
1747 jTable.getCellEditor().stopCellEditing();
1748 }
1749 if (jTable1.isEditing()) {
1750 jTable1.getCellEditor().stopCellEditing();
1751 }
1752 if (jTable2.isEditing()) {
1753 jTable2.getCellEditor().stopCellEditing();
1754 }
1755 if (jTable3.isEditing()) {
1756 jTable3.getCellEditor().stopCellEditing();
1757 }
1758 if (jTable4.isEditing()) {
1759 jTable4.getCellEditor().stopCellEditing();
1760 }
1761 if (jTable5.isEditing()) {
1762 jTable5.getCellEditor().stopCellEditing();
1763 }
1764 }
1765 });
1766 }
1767
1768 private void initOptionTable() {
1769 if (ffc.getBuildOptionsOptCount() == 0) {
1770 //ToDo get default options from *.txt file
1771 return;
1772 }
1773 String[][] saa = new String[ffc.getBuildOptionsOptCount()][6];
1774 ffc.getBuildOptionsOpts(saa);
1775 for (int i = 0; i < saa.length; ++i) {
1776 optionsTableModel.addRow(saa[i]);
1777 }
1778 }
1779
1780 private void initAntTaskTable() {
1781 if (ffc.getBuildOptionsUserDefAntTaskCount() == 0) {
1782 return;
1783 }
1784 String[][] saa = new String[ffc.getBuildOptionsUserDefAntTaskCount()][3];
1785 ffc.getBuildOptionsUserDefAntTasks(saa);
1786 for (int i = 0; i < saa.length; ++i) {
1787 antTaskTableModel.addRow(saa[i]);
1788 }
1789 }
1790
1791 private void initFfsTable(){
1792 int ffsCount = ffc.getBuildOptionsFfsCount();
1793 if (ffsCount < 0) {
1794 return;
1795 }
1796 String[][] saa = new String[ffsCount][1];
1797 ffc.getBuildOptionsFfsKey(saa);
1798 for (int i = 0; i < saa.length; ++i) {
1799 ffsTableModel.addRow(saa[i]);
1800 }
1801 }
1802 /**
1803 * This method initializes this
1804 *
1805 * @return void
1806 */
1807 private void initialize() {
1808 this.setSize(722, 577);
1809 this.setTitle("FPD Build Options");
1810 this.setContentPane(getJContentPane());
1811 }
1812
1813 /**
1814 * This method initializes jContentPane
1815 *
1816 * @return javax.swing.JPanel
1817 */
1818 private JPanel getJContentPane() {
1819 if (jContentPane == null) {
1820 jContentPane = new JPanel();
1821 jContentPane.setLayout(new BorderLayout());
1822 jContentPane.add(getJPanel(), java.awt.BorderLayout.SOUTH);
1823 jContentPane.add(getJPanel1(), java.awt.BorderLayout.NORTH);
1824 jContentPane.add(getJPanel2(), java.awt.BorderLayout.WEST);
1825 jContentPane.add(getJPanel3(), java.awt.BorderLayout.EAST);
1826 jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);
1827 }
1828 return jContentPane;
1829 }
1830
1831 } // @jve:decl-index=0:visual-constraint="10,10"