1 19 20 package ca.mcgill.sable.soot.launching; 21 22 import java.util.ArrayList ; 23 import java.util.Iterator ; 24 25 import org.eclipse.jface.action.*; 26 import org.eclipse.jface.dialogs.*; 27 import ca.mcgill.sable.soot.*; 28 import ca.mcgill.sable.soot.ui.PhaseOptionsDialog; 29 30 34 public class SootOptionsFromJavaFileLauncher extends SootFileLauncher { 35 36 public void run(IAction action) { 37 38 super.run(action); 39 super.setIsSrcPrec(true); 40 super.setSrcPrec(LaunchCommands.JAVA_IN); 41 super.handleMultipleFiles(); 42 43 if (isDoNotContinue()) return; 44 window = SootPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow(); 46 PhaseOptionsDialog dialog = new PhaseOptionsDialog(window.getShell()); 47 setSdc(new SootDefaultCommands(dialog)); 48 presetDialog(); 49 dialog.open(); 50 51 if (dialog.getReturnCode() == Dialog.CANCEL) { 52 SavedConfigManager scm = new SavedConfigManager(); 53 scm.setEditMap(dialog.getEditMap()); 54 scm.handleEdits(); 55 } 56 else { 57 SootSavedConfiguration ssc = new SootSavedConfiguration("Temp", dialog.getConfig()); 58 ssc.toSaveArray(); 59 60 61 62 setCmd(ssc.toRunArray()); 63 String mainClass = dialog.getSootMainClass(); 64 if ((mainClass == null) || (mainClass.length() == 0)){ 65 runSootDirectly(); 66 } 67 else { 68 runSootDirectly(mainClass); 69 } 70 runFinish(); 71 72 SavedConfigManager scm = new SavedConfigManager(); 74 scm.setEditMap(dialog.getEditMap()); 75 scm.handleEdits(); 76 } 77 78 79 80 81 } 82 83 private void presetDialog() { 84 getSdc().setOutputDir(getOutputLocation()); 85 getSdc().setSootClassPath(getClasspathAppend()); 86 if (isSrcPrec()) { 87 getSdc().setSrcPrec(getSrcPrec()); 88 } 89 getSdc().setKeepLineNum(); 90 getSdc().setPrintTags(); 91 getSdc().setSootMainClass(); 92 } 93 94 private void setCmd(ArrayList user_cmd){ 96 getSootCommandList().addSingleOpt(user_cmd); 97 Iterator it = getToProcessList().iterator(); 98 while (it.hasNext()){ 99 getSootCommandList().addSingleOpt((String )it.next()); 100 } 101 } 102 private void setCmd(String user_cmd) { 103 104 105 getSootCommandList().addSingleOpt(user_cmd); 106 ArrayList commands = new ArrayList (); 107 Iterator it = getToProcessList().iterator(); 108 while (it.hasNext()){ 109 commands.add((String )it.next()); 110 } 111 getSootCommandList().addSingleOpt(commands); 112 113 } 114 115 } 116 | Popular Tags |