package cute.gui; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * . * User: Koushik Sen (ksen@cs.uiuc.edu) * Date: Oct 31, 2005 * Time: 8:44:53 AM */ public class OptionsGui extends OptionsView implements ActionListener{ /** * */ private static final long serialVersionUID = -5564604647555843498L; private JCuteGui gui; private JFileChooser chooser1; public OptionsGui(JCuteGui gui){ super(gui,"Options",true); this.gui = gui; setResizable(false); okButton.addActionListener(this); cancelButton.addActionListener(this); generateJUnit.addActionListener(this); junitFolderB.addActionListener(this); randomSearch.addActionListener(this); dfsSearch.addActionListener(this); quickSearch.addActionListener(this); logPath.addActionListener(this); chooser1 = new JFileChooser(System.getProperty("user.dir")); chooser1.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser1.setDialogTitle("Choose JUnit Test Case Output Folder"); onlyErrors.addActionListener(this); allTraces.addActionListener(this); branchCoverageRelevantTraces.addActionListener(this); tenthTrace.addActionListener(this); synchronizeGuiWithData(); } public void synchronizeGuiWithData(){ otherOptions.setText(gui.tui.getOptionExtraOptions()); runs.setText(gui.tui.getOptionNumberOfPaths() +""); allTraces.setSelected(gui.tui.getOptionLogLevel() ==JCuteTextUI.LOG_ALL); onlyErrors.setSelected(gui.tui.getOptionLogLevel() == JCuteTextUI.LOG_ERRORS); branchCoverageRelevantTraces.setSelected(gui.tui.getOptionLogLevel() == JCuteTextUI.LOG_BRANCHES); tenthTrace.setSelected(gui.tui.getOptionLogLevel() ==JCuteTextUI.LOG_TENTH); logAssertion.setSelected(gui.tui.isOptionLogAssertion()); logException.setSelected(gui.tui.isOptionLogException()); logDeadlock.setSelected(gui.tui.isOptionLogDeadlock()); logRace.setSelected(gui.tui.isOptionLogRace()); logAssertion.setEnabled(gui.tui.getOptionLogLevel()==JCuteTextUI.LOG_ERRORS); logException.setEnabled(gui.tui.getOptionLogLevel()==JCuteTextUI.LOG_ERRORS); logDeadlock.setEnabled(gui.tui.getOptionLogLevel()==JCuteTextUI.LOG_ERRORS); logRace.setEnabled(gui.tui.getOptionLogLevel()==JCuteTextUI.LOG_ERRORS); // logStats.setSelected(gui.tui.isOptionLogStatistics()); // logStats.setEnabled(false); useRandomInputs.setSelected(gui.tui.isOptionUseRandomInputs()); concurrent.setSelected(!gui.tui.isOptionSequential()); printOutput.setSelected(gui.tui.isOptionPrintOutput()); depth.setText(gui.tui.getOptionDepthForDFS() +""); threshold.setText(gui.tui.getOptionQuickSearchThreshold() +""); randomSearch.setSelected((gui.tui.getOptionSearchStrategy())==JCuteTextUI.SEARCH_RANDOM); dfsSearch.setSelected(gui.tui.getOptionSearchStrategy() ==JCuteTextUI.SEARCH_DFS); quickSearch.setSelected(gui.tui.getOptionSearchStrategy() ==JCuteTextUI.SEARCH_QUICK); generateJUnit.setSelected(gui.tui.isOptionGenerateJUnit()); logPath.setSelected(gui.tui.isOptionLogPath()); logInputAndTrace.setSelected(gui.tui.isOptionLogPath() && gui.tui.isOptionLogTraceAndInput()); logInputAndTrace.setEnabled(gui.tui.isOptionLogPath()); junitFolderT.setEnabled(generateJUnit.isSelected()); junitFolderB.setEnabled(generateJUnit.isSelected()); junitPkgT.setEnabled(generateJUnit.isSelected()); junitFolderT.setText(gui.tui.getOptionJUnitOutputFolderName()); junitPkgT.setText(gui.tui.getOptionJUnitPkgName()); depth.setEnabled(dfsSearch.isSelected()); threshold.setEnabled(quickSearch.isSelected()); gui.tui.updateSoftCompleted(); } public void synchronizeDataWithGui(){ gui.tui.setOptionExtraOptions(otherOptions.getText().trim()); gui.tui.setOptionSequential(!concurrent.isSelected()); // gui.tui.setOptionLogStatistics(logStats.isSelected()); gui.tui.setOptionUseRandomInputs(useRandomInputs.isSelected()); gui.tui.setOptionPrintOutput(printOutput.isSelected()); gui.tui.setOptionGenerateJUnit(generateJUnit.isSelected()); gui.tui.setOptionLogPath(logPath.isSelected()); gui.tui.setOptionLogTraceAndInput(logPath.isSelected() && logInputAndTrace.isSelected()); if(branchCoverageRelevantTraces.isSelected()){ gui.tui.setOptionLogLevel(JCuteTextUI.LOG_BRANCHES); } if(allTraces.isSelected()){ gui.tui.setOptionLogLevel(JCuteTextUI.LOG_ALL); } if(onlyErrors.isSelected()) { gui.tui.setOptionLogLevel(JCuteTextUI.LOG_ERRORS); } if(tenthTrace.isSelected()){ gui.tui.setOptionLogLevel(JCuteTextUI.LOG_TENTH); } gui.tui.setOptionLogAssertion(logAssertion.isSelected()); gui.tui.setOptionLogException(logException.isSelected()); gui.tui.setOptionLogDeadlock(logDeadlock.isSelected()); gui.tui.setOptionLogRace(logRace.isSelected()); int tmp; tmp = gui.tui.getOptionNumberOfPaths(); try { gui.tui.setOptionNumberOfPaths(Integer.parseInt(runs.getText().trim())); } catch(NumberFormatException nfe){ gui.box.ask("Inputs field must be a number greater than 0"); } if(gui.tui.getOptionNumberOfPaths() <=0){ gui.box.ask("Inputs field must be a number greater than 0"); gui.tui.setOptionNumberOfPaths(tmp); } tmp = gui.tui.getOptionDepthForDFS(); try { gui.tui.setOptionDepthForDFS(Integer.parseInt(depth.getText().trim())); } catch(NumberFormatException nfe){ gui.box.ask("Depth field must be a number greater than or equal to 0"); } if(gui.tui.getOptionDepthForDFS() <0){ gui.tui.setOptionDepthForDFS(tmp); } tmp = gui.tui.getOptionQuickSearchThreshold(); try { gui.tui.setOptionQuickSearchThreshold(Integer.parseInt(threshold.getText().trim())); } catch(NumberFormatException nfe){ gui.box.ask("Threshold field must be a number greater than 0"); } if(gui.tui.getOptionQuickSearchThreshold() <=0){ gui.tui.setOptionQuickSearchThreshold(tmp); } if(dfsSearch.isSelected()){ gui.tui.setOptionSearchStrategy(JCuteTextUI.SEARCH_DFS); } if(randomSearch.isSelected()){ gui.tui.setOptionSearchStrategy(JCuteTextUI.SEARCH_RANDOM); } if(quickSearch.isSelected()){ gui.tui.setOptionSearchStrategy(JCuteTextUI.SEARCH_QUICK); } gui.tui.setOptionJUnitOutputFolderName(junitFolderT.getText()); gui.tui.setOptionJUnitPkgName(junitPkgT.getText()); } public void actionPerformed(ActionEvent e) { if(e.getSource()==okButton){ synchronizeDataWithGui(); synchronizeGuiWithData(); setVisible(false); } else if(e.getSource() == dfsSearch || e.getSource() == randomSearch || e.getSource() == quickSearch){ depth.setEnabled(dfsSearch.isSelected()); threshold.setEnabled(quickSearch.isSelected()); } else if(e.getSource()==generateJUnit){ junitFolderT.setEnabled(generateJUnit.isSelected()); junitFolderB.setEnabled(generateJUnit.isSelected()); junitPkgT.setEnabled(generateJUnit.isSelected()); if(generateJUnit.isSelected()){ concurrent.setSelected(false); } } else if(e.getSource()==logPath){ logInputAndTrace.setEnabled(logPath.isSelected()); if(!logPath.isSelected()) logInputAndTrace.setSelected(false); } else if(e.getSource()==onlyErrors || e.getSource() == branchCoverageRelevantTraces || e.getSource() == tenthTrace || e.getSource() == allTraces){ logAssertion.setEnabled(onlyErrors.isSelected()); logException.setEnabled(onlyErrors.isSelected()); logDeadlock.setEnabled(onlyErrors.isSelected()); logRace.setEnabled(onlyErrors.isSelected()); } else if(e.getSource()==cancelButton){ synchronizeGuiWithData(); setVisible(false); } else if(e.getSource()==junitFolderB){ int returnVal = chooser1.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { junitFolderT.setText(chooser1.getSelectedFile().getAbsolutePath()); } } } }