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