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.ui.*; 28 33 public class SootOptionsProjectLauncher extends SootProjectLauncher { 34 35 public void run(IAction action) { 36 37 super.run(action); 38 39 40 PhaseOptionsDialog dialog = new PhaseOptionsDialog(window.getShell()); 41 setSdc(new SootDefaultCommands(dialog)); 42 presetDialog(); 43 dialog.open(); 44 if (dialog.getReturnCode() == Dialog.CANCEL) { 45 SavedConfigManager scm = new SavedConfigManager(); 46 scm.setEditMap(dialog.getEditMap()); 47 scm.handleEdits(); 48 } 49 else { 50 SootSavedConfiguration ssc = new SootSavedConfiguration("Temp", dialog.getConfig()); 51 ssc.toSaveArray(); 52 53 54 setCmd(ssc.toRunArray()); 55 String mainClass = dialog.getSootMainClass(); 56 if ((mainClass == null) || (mainClass.length() == 0)){ 57 runSootDirectly(); 58 } 59 else { 60 runSootDirectly(mainClass); 61 } 62 runFinish(); 63 64 SavedConfigManager scm = new SavedConfigManager(); 66 scm.setEditMap(dialog.getEditMap()); 67 scm.handleEdits(); 68 } 69 } 70 71 private void presetDialog() { 72 getSdc().setOutputDir(getOutputLocation()); 73 getSdc().setSootClassPath(getProcess_path()+getSootClasspath().getSeparator()+getClasspathAppend()); 74 getSdc().setProcessPath(getProcess_path()); 75 getSdc().setKeepLineNum(); 76 getSdc().setPrintTags(); 77 getSdc().setSootMainClass(); 78 } 79 80 private void setCmd(ArrayList user_cmd){ 82 getSootCommandList().addSingleOpt(user_cmd); 83 } 84 85 private void setCmd(String user_cmd) { 86 87 getSootCommandList().addSingleOpt(user_cmd); 88 89 } 90 } 91 | Popular Tags |