📄 inputpanel.java
字号:
* correctly load observation from a specified log file.
*
* @param parent reference to current Wizard frame
*/
public InputPanel(WorkloadAnalysisWizard parent) {
this.parent = parent;
model = parent.getModel();
help = parent.getHelp();
initGUI();
}
/**
* Initialize GUI
*/
private void initGUI(){
Box mainHorizontalBox = Box.createHorizontalBox();
mainHorizontalBox.add(Box.createHorizontalStrut(5));
Box centralVerticalBox = Box.createVerticalBox();
mainHorizontalBox.add(centralVerticalBox);
centralVerticalBox.add(Box.createVerticalStrut(5));
JPanel componentsPanel = new JPanel(new BorderLayout());
centralVerticalBox.add(componentsPanel);
JPanel centralUpperPanel = new JPanel(new BorderLayout());
JPanel buttonNewVariable = new JPanel(new BorderLayout());
JPanel spinnerP = new JPanel(new FlowLayout(FlowLayout.RIGHT));
numOfVars = new JSpinner(new SpinnerNumberModel(0,0,50,1));
numOfVars.setMaximumSize(new Dimension(600,25));
numOfVars.setToolTipText(SPINNER_VARIABLE);
help.addHelp(numOfVars,SPINNER_VARIABLE);
spinnerP.add(new JLabel("Number:"));
spinnerP.add(numOfVars);
numOfVars.addChangeListener(spinnerListener);
JPanel addP = new JPanel(new FlowLayout(FlowLayout.RIGHT));
addVar = new JButton(addNewVariable);
help.addHelp(addVar,ADD_NEW_VARIABLE);
addP.add(addVar);
buttonNewVariable.add(spinnerP,BorderLayout.NORTH);
buttonNewVariable.add(addP,BorderLayout.SOUTH);
centralUpperPanel.add(buttonNewVariable,BorderLayout.EAST);
centralUpperPanel.add(new JLabel(INPUT_DESCRIPTION), BorderLayout.CENTER);
componentsPanel.add(centralUpperPanel, BorderLayout.NORTH);
/********** TABLE **********/
inputTable = new JWatVariableInputTable();
inputTable.setToolTipText(INPUT_TABLE);
help.addHelp(inputTable,INPUT_TABLE);
inputTable.getTableHeader().setReorderingAllowed(false);
inputTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
inputTable.setModel(new JWatVariableInputTableModel());
inputTable.addDeleteRowListener(new RowDeleteListener(){
public void rowsDeletedEvent() {
numOfVars.setValue(new Integer(inputTable.getRowCount()));
// Set formatchooser to none
formatchooser.setSelectedIndex(-1);
}
});
JScrollPane inputTabSP = new JScrollPane(inputTable,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
inputTabSP.setPreferredSize(new Dimension(550, 400));
componentsPanel.add(inputTabSP, BorderLayout.CENTER);
JPanel rightPanel = new JPanel(new BorderLayout());
rightPanel.setMaximumSize(new Dimension(230,800));
rightPanel.setPreferredSize(new Dimension(230,800));
mainHorizontalBox.add(rightPanel);
/********** INPUT FILE PANEL **********/
inputPanel = new JPanel(new BorderLayout());
inputPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "Input file"));
inputPanel.add(new JLabel(LOAD_FILE_LABEL), BorderLayout.NORTH);
inputPanel.add(filechooser, BorderLayout.SOUTH);
help.addHelp(inputPanel,"Select input file");
/** UPDATE 09/11/06 **/
JPanel infoFile = new JPanel(new BorderLayout());
infoFile.add(inputPanel,BorderLayout.NORTH);
infoPanel = new JPanel(new BorderLayout());
help.addHelp(infoPanel,PANEL_INFORMATION);
infoPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "File information"));
observationNumb = new JLabel(obsNumbString);
fileName = new JLabel(obsFileName);
infoPanel.add(observationNumb, BorderLayout.NORTH);
infoPanel.add(fileName, BorderLayout.SOUTH);
infoFile.add(infoPanel,BorderLayout.SOUTH);
//rightPanel.add(inputPanel, BorderLayout.NORTH);
rightPanel.add(infoFile,BorderLayout.NORTH);
JPanel centerInputPanel = new JPanel(new BorderLayout());
rightPanel.add(centerInputPanel, BorderLayout.CENTER);
/********** FORMAT FILE PANEL **********/
formatPanel = new JPanel(new BorderLayout());
help.addHelp(formatPanel,"Select a format for current input file");
JPanel test = new JPanel(new GridLayout(1,2));
formatPanel.setBorder(new TitledBorder(new EtchedBorder(
EtchedBorder.LOWERED), "File format"));
test.add(new JLabel(LOAD_FORMAT_LABEL));
saveNewFormat = new JButton(saveFormat);
help.addHelp(saveNewFormat,"Save current defined format");
test.add(saveNewFormat);
formatPanel.add(test,BorderLayout.NORTH);
formatPanel.add(formatchooser, BorderLayout.SOUTH);
centerInputPanel.add(formatPanel, BorderLayout.NORTH);
/********** SMAPLING PANEL **********/
filterPanel = new JPanel(new BorderLayout());
help.addHelp(filterPanel,"Specify the sampling method: Complete file, Random sampling or by interval");
filterPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "Workload sampling method"));
JPanel chooseFilterPanel = new JPanel(new BorderLayout());
filterPanel.add(chooseFilterPanel, BorderLayout.NORTH);
chooseFilterPanel.add(new JLabel(LOAD_FILTER_LABEL), BorderLayout.NORTH);
optionFilterPanel = new JPanel(new BorderLayout());
optionFilterPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "Loading size options"));
chooseFilterPanel.add(filterchooser, BorderLayout.SOUTH);
filterPanel.add(optionFilterPanel, BorderLayout.CENTER);
centerInputPanel.add(filterPanel, BorderLayout.CENTER);
/********** INFORMATION PANEL **********/
JPanel southPanel = new JPanel(new BorderLayout());
/*infoPanel = new JPanel(new BorderLayout());
infoPanel.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED), "File information"));
southPanel.add(infoPanel,BorderLayout.NORTH);
observationNumb = new JLabel(obsNumbString);
fileName = new JLabel(obsFileName);
infoPanel.add(observationNumb, BorderLayout.NORTH);
infoPanel.add(fileName, BorderLayout.SOUTH);*/
loadFileBtn = new JButton(loadFile);
JPanel loadPanel = new JPanel();
loadFileBtn.setPreferredSize(new Dimension((int)(BUTTONSIZE*4.5),(int)(BUTTONSIZE*0.8)));
loadFileBtn.setBackground(Color.RED);
loadPanel.add(loadFileBtn);
southPanel.add(loadPanel,BorderLayout.SOUTH);
centerInputPanel.add(southPanel,BorderLayout.SOUTH);
/********** INIT COMBOBOXES ****************/
initComboInputPanel();
initComboFormatPanel();
initComboFilterPanel();
this.setLayout(new GridLayout(1, 1));
this.add(mainHorizontalBox);
}
/**
* Returns the name of the pane
*
* @see java.awt.Component#getName()
*/
public String getName() {
return "Input";
}
private JFileChooser file = new JFileChooser();
/**
* Sets up combobox of file with format defined
*/
private void initComboInputPanel() {
// File[] name;
// File directory = new File(absolutePath + "FileSaves");
file.setCurrentDirectory(new File("."));
filechooser.setToolTipText(COMBO_FILE_INPUT);
//filechooser.addItem(browseInputPanelText);
// try {
// if(directory.isDirectory()){
// name = directory.listFiles();
// for(int i = 0; i < name.length; i++){
// filechooser.addItem(name[i].getCanonicalFile().getName());
// }
// }
// }catch (IOException e) { e.printStackTrace(); }
filechooser.setSelectedIndex(-1);
filechooser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
String choice = (String) ((JComboBox) event.getSource()).getSelectedItem();
if (choice != null && choice.equals(browseInputPanelText)) {
//JFileChooser file = new JFileChooser();
//file.setCurrentDirectory(new File("."));
if(file.showOpenDialog(InputPanel.this) == JFileChooser.APPROVE_OPTION){
nameFile = file.getSelectedFile();
if(!nameFile.exists()){
JOptionPane.showMessageDialog(InputPanel.this,"File does not exists","Error",JOptionPane.WARNING_MESSAGE);
return;
}
try {
obsNumb = Loader.calcNumOfObs((nameFile.getAbsolutePath()));
} catch (Exception e) {
e.printStackTrace();
}
boolean exist = false;
//controllo se esiste gia' la voce selezionata
for(int i = 1; i < filechooser.getModel().getSize();i++){
if(((String)filechooser.getModel().getElementAt(i)).equals(file.getSelectedFile().getAbsolutePath())){
exist = true;
break;
}
}
if(!exist){
filechooser.insertItemAt(file.getSelectedFile().getAbsolutePath(),filechooser.getItemCount());
filechooser.setSelectedIndex(filechooser.getItemCount()-1);
}else{
filechooser.setSelectedItem(file.getSelectedFile().getAbsolutePath());
}
//Update information
observationNumb.setText(obsNumbString + obsNumb );
fileName.setText(obsFileName + file.getSelectedFile().getName());
fileName.setToolTipText(nameFile.getName());
}else{
filechooser.setSelectedIndex(-1);
}
}else{
if(choice != null){
if(!choice.equals("")){
if(choice.indexOf("\\") == -1){
nameFile = new File(absolutePath + "FileSaves\\" +choice);
try {
obsNumb = Loader.calcNumOfObs((nameFile.getAbsolutePath()));
} catch (Exception e) {
e.printStackTrace();
}
}else{
nameFile = new File(choice);
try {
obsNumb = Loader.calcNumOfObs((nameFile.getAbsolutePath()));
} catch (Exception e) {
e.printStackTrace();
}
}
//Update information
observationNumb.setText(obsNumbString + obsNumb );
fileName.setText(obsFileName + nameFile.getName());
fileName.setToolTipText(nameFile.getName());
}else{
filechooser.setSelectedIndex(-1);
observationNumb.setText(obsNumbString);
fileName.setText(obsFileName);
}
}else{
observationNumb.setText(obsNumbString);
fileName.setText(obsFileName);
}
}
}
});
}
/**
* Sets up combobox format defined
*/
private void initComboFormatPanel() {
formatchooser.setToolTipText(COMBO_FORMAT_INPUT);
refreshComboFormatPanel();
addListenersComboFormatPanel();
}
private void refreshComboFormatPanel(){
File[] name;
File directory = new File(absolutePath + "jwatFormats");
formatchooser.removeAllItems();
//UPDATE 5/11/06: + rimozione e riabilitazione listener per combo per evitare update su reload combo
ActionListener[] l = (ActionListener[]) formatchooser.getListeners(ActionListener.class);
if(l.length != 0) formatchooser.removeActionListener(l[0]);
try {
if(directory.isDirectory()){
name = directory.listFiles();
for(int i = 0; i < name.length; i++){
if(name[i].getName().indexOf(".jwatformat")!= -1){
formatchooser.addItem(name[i].getCanonicalFile().getName());
}
}
}
}catch (IOException e) { e.printStackTrace(); }
//UPDATE 5/11/06: + rimozione e riabilitazione listener per combo per evitare update su reload combo
if(l.length !=0) formatchooser.addActionListener(l[0]);
formatchooser.setSelectedIndex(-1);
}
private void addListenersComboFormatPanel(){
formatchooser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
String choice = (String) ((JComboBox) event.getSource()).getSelectedItem();
if(choice != null){
((JWatVariableInputTableModel) inputTable.getModel()).clearTable();
FormatFileReader form = new FormatFileReader(absolutePath + "jwatFormats\\" + choice);
for(int i = 0;i < form.getNumVars();i++){
String tipo = "";
switch(form.getType()){
case Parameter.NUMBER: tipo = "Numeric";
break;
case Parameter.STRING: tipo = "String";
break;
case Parameter.DATE: tipo = "Date";
break;
}
((JWatVariableInputTableModel) inputTable.getModel()).
addNewRow(form.getName(),tipo,form.getComment(),form.getDelimiters(),form.getRegExpr(),form.getDefaults(),form.getReplace());
form.next();
}
inputTable.tableChanged(new TableModelEvent(inputTable.getModel()));
numOfVars.setValue(new Integer(form.getNumVars()));
}
}
});
}
/**
* Sets up combobox filter defined
*/
private void initComboFilterPanel() {
filterchooser.addItem(FILTER_TEXT_COMPLETE);
filterchooser.addItem(FILTER_TEXT_RANDOM);
filterchooser.addItem(FILTER_TEXT_INTERVAL);
filterchooser.setToolTipText(COMBO_FILTER_INPUT);
createIntervalOptionPanel();
createRandomOptionPanel();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -