/** | |
* | |
*/ | |
package org.tianocore.frameworkwizard.platform.ui; | |
import java.awt.BorderLayout; | |
import java.awt.Dimension; | |
import java.awt.Toolkit; | |
import javax.swing.JPanel; | |
import java.awt.event.ActionEvent; | |
import java.awt.event.ActionListener; | |
import java.util.Vector; | |
import javax.swing.JDialog; | |
import javax.swing.JLabel; | |
import javax.swing.JComboBox; | |
import javax.swing.JTabbedPane; | |
import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType; | |
import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification; | |
import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile; | |
/** | |
* @author jlin16 | |
* | |
*/ | |
public class GenAprioriFileDialog extends JDialog implements ActionListener { | |
/** | |
* | |
*/ | |
private static final long serialVersionUID = 3627991301208644354L; | |
private JPanel jContentPane = null; | |
private JPanel jPanelN = null; | |
private JLabel jLabelFvName = null; | |
private JComboBox jComboBoxFvNames = null; | |
private JTabbedPane jTabbedPane = null; | |
private FpdFileContents ffc = null; | |
private OpeningPlatformType docConsole = null; | |
/** | |
* This is the default constructor | |
*/ | |
public GenAprioriFileDialog(FpdFileContents inputFfc, OpeningPlatformType dc) { | |
super(); | |
ffc = inputFfc; | |
docConsole = dc; | |
initialize(); | |
} | |
/** | |
* This method initializes this | |
* | |
* @return void | |
*/ | |
private void initialize() { | |
this.setSize(670, 670); | |
this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); | |
this.setTitle("Apriori Files"); | |
this.setContentPane(getJContentPane()); | |
this.setResizable(false); | |
this.setModal(true); | |
String fvName = jComboBoxFvNames.getSelectedItem()+""; | |
if (fvName.length() > 0) { | |
jTabbedPane.removeAll(); | |
AprioriModuleOrderPane peiPane = new AprioriModuleOrderPane(fvName, "", GenAprioriFileDialog.this, true); | |
peiPane.showModulesInFv(fvName); | |
peiPane.showAllModulesInPlatform(); | |
jTabbedPane.addTab("PEIMs", peiPane); | |
AprioriModuleOrderPane dxePane = new AprioriModuleOrderPane(fvName, "", GenAprioriFileDialog.this, false); | |
dxePane.showModulesInFv(fvName); | |
dxePane.showAllModulesInPlatform(); | |
jTabbedPane.addTab("DXE Drivers", dxePane); | |
} | |
this.centerWindow(); | |
} | |
/** | |
* This method initializes jContentPane | |
* | |
* @return javax.swing.JPanel | |
*/ | |
private JPanel getJContentPane() { | |
if (jContentPane == null) { | |
jContentPane = new JPanel(); | |
jContentPane.setLayout(new BorderLayout()); | |
jContentPane.add(getJPanelN(), java.awt.BorderLayout.NORTH); | |
jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER); | |
} | |
return jContentPane; | |
} | |
public void actionPerformed(ActionEvent arg0) { | |
// TODO Auto-generated method stub | |
if (arg0.getActionCommand().equals("ModuleOrderPaneOk")) { | |
docConsole.setSaved(false); | |
return; | |
} | |
if (arg0.getActionCommand().equals("ModuleOrderPaneCancel")) { | |
this.dispose(); | |
} | |
} | |
/** | |
Start the window at the center of screen | |
**/ | |
protected void centerWindow(int intWidth, int intHeight) { | |
Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); | |
this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2); | |
} | |
/** | |
Start the window at the center of screen | |
**/ | |
protected void centerWindow() { | |
centerWindow(this.getSize().width, this.getSize().height); | |
} | |
/** | |
* This method initializes jPanelN | |
* | |
* @return javax.swing.JPanel | |
*/ | |
private JPanel getJPanelN() { | |
if (jPanelN == null) { | |
jLabelFvName = new JLabel(); | |
jLabelFvName.setText("FV Name"); | |
jPanelN = new JPanel(); | |
jPanelN.add(jLabelFvName, null); | |
jPanelN.add(getJComboBoxFvNames(), null); | |
} | |
return jPanelN; | |
} | |
/** | |
* This method initializes jComboBoxFvNames | |
* | |
* @return javax.swing.JComboBox | |
*/ | |
private JComboBox getJComboBoxFvNames() { | |
if (jComboBoxFvNames == null) { | |
jComboBoxFvNames = new JComboBox(); | |
jComboBoxFvNames.setPreferredSize(new java.awt.Dimension(200,20)); | |
Vector<String> vFvNames = new Vector<String>(); | |
ffc.getFvImagesFvImageFvImageNames(vFvNames); | |
for (int i = 0; i < vFvNames.size(); ++i) { | |
jComboBoxFvNames.addItem(vFvNames.get(i)); | |
} | |
// if (jComboBoxFvNames.getItemCount() > 0) { | |
// jComboBoxFvNames.setSelectedIndex(0); | |
// | |
// } | |
jComboBoxFvNames.addItemListener(new java.awt.event.ItemListener() { | |
public void itemStateChanged(java.awt.event.ItemEvent e) { | |
String fvName = jComboBoxFvNames.getSelectedItem()+""; | |
if (fvName.length() > 0) { | |
jTabbedPane.removeAll(); | |
AprioriModuleOrderPane peiPane = new AprioriModuleOrderPane(fvName, "", GenAprioriFileDialog.this, true); | |
peiPane.showModulesInFv(fvName); | |
peiPane.showAllModulesInPlatform(); | |
jTabbedPane.addTab("PEIMs", peiPane); | |
AprioriModuleOrderPane dxePane = new AprioriModuleOrderPane(fvName, "", GenAprioriFileDialog.this, false); | |
dxePane.showModulesInFv(fvName); | |
dxePane.showAllModulesInPlatform(); | |
jTabbedPane.addTab("DXE Drivers", dxePane); | |
} | |
} | |
}); | |
} | |
return jComboBoxFvNames; | |
} | |
/** | |
* This method initializes jTabbedPane | |
* | |
* @return javax.swing.JTabbedPane | |
*/ | |
private JTabbedPane getJTabbedPane() { | |
if (jTabbedPane == null) { | |
jTabbedPane = new JTabbedPane(); | |
} | |
return jTabbedPane; | |
} | |
private class AprioriModuleOrderPane extends ModuleOrderPane { | |
/** | |
* | |
*/ | |
private static final long serialVersionUID = -7952853414833230546L; | |
private boolean forPEI = false; | |
private String fvName = null; | |
AprioriModuleOrderPane (String fvName, String file, ActionListener action, boolean b) { | |
super(fvName, file, ffc, action); | |
this.fvName = fvName; | |
forPEI = b; | |
getJTableModInFv().getColumnModel().getColumn(0).setHeaderValue("Modules in Apriori File"); | |
getJButtonOk().setText("Save"); | |
getJButtonCancel().setText("Close"); | |
} | |
public void showModulesInFv (String fvName) { | |
String id = "1"; | |
if (forPEI) { | |
id = "0"; | |
} | |
int size = ffc.getUserExtsIncModCount(fvName, "APRIORI", id); | |
if (size != -1) { | |
String[][] saa = new String[size][5]; | |
ffc.getUserExtsIncMods(fvName, "APRIORI", id, saa); | |
for (int i = 0; i < size; ++i) { | |
String moduleKey = saa[i][0] + " " + saa[i][1] + " " + saa[i][2] + " " + saa[i][3]; | |
ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey); | |
String name = "N/A"; | |
if (mi != null) { | |
name = mi.getName(); | |
} | |
String[] row = { name, saa[i][0] , saa[i][1], saa[i][2] , saa[i][3], saa[i][4] }; | |
getModInFvTableModel().addRow(row); | |
} | |
} | |
} | |
public void actionPerformed(ActionEvent arg0) { | |
if (arg0.getActionCommand().equals("ModuleOrderPaneOk")) { | |
String id = "1"; | |
if (forPEI) { | |
id = "0"; | |
} | |
Vector<String[]> vModInFv = new Vector<String[]>(); | |
for (int i = 0; i < getJTableModInFv().getRowCount(); ++i) { | |
String moduleName = getModInFvTableModel().getValueAt(i, 0)+""; | |
if (moduleName.length() == 0 || moduleName.equals("N/A")) { | |
continue; | |
} | |
String mg = getModInFvTableModel().getValueAt(i, 1)+""; | |
String mv = getModInFvTableModel().getValueAt(i, 2)+""; | |
String pg = getModInFvTableModel().getValueAt(i, 3)+""; | |
String pv = getModInFvTableModel().getValueAt(i, 4)+""; | |
String arch = getModInFvTableModel().getValueAt(i, 5)+""; | |
String[] sa = { mg, mv, pg, pv, arch}; | |
vModInFv.add(sa); | |
} | |
ffc.removeBuildOptionsUserExtensions(fvName, "APRIORI", id); | |
ffc.genBuildOptionsUserExtensions(fvName, "APRIORI", id, "", vModInFv); | |
} | |
} | |
} | |
} // @jve:decl-index=0:visual-constraint="10,10" |