1 19 20 package ca.mcgill.sable.soot.launching; 21 22 23 import java.util.ArrayList ; 24 25 import org.eclipse.jface.action.*; 26 import org.eclipse.jface.dialogs.*; 27 import ca.mcgill.sable.soot.SootPlugin; 28 import ca.mcgill.sable.soot.ui.*; 29 34 public class SootOptionsFolderLauncher extends SootFolderLauncher { 35 36 public void run(IAction action) { 37 38 super.run(action); 39 40 window = SootPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow(); 41 42 PhaseOptionsDialog dialog = new PhaseOptionsDialog(window.getShell()); 43 setSdc(new SootDefaultCommands(dialog)); 44 presetDialog(); 45 dialog.open(); 46 if (dialog.getReturnCode() == Dialog.CANCEL) { 47 SavedConfigManager scm = new SavedConfigManager(); 48 scm.setEditMap(dialog.getEditMap()); 49 scm.handleEdits(); 50 } 51 else { 52 SootSavedConfiguration ssc = new SootSavedConfiguration("Temp", dialog.getConfig()); 53 ssc.toSaveArray(); 54 55 56 setCmd(ssc.toRunArray()); 57 String mainClass = dialog.getSootMainClass(); 58 if ((mainClass == null) || (mainClass.length() == 0)){ 59 runSootDirectly(); 60 } 61 else { 62 runSootDirectly(mainClass); 63 } 64 runFinish(); 65 66 SavedConfigManager scm = new SavedConfigManager(); 68 scm.setEditMap(dialog.getEditMap()); 69 scm.handleEdits(); 70 } 71 } 72 73 private void presetDialog() { 74 getSdc().setOutputDir(getOutputLocation()); 75 getSdc().setSootClassPath(getProcessPath()+getSootClasspath().getSeparator()+getClasspathAppend()); 76 getSdc().setProcessPath(getProcessPath()); 77 getSdc().setKeepLineNum(); 78 getSdc().setPrintTags(); 79 getSdc().setSootMainClass(); 80 } 81 82 private void setCmd(ArrayList user_cmd){ 84 getSootCommandList().addSingleOpt(user_cmd); 85 } 86 87 private void setCmd(String user_cmd) { 88 89 getSootCommandList().addSingleOpt(user_cmd); 90 91 } 92 } 93 | Popular Tags |