3 The file is used to create, update PCD of MSA/MBD file
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
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.
15 package org
.tianocore
.frameworkwizard
.module
.ui
;
17 import java
.awt
.Dimension
;
18 import java
.awt
.event
.ActionEvent
;
19 import java
.awt
.event
.ComponentEvent
;
20 import java
.awt
.event
.MouseEvent
;
21 import java
.util
.Vector
;
23 import javax
.swing
.JButton
;
24 import javax
.swing
.JPanel
;
25 import javax
.swing
.JScrollPane
;
26 import javax
.swing
.JTable
;
27 import javax
.swing
.ListSelectionModel
;
28 import javax
.swing
.event
.ListSelectionEvent
;
30 import org
.tianocore
.PcdCodedDocument
;
31 import org
.tianocore
.PcdItemTypes
;
32 import org
.tianocore
.ModuleSurfaceAreaDocument
.ModuleSurfaceArea
;
33 import org
.tianocore
.PcdCodedDocument
.PcdCoded
;
34 import org
.tianocore
.PcdCodedDocument
.PcdCoded
.PcdEntry
;
35 import org
.tianocore
.frameworkwizard
.common
.DataType
;
36 import org
.tianocore
.frameworkwizard
.common
.IDefaultTableModel
;
37 import org
.tianocore
.frameworkwizard
.common
.Log
;
38 import org
.tianocore
.frameworkwizard
.common
.Tools
;
39 import org
.tianocore
.frameworkwizard
.common
.Identifications
.OpeningModuleType
;
40 import org
.tianocore
.frameworkwizard
.common
.ui
.IFrame
;
41 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
42 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PcdCoded
.PcdCodedIdentification
;
43 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PcdCoded
.PcdCodedVector
;
44 import org
.tianocore
.frameworkwizard
.module
.ui
.dialog
.PCDsDlg
;
47 The class is used to create, update PCD of MSA/MBD file
48 It extends IInternalFrame
53 public class ModulePCDs
extends IInternalFrame
{
56 /// Define class Serial Version UID
58 private static final long serialVersionUID
= 2227717658188438696L;
61 //Define class members
63 private JPanel jContentPane
= null;
65 private JButton jButtonAdd
= null;
67 private JButton jButtonRemove
= null;
69 private JButton jButtonUpdate
= null;
71 private JScrollPane jScrollPane
= null;
73 private JScrollPane jScrollPaneTable
= null;
75 private JTable jTable
= null;
80 private OpeningModuleType omt
= null;
82 private ModuleSurfaceArea msa
= null;
84 private PcdCodedDocument
.PcdCoded pcds
= null;
86 private PcdCodedIdentification id
= null;
88 private PcdCodedVector vid
= new PcdCodedVector();
90 private IDefaultTableModel model
= null;
92 private int selectedRow
= -1;
95 This method initializes jButtonAdd
97 @return javax.swing.JButton jButtonAdd
100 private JButton
getJButtonAdd() {
101 if (jButtonAdd
== null) {
102 jButtonAdd
= new JButton();
103 jButtonAdd
.setBounds(new java
.awt
.Rectangle(230, 245, 80, 20));
104 jButtonAdd
.setText("Add");
105 jButtonAdd
.addActionListener(this);
106 jButtonAdd
.setPreferredSize(new java
.awt
.Dimension(80, 20));
112 This method initializes jButtonRemove
114 @return javax.swing.JButton jButtonRemove
117 private JButton
getJButtonRemove() {
118 if (jButtonRemove
== null) {
119 jButtonRemove
= new JButton();
120 jButtonRemove
.setBounds(new java
.awt
.Rectangle(400, 245, 80, 20));
121 jButtonRemove
.setText("Remove");
122 jButtonRemove
.addActionListener(this);
123 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(80, 20));
125 return jButtonRemove
;
129 This method initializes jButtonUpdate
131 @return javax.swing.JButton jButtonUpdate
134 private JButton
getJButtonUpdate() {
135 if (jButtonUpdate
== null) {
136 jButtonUpdate
= new JButton();
137 jButtonUpdate
.setBounds(new java
.awt
.Rectangle(315, 245, 80, 20));
138 jButtonUpdate
.setPreferredSize(new java
.awt
.Dimension(80, 20));
139 jButtonUpdate
.setText("Edit");
140 jButtonUpdate
.addActionListener(this);
142 return jButtonUpdate
;
146 This method initializes jScrollPane
148 @return javax.swing.JScrollPane
150 private JScrollPane
getJScrollPane() {
151 if (jScrollPane
== null) {
152 jScrollPane
= new JScrollPane();
153 jScrollPane
.setViewportView(getJContentPane());
159 This method initializes jScrollPaneTable
161 @return javax.swing.JScrollPane
163 private JScrollPane
getJScrollPaneTable() {
164 if (jScrollPaneTable
== null) {
165 jScrollPaneTable
= new JScrollPane();
166 jScrollPaneTable
.setBounds(new java
.awt
.Rectangle(15, 10, 470, 420));
167 jScrollPaneTable
.setPreferredSize(new Dimension(470, 420));
168 jScrollPaneTable
.setViewportView(getJTable());
170 return jScrollPaneTable
;
174 This method initializes jTable
176 @return javax.swing.JTable
178 private JTable
getJTable() {
179 if (jTable
== null) {
180 jTable
= new JTable();
181 model
= new IDefaultTableModel();
182 jTable
= new JTable(model
);
183 jTable
.setRowHeight(20);
185 model
.addColumn("Name");
186 model
.addColumn("Type");
187 model
.addColumn("Value");
189 jTable
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
190 jTable
.getSelectionModel().addListSelectionListener(this);
191 jTable
.getModel().addTableModelListener(this);
192 jTable
.addMouseListener(this);
197 public static void main(String
[] args
) {
202 This method initializes this
205 private void init() {
206 this.setSize(500, 515);
207 this.setContentPane(getJScrollPane());
208 this.setTitle("Pcd Coded");
212 This method initializes this
213 Fill values to all fields if these values are not empty
215 @param inPackageDependencies
218 private void init(PcdCoded inPcdCodeds
) {
220 this.pcds
= inPcdCodeds
;
222 if (this.pcds
!= null) {
223 if (this.pcds
.getPcdEntryList().size() > 0) {
224 for (int index
= 0; index
< this.pcds
.getPcdEntryList().size(); index
++) {
225 String arg0
= pcds
.getPcdEntryList().get(index
).getCName();
226 String arg1
= pcds
.getPcdEntryList().get(index
).getTokenSpaceGuidCName();
228 String arg2
= pcds
.getPcdEntryList().get(index
).getFeatureFlag();
229 Vector
<String
> arg3
= Tools
.convertListToVector(pcds
.getPcdEntryList().get(index
).getSupArchList());
231 String arg4
= pcds
.getPcdEntryList().get(index
).getDefaultValue();
232 String arg5
= pcds
.getPcdEntryList().get(index
).getHelpText();
234 if (pcds
.getPcdEntryList().get(index
).getPcdItemType() != null) {
235 arg6
= pcds
.getPcdEntryList().get(index
).getPcdItemType().toString();
238 id
= new PcdCodedIdentification(arg0
, arg1
, arg2
, arg3
, arg4
, arg5
, arg6
);
247 This is the default constructor
250 public ModulePCDs() {
253 this.setVisible(true);
257 This is the override edit constructor
259 @param inPcds The input data of PCDsDocument.PCDs
262 public ModulePCDs(OpeningModuleType inOmt
) {
265 this.msa
= omt
.getXmlMsa();
266 init(msa
.getPcdCoded());
267 this.setVisible(true);
271 This method initializes jContentPane
273 @return javax.swing.JPanel jContentPane
276 private JPanel
getJContentPane() {
277 if (jContentPane
== null) {
278 jContentPane
= new JPanel();
279 jContentPane
.setLayout(null);
280 jContentPane
.setPreferredSize(new java
.awt
.Dimension(490, 490));
282 jContentPane
.add(getJButtonAdd(), null);
283 jContentPane
.add(getJButtonRemove(), null);
284 jContentPane
.add(getJButtonUpdate(), null);
285 jContentPane
.add(getJScrollPaneTable(), null);
290 private void showEdit(int index
) {
291 PCDsDlg dlg
= new PCDsDlg(vid
.getPcdCoded(index
), new IFrame());
292 int result
= dlg
.showDialog();
293 if (result
== DataType
.RETURN_TYPE_OK
) {
295 this.vid
.addPcdCoded(dlg
.getId());
297 this.vid
.setPcdCoded(dlg
.getId(), index
);
303 if (result
== DataType
.RETURN_TYPE_CANCEL
) {
312 private void clearAll() {
314 for (int index
= model
.getRowCount() - 1; index
>= 0; index
--) {
315 model
.removeRow(index
);
321 Read content of vector and put then into table
324 private void showTable() {
327 if (vid
.size() > 0) {
328 for (int index
= 0; index
< vid
.size(); index
++) {
329 model
.addRow(vid
.toStringVector(index
));
332 this.jTable
.repaint();
333 this.jTable
.updateUI();
337 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
339 * Override actionPerformed to listen all actions
342 public void actionPerformed(ActionEvent arg0
) {
343 if (arg0
.getSource() == jButtonAdd
) {
346 if (arg0
.getSource() == jButtonUpdate
) {
347 if (this.selectedRow
< 0) {
348 Log
.err("Please select one record first.");
351 showEdit(selectedRow
);
354 if (arg0
.getSource() == jButtonRemove
) {
355 if (jTable
.isEditing()) {
356 jTable
.getCellEditor().stopCellEditing();
358 if (selectedRow
> -1) {
359 this.model
.removeRow(selectedRow
);
360 this.vid
.removePcdCoded(selectedRow
);
368 Save all components of PCDs
369 if exists pcds, set the value directly
370 if not exists pcds, new an instance first
375 int count
= this.vid
.size();
377 this.pcds
= PcdCoded
.Factory
.newInstance();
379 for (int index
= 0; index
< count
; index
++) {
380 PcdEntry p
= PcdEntry
.Factory
.newInstance();
381 if (!isEmpty(vid
.getPcdCoded(index
).getName())) {
382 p
.setCName(vid
.getPcdCoded(index
).getName());
384 if (!isEmpty(vid
.getPcdCoded(index
).getGuid())) {
385 p
.setTokenSpaceGuidCName(vid
.getPcdCoded(index
).getGuid());
387 if (!isEmpty(vid
.getPcdCoded(index
).getFeatureFlag())) {
388 p
.setFeatureFlag(vid
.getPcdCoded(index
).getFeatureFlag());
390 if (vid
.getPcdCoded(index
).getSupArchList() != null
391 && vid
.getPcdCoded(index
).getSupArchList().size() > 0) {
392 p
.setSupArchList(vid
.getPcdCoded(index
).getSupArchList());
394 if (!isEmpty(vid
.getPcdCoded(index
).getValue())) {
395 p
.setDefaultValue(vid
.getPcdCoded(index
).getValue());
397 if (!isEmpty(vid
.getPcdCoded(index
).getHelp())) {
398 p
.setHelpText(vid
.getPcdCoded(index
).getHelp());
400 if (!isEmpty(vid
.getPcdCoded(index
).getType())) {
401 p
.setPcdItemType(PcdItemTypes
.Enum
.forString(vid
.getPcdCoded(index
).getType()));
403 this.pcds
.addNewPcdEntry();
404 this.pcds
.setPcdEntryArray(pcds
.getPcdEntryList().size() - 1, p
);
408 this.msa
.setPcdCoded(pcds
);
409 this.omt
.setSaved(false);
410 } catch (Exception e
) {
411 Log
.err("Update Hobs", e
.getMessage());
416 * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)
419 public void valueChanged(ListSelectionEvent arg0
) {
420 if (arg0
.getValueIsAdjusting()) {
423 ListSelectionModel lsm
= (ListSelectionModel
) arg0
.getSource();
424 if (lsm
.isSelectionEmpty()) {
427 selectedRow
= lsm
.getMinSelectionIndex();
432 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
435 public void mouseClicked(MouseEvent arg0
) {
436 if (arg0
.getClickCount() == 2) {
437 if (this.selectedRow
< 0) {
440 showEdit(selectedRow
);
446 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
448 * Override componentResized to resize all components when frame's size is changed
450 public void componentResized(ComponentEvent arg0
) {
451 int intCurrentWidth
= this.getJContentPane().getWidth();
452 int intCurrentHeight
= this.getJContentPane().getHeight();
453 int intPreferredWidth
= this.getJContentPane().getPreferredSize().width
;
454 int intPreferredHeight
= this.getJContentPane().getPreferredSize().height
;
456 resizeComponent(this.jScrollPaneTable
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
, intPreferredHeight
);
457 relocateComponent(this.jButtonAdd
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
, intPreferredHeight
,
458 DataType
.SPACE_TO_RIGHT_FOR_ADD_BUTTON
, DataType
.SPACE_TO_BOTTOM_FOR_ADD_BUTTON
);
459 relocateComponent(this.jButtonRemove
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
, intPreferredHeight
,
460 DataType
.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON
, DataType
.SPACE_TO_BOTTOM_FOR_REMOVE_BUTTON
);
461 relocateComponent(this.jButtonUpdate
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
, intPreferredHeight
,
462 DataType
.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON
, DataType
.SPACE_TO_BOTTOM_FOR_UPDATE_BUTTON
);