]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/SystemTablesDlg.java
Added some additional comments in the files, as well as fixed some of them.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / SystemTablesDlg.java
CommitLineData
06a19cee 1/** @file\r
5b38b75b 2 <<The file is used to create, update SystemTable in the MSA file>>\r
3 \r
4 <<This dialog is used to add or edit a System Table entry in the MSA file.>>\r
06a19cee 5 \r
6 Copyright (c) 2006, Intel Corporation\r
7 All rights reserved. This program and the accompanying materials\r
8 are licensed and made available under the terms and conditions of the BSD License\r
9 which accompanies this distribution. The full text of the license may be found at\r
10 http://opensource.org/licenses/bsd-license.php\r
11 \r
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14 \r
15 **/\r
16package org.tianocore.frameworkwizard.module.ui.dialog;\r
17\r
18import java.awt.event.ActionEvent;\r
19import java.util.Vector;\r
20\r
21import javax.swing.JButton;\r
22import javax.swing.JComboBox;\r
23import javax.swing.JLabel;\r
24import javax.swing.JPanel;\r
25import javax.swing.JScrollPane;\r
26import javax.swing.JTextField;\r
5b38b75b 27import javax.swing.JTextArea;\r
06a19cee 28\r
29import org.tianocore.frameworkwizard.common.DataType;\r
30import org.tianocore.frameworkwizard.common.DataValidation;\r
31import org.tianocore.frameworkwizard.common.EnumerationData;\r
32import org.tianocore.frameworkwizard.common.Log;\r
33import org.tianocore.frameworkwizard.common.Tools;\r
34import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
35import org.tianocore.frameworkwizard.common.ui.IDialog;\r
36import org.tianocore.frameworkwizard.common.ui.IFrame;\r
37import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
38import org.tianocore.frameworkwizard.module.Identifications.SystemTables.SystemTablesIdentification;\r
39import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
40\r
41/**\r
9e857952 42 * The class is used to create, update SystemTables section of the MSA file\r
5b38b75b 43 * \r
9e857952 44 * It extends IDialog\r
5b38b75b 45 * \r
46 */\r
47public class SystemTablesDlg extends IDialog {\r
06a19cee 48\r
a929458e 49 // /\r
50 // / Define class Serial Version UID\r
51 // /\r
52 private static final long serialVersionUID = 7488769180379442276L;\r
06a19cee 53\r
a929458e 54 //\r
55 // Define class members\r
56 //\r
57 private JPanel jContentPane = null;\r
06a19cee 58\r
a929458e 59 private JLabel jLabelEntry = null;\r
06a19cee 60\r
a929458e 61 private JLabel jLabelUsage = null;\r
06a19cee 62\r
a929458e 63 private JComboBox jComboBoxUsage = null;\r
06a19cee 64\r
a929458e 65 private StarLabel jStarLabel1 = null;\r
06a19cee 66\r
a929458e 67 private StarLabel jStarLabel2 = null;\r
06a19cee 68\r
a929458e 69 private JComboBox jComboBoxGuidC_Name = null;\r
06a19cee 70\r
a929458e 71 private JLabel jLabelFeatureFlag = null;\r
06a19cee 72\r
a929458e 73 private JTextField jTextFieldFeatureFlag = null;\r
06a19cee 74\r
a929458e 75 private JLabel jLabelArch = null;\r
06a19cee 76\r
a929458e 77 private JScrollPane jScrollPane = null;\r
06a19cee 78\r
a929458e 79 private JLabel jLabelHelpText = null;\r
06a19cee 80\r
a929458e 81 private JTextArea jTextAreaHelpText = null;\r
06a19cee 82\r
a929458e 83 private JScrollPane jScrollPaneHelpText = null;\r
06a19cee 84\r
a929458e 85 private ArchCheckBox jArchCheckBox = null;\r
06a19cee 86\r
a929458e 87 private JButton jButtonOk = null;\r
06a19cee 88\r
a929458e 89 private JButton jButtonCancel = null;\r
06a19cee 90\r
a929458e 91 //\r
92 // Not used by UI\r
93 //\r
94 private SystemTablesIdentification id = null;\r
95\r
96 private EnumerationData ed = new EnumerationData();\r
97\r
98 private WorkspaceTools wt = new WorkspaceTools();\r
99\r
100 /**\r
101 * This method initializes jComboBoxGuidC_Name\r
102 * \r
103 * @return javax.swing.JComboBox jComboBoxGuidC_Name\r
104 * \r
105 */\r
106 private JComboBox getJComboBoxGuidC_Name() {\r
107 if (jComboBoxGuidC_Name == null) {\r
108 jComboBoxGuidC_Name = new JComboBox();\r
3f62225f 109 jComboBoxGuidC_Name.setBounds(new java.awt.Rectangle(168, 12, 320, 20));\r
a929458e 110 jComboBoxGuidC_Name.setPreferredSize(new java.awt.Dimension(320, 20));\r
111 jComboBoxGuidC_Name.setToolTipText("Select the GUID C Name of the System Table");\r
112 }\r
113 return jComboBoxGuidC_Name;\r
114 }\r
06a19cee 115\r
a929458e 116 /**\r
117 * This method initializes jComboBoxUsage\r
118 * \r
119 * @return javax.swing.JComboBox jComboBoxUsage\r
120 * \r
121 */\r
122 private JComboBox getJComboBoxUsage() {\r
123 if (jComboBoxUsage == null) {\r
124 jComboBoxUsage = new JComboBox();\r
3f62225f 125 jComboBoxUsage.setBounds(new java.awt.Rectangle(168, 37, 320, 20));\r
a929458e 126 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
127 jComboBoxUsage\r
128 .setToolTipText("<html><table>"\r
129 + "<tr><td>ALWAYS_CONSUMED</td><td>Module requires a GUIDed entry in the system table</td></tr>"\r
130 + "<tr><td>SOMETIMES_CONSUMED</td><td>Module consumes a GUIDed entry in the system<br>table if it is present</td>"\r
131 + "</tr><tr><td>ALWAYS_PRODUCED</td><td>Module always produces a GUIDed entry in the system table</td></tr>"\r
132 + "<tr><td>SOMETIMES_PRODUCED</td><td>Module produces a GUIDed entry in the system table<br>for some of its execution flows.</td></tr>"\r
133 + "</table></html>");\r
134 }\r
135 return jComboBoxUsage;\r
136 }\r
06a19cee 137\r
a929458e 138 /**\r
139 * This method initializes jTextFieldFeatureFlag\r
140 * \r
141 * @return javax.swing.JTextField\r
142 */\r
143 private JTextField getJTextFieldFeatureFlag() {\r
144 if (jTextFieldFeatureFlag == null) {\r
145 jTextFieldFeatureFlag = new JTextField();\r
3f62225f 146 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 107, 320, 20));\r
a929458e 147 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
148 jTextFieldFeatureFlag.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");\r
149 }\r
150 return jTextFieldFeatureFlag;\r
06a19cee 151 }\r
a929458e 152\r
153 /**\r
154 * This method initializes jScrollPane\r
155 * \r
156 * @return javax.swing.JScrollPane\r
157 */\r
158 private JScrollPane getJScrollPane() {\r
159 if (jScrollPane == null) {\r
160 jScrollPane = new JScrollPane();\r
161 jScrollPane.setViewportView(getJContentPane());\r
162 }\r
163 return jScrollPane;\r
06a19cee 164 }\r
a929458e 165\r
166 /**\r
167 * This method initializes jTextAreaHelpText\r
168 * \r
169 * @return javax.swing.JTextArea\r
170 * \r
171 */\r
172 private JTextArea getJTextAreaHelpText() {\r
173 if (jTextAreaHelpText == null) {\r
174 jTextAreaHelpText = new JTextArea();\r
175 jTextAreaHelpText.setLineWrap(true);\r
176 jTextAreaHelpText.setWrapStyleWord(true);\r
177 }\r
178 return jTextAreaHelpText;\r
06a19cee 179 }\r
a929458e 180\r
181 /**\r
182 * This method initializes jScrollPaneHelpText\r
183 * \r
184 * @returns javax.swing.JScrollPane jScrollPaneHelpText\r
185 */\r
186 private JScrollPane getJScrollPaneHelpText() {\r
187 if (jScrollPaneHelpText == null) {\r
188 jScrollPaneHelpText = new JScrollPane();\r
189 jScrollPaneHelpText.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
190 jScrollPaneHelpText.setSize(new java.awt.Dimension(320, 40));\r
191 jScrollPaneHelpText.setPreferredSize(new java.awt.Dimension(320, 40));\r
3f62225f 192 jScrollPaneHelpText.setLocation(new java.awt.Point(168, 62));\r
a929458e 193 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
194 }\r
195 return jScrollPaneHelpText;\r
06a19cee 196 }\r
a929458e 197\r
198 /**\r
199 * This method initializes jButtonOk\r
200 * \r
201 * @return javax.swing.JButton\r
202 * \r
203 */\r
204 private JButton getJButtonOk() {\r
205 if (jButtonOk == null) {\r
206 jButtonOk = new JButton();\r
3f62225f 207 jButtonOk.setBounds(new java.awt.Rectangle(290, 162, 90, 20));\r
a929458e 208 jButtonOk.setText("Ok");\r
209 jButtonOk.addActionListener(this);\r
210 }\r
211 return jButtonOk;\r
06a19cee 212 }\r
a929458e 213\r
214 /**\r
215 * This method initializes jButtonCancel\r
216 * \r
217 * @return javax.swing.JButton\r
218 * \r
219 */\r
220 private JButton getJButtonCancel() {\r
221 if (jButtonCancel == null) {\r
222 jButtonCancel = new JButton();\r
3f62225f 223 jButtonCancel.setBounds(new java.awt.Rectangle(390, 162, 90, 20));\r
a929458e 224 jButtonCancel.setText("Cancel");\r
225 jButtonCancel.addActionListener(this);\r
226 }\r
227 return jButtonCancel;\r
06a19cee 228 }\r
a929458e 229\r
230 public static void main(String[] args) {\r
231\r
06a19cee 232 }\r
a929458e 233\r
234 /**\r
235 * This method initializes this\r
236 * \r
237 */\r
238 private void init() {\r
3f62225f 239 this.setSize(505, 235);\r
a929458e 240 this.setContentPane(getJScrollPane());\r
241 this.setTitle("System Tables");\r
242 initFrame();\r
243 this.setViewMode(false);\r
244 this.centerWindow();\r
06a19cee 245 }\r
a929458e 246\r
247 /**\r
248 * This method initializes this Fill values to all fields if these values are\r
249 * not empty\r
250 * \r
251 * @param inSystemTablesId\r
252 * \r
253 */\r
254 private void init(SystemTablesIdentification inSystemTablesId) {\r
255 init();\r
256 this.id = inSystemTablesId;\r
257\r
258 if (this.id != null) {\r
259 this.jComboBoxGuidC_Name.setSelectedItem(id.getName());\r
260 this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
261 this.jTextAreaHelpText.setText(id.getHelp());\r
262 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
263 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
264 }\r
06a19cee 265 }\r
a929458e 266\r
267 /**\r
268 * This is the override edit constructor\r
269 * \r
270 * @param inBootModesIdentification\r
271 * @param iFrame\r
272 * \r
273 */\r
274 public SystemTablesDlg(SystemTablesIdentification inSystemTablesIdentification, IFrame iFrame) {\r
275 super(iFrame, true);\r
276 init(inSystemTablesIdentification);\r
06a19cee 277 }\r
a929458e 278\r
279 /**\r
280 * Disable all components when the mode is view\r
281 * \r
282 * @param isView\r
283 * true - The view mode; false - The non-view mode\r
284 * \r
285 */\r
286 public void setViewMode(boolean isView) {\r
287 if (isView) {\r
288 this.jComboBoxUsage.setEnabled(!isView);\r
289 }\r
06a19cee 290 }\r
a929458e 291\r
292 /**\r
293 * This method initializes jContentPane\r
294 * \r
295 * @return javax.swing.JPanel jContentPane\r
296 * \r
297 */\r
298 private JPanel getJContentPane() {\r
299 if (jContentPane == null) {\r
300 jStarLabel1 = new StarLabel();\r
3f62225f 301 jStarLabel1.setLocation(new java.awt.Point(2, 12));\r
a929458e 302 jLabelEntry = new JLabel();\r
303 jLabelEntry.setText("Table's GUID C Name");\r
3f62225f 304 jLabelEntry.setBounds(new java.awt.Rectangle(12, 12, 155, 20));\r
a929458e 305 jStarLabel2 = new StarLabel();\r
3f62225f 306 jStarLabel2.setLocation(new java.awt.Point(2, 37));\r
a929458e 307 jLabelUsage = new JLabel();\r
308 jLabelUsage.setText("Usage");\r
3f62225f 309 jLabelUsage.setBounds(new java.awt.Rectangle(12, 37, 155, 20));\r
a929458e 310 jLabelHelpText = new JLabel();\r
3f62225f 311 jLabelHelpText.setBounds(new java.awt.Rectangle(12, 62, 155, 20));\r
a929458e 312 jLabelHelpText.setText("Help Text");\r
313 jLabelFeatureFlag = new JLabel();\r
3f62225f 314 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 107, 155, 20));\r
a929458e 315 jLabelFeatureFlag.setText("Feature Flag Expression");\r
316 jLabelArch = new JLabel();\r
3f62225f 317 jLabelArch.setBounds(new java.awt.Rectangle(12, 130, 155, 20));\r
a929458e 318 jLabelArch.setText("Supported Architectures");\r
319 jArchCheckBox = new ArchCheckBox();\r
3f62225f 320 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 130, 320, 20));\r
a929458e 321 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
322\r
323 jContentPane = new JPanel();\r
324 jContentPane.setLayout(null);\r
3f62225f 325 jContentPane.setPreferredSize(new java.awt.Dimension(480, 180));\r
a929458e 326\r
327 jContentPane.add(jLabelEntry, null);\r
328 jContentPane.add(jLabelFeatureFlag, null);\r
329 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
330 jContentPane.add(getJComboBoxGuidC_Name(), null);\r
331 jContentPane.add(jLabelArch, null);\r
332 jContentPane.add(jLabelUsage, null);\r
333 jContentPane.add(getJComboBoxUsage(), null);\r
334\r
335 jContentPane.add(jStarLabel1, null);\r
336 jContentPane.add(jStarLabel2, null);\r
337\r
338 jContentPane.add(jLabelHelpText, null);\r
339 jContentPane.add(getJScrollPaneHelpText(), null);\r
340 jContentPane.add(jArchCheckBox, null);\r
341 jContentPane.add(getJButtonOk(), null);\r
342 jContentPane.add(getJButtonCancel(), null);\r
343 }\r
344 return jContentPane;\r
06a19cee 345 }\r
346\r
a929458e 347 /**\r
348 * This method initializes Usage type\r
349 * \r
350 */\r
351 private void initFrame() {\r
352 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVSystemTableUsage());\r
353 Tools.generateComboBoxByVector(jComboBoxGuidC_Name, wt.getAllGuidDeclarationsFromWorkspace());\r
06a19cee 354 }\r
355\r
a929458e 356 /*\r
357 * (non-Javadoc)\r
358 * \r
359 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
360 * \r
361 * Override actionPerformed to listen all actions\r
362 * \r
363 */\r
364 public void actionPerformed(ActionEvent arg0) {\r
365 if (arg0.getSource() == jButtonOk) {\r
366 if (checkAdd()) {\r
367 getCurrentSystemTables();\r
368 this.returnType = DataType.RETURN_TYPE_OK;\r
369 this.setVisible(false);\r
370 }\r
371 }\r
372\r
373 if (arg0.getSource() == jButtonCancel) {\r
374 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
375 this.setVisible(false);\r
376 }\r
06a19cee 377 }\r
378\r
a929458e 379 /**\r
380 * Data validation for all fields\r
381 * \r
382 * @retval true - All datas are valid\r
383 * @retval false - At least one data is invalid\r
384 * \r
385 */\r
386 public boolean checkAdd() {\r
387 //\r
388 // Check if all fields have correct data types\r
389 //\r
390\r
391 //\r
392 // Check FeatureFlag\r
393 //\r
394 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
395 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
396 Log.wrn("Update System Tables", "Incorrect data type for Feature Flag");\r
397 return false;\r
398 }\r
399 }\r
400\r
401 return true;\r
402 }\r
06a19cee 403\r
a929458e 404 private SystemTablesIdentification getCurrentSystemTables() {\r
405 String arg0 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
406 String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
06a19cee 407\r
a929458e 408 String arg2 = this.jTextFieldFeatureFlag.getText();\r
409 Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
410 String arg4 = this.jTextAreaHelpText.getText();\r
06a19cee 411\r
a929458e 412 id = new SystemTablesIdentification(arg0, arg1, arg2, arg3, arg4);\r
413 return id;\r
414 }\r
06a19cee 415\r
a929458e 416 public SystemTablesIdentification getId() {\r
417 return id;\r
418 }\r
5b38b75b 419\r
a929458e 420 public void setId(SystemTablesIdentification id) {\r
421 this.id = id;\r
422 }\r
06a19cee 423}\r