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 SootOptionsFileLauncher extends SootFileLauncher { 35 36 public void run(IAction action) { 37 38 super.run(action); 39 super.handleMultipleFiles(); 40 41 if (isDoNotContinue()) return; 42 window = SootPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow(); 44 45 PhaseOptionsDialog dialog = new PhaseOptionsDialog(window.getShell()); 46 setSdc(new SootDefaultCommands(dialog)); 47 presetDialog(); 48 dialog.open(); 49 50 if (dialog.getReturnCode() == Dialog.CANCEL) { 51 SavedConfigManager scm = new SavedConfigManager(); 52 scm.setEditMap(dialog.getEditMap()); 53 scm.handleEdits(); 54 } 55 else { 56 SootSavedConfiguration ssc = new SootSavedConfiguration("Temp", dialog.getConfig()); 57 ssc.toSaveArray(); 58 59 60 61 setCmd(ssc.toRunArray()); 62 String mainClass = dialog.getSootMainClass(); 63 if ((mainClass == null) || (mainClass.length() == 0)){ 64 runSootDirectly(); 65 } 66 else { 67 runSootDirectly(mainClass); 68 } 69 runFinish(); 70 71 SavedConfigManager scm = new SavedConfigManager(); 73 scm.setEditMap(dialog.getEditMap()); 74 scm.handleEdits(); 75 } 76 77 78 79 80 } 81 82 private void presetDialog() { 83 getSdc().setOutputDir(getOutputLocation()); 84 getSdc().setSootClassPath(getClasspathAppend()); 85 if (isSrcPrec()) { 86 getSdc().setSrcPrec(getSrcPrec()); 87 } 88 getSdc().setKeepLineNum(); 89 getSdc().setPrintTags(); 90 getSdc().setSootMainClass(); 91 } 92 93 private void setCmd(ArrayList user_cmd){ 95 getSootCommandList().addSingleOpt(user_cmd); 96 Iterator it = getToProcessList().iterator(); 97 while (it.hasNext()){ 98 getSootCommandList().addSingleOpt((String )it.next()); 99 } 100 } 101 private void setCmd(String user_cmd) { 102 103 104 getSootCommandList().addSingleOpt(user_cmd); 105 ArrayList commands = new ArrayList (); 106 Iterator it = getToProcessList().iterator(); 107 while (it.hasNext()){ 108 commands.add((String )it.next()); 109 } 110 getSootCommandList().addSingleOpt(commands); 111 112 } 113 114 } 115 | Popular Tags |