]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - 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
1/** @file\r
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
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
27import javax.swing.JTextArea;\r
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
42 * The class is used to create, update SystemTables section of the MSA file\r
43 * \r
44 * It extends IDialog\r
45 * \r
46 */\r
47public class SystemTablesDlg extends IDialog {\r
48\r
49 // /\r
50 // / Define class Serial Version UID\r
51 // /\r
52 private static final long serialVersionUID = 7488769180379442276L;\r
53\r
54 //\r
55 // Define class members\r
56 //\r
57 private JPanel jContentPane = null;\r
58\r
59 private JLabel jLabelEntry = null;\r
60\r
61 private JLabel jLabelUsage = null;\r
62\r
63 private JComboBox jComboBoxUsage = null;\r
64\r
65 private StarLabel jStarLabel1 = null;\r
66\r
67 private StarLabel jStarLabel2 = null;\r
68\r
69 private JComboBox jComboBoxGuidC_Name = null;\r
70\r
71 private JLabel jLabelFeatureFlag = null;\r
72\r
73 private JTextField jTextFieldFeatureFlag = null;\r
74\r
75 private JLabel jLabelArch = null;\r
76\r
77 private JScrollPane jScrollPane = null;\r
78\r
79 private JLabel jLabelHelpText = null;\r
80\r
81 private JTextArea jTextAreaHelpText = null;\r
82\r
83 private JScrollPane jScrollPaneHelpText = null;\r
84\r
85 private ArchCheckBox jArchCheckBox = null;\r
86\r
87 private JButton jButtonOk = null;\r
88\r
89 private JButton jButtonCancel = null;\r
90\r
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
109 jComboBoxGuidC_Name.setBounds(new java.awt.Rectangle(168, 12, 320, 20));\r
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
115\r
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
125 jComboBoxUsage.setBounds(new java.awt.Rectangle(168, 37, 320, 20));\r
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
137\r
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
146 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(168, 107, 320, 20));\r
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
151 }\r
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
164 }\r
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
179 }\r
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
192 jScrollPaneHelpText.setLocation(new java.awt.Point(168, 62));\r
193 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
194 }\r
195 return jScrollPaneHelpText;\r
196 }\r
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
207 jButtonOk.setBounds(new java.awt.Rectangle(290, 162, 90, 20));\r
208 jButtonOk.setText("Ok");\r
209 jButtonOk.addActionListener(this);\r
210 }\r
211 return jButtonOk;\r
212 }\r
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
223 jButtonCancel.setBounds(new java.awt.Rectangle(390, 162, 90, 20));\r
224 jButtonCancel.setText("Cancel");\r
225 jButtonCancel.addActionListener(this);\r
226 }\r
227 return jButtonCancel;\r
228 }\r
229\r
230 public static void main(String[] args) {\r
231\r
232 }\r
233\r
234 /**\r
235 * This method initializes this\r
236 * \r
237 */\r
238 private void init() {\r
239 this.setSize(505, 235);\r
240 this.setContentPane(getJScrollPane());\r
241 this.setTitle("System Tables");\r
242 initFrame();\r
243 this.setViewMode(false);\r
244 this.centerWindow();\r
245 }\r
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
265 }\r
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
277 }\r
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
290 }\r
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
301 jStarLabel1.setLocation(new java.awt.Point(2, 12));\r
302 jLabelEntry = new JLabel();\r
303 jLabelEntry.setText("Table's GUID C Name");\r
304 jLabelEntry.setBounds(new java.awt.Rectangle(12, 12, 155, 20));\r
305 jStarLabel2 = new StarLabel();\r
306 jStarLabel2.setLocation(new java.awt.Point(2, 37));\r
307 jLabelUsage = new JLabel();\r
308 jLabelUsage.setText("Usage");\r
309 jLabelUsage.setBounds(new java.awt.Rectangle(12, 37, 155, 20));\r
310 jLabelHelpText = new JLabel();\r
311 jLabelHelpText.setBounds(new java.awt.Rectangle(12, 62, 155, 20));\r
312 jLabelHelpText.setText("Help Text");\r
313 jLabelFeatureFlag = new JLabel();\r
314 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(12, 107, 155, 20));\r
315 jLabelFeatureFlag.setText("Feature Flag Expression");\r
316 jLabelArch = new JLabel();\r
317 jLabelArch.setBounds(new java.awt.Rectangle(12, 130, 155, 20));\r
318 jLabelArch.setText("Supported Architectures");\r
319 jArchCheckBox = new ArchCheckBox();\r
320 jArchCheckBox.setBounds(new java.awt.Rectangle(168, 130, 320, 20));\r
321 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
322\r
323 jContentPane = new JPanel();\r
324 jContentPane.setLayout(null);\r
325 jContentPane.setPreferredSize(new java.awt.Dimension(480, 180));\r
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
345 }\r
346\r
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
354 }\r
355\r
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
377 }\r
378\r
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
403\r
404 private SystemTablesIdentification getCurrentSystemTables() {\r
405 String arg0 = this.jComboBoxGuidC_Name.getSelectedItem().toString();\r
406 String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
407\r
408 String arg2 = this.jTextFieldFeatureFlag.getText();\r
409 Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
410 String arg4 = this.jTextAreaHelpText.getText();\r
411\r
412 id = new SystemTablesIdentification(arg0, arg1, arg2, arg3, arg4);\r
413 return id;\r
414 }\r
415\r
416 public SystemTablesIdentification getId() {\r
417 return id;\r
418 }\r
419\r
420 public void setId(SystemTablesIdentification id) {\r
421 this.id = id;\r
422 }\r
423}\r