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