1 21 package proguard.gui; 22 23 import java.awt.*; 24 import java.io.*; 25 26 import javax.swing.*; 27 28 import proguard.*; 29 30 31 38 class ProGuardRunnable implements Runnable 39 { 40 private JTextArea consoleTextArea; 41 private Configuration configuration; 42 private String configurationFileName; 43 44 45 52 public ProGuardRunnable(JTextArea consoleTextArea, 53 Configuration configuration, 54 String configurationFileName) 55 { 56 this.consoleTextArea = consoleTextArea; 57 this.configuration = configuration; 58 this.configurationFileName = configurationFileName; 59 } 60 61 62 64 public void run() 65 { 66 consoleTextArea.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 67 consoleTextArea.setText(""); 68 69 PrintStream oldOut = System.out; 71 PrintStream oldErr = System.err; 72 73 PrintStream printStream = 74 new PrintStream(new TextAreaOutputStream(consoleTextArea), true); 75 76 System.setOut(printStream); 77 System.setErr(printStream); 78 79 try 80 { 81 ProGuard proGuard = new ProGuard(configuration); 83 84 proGuard.execute(); 86 87 System.out.println("Processing completed successfully"); 89 } 90 catch (Exception ex) 91 { 92 94 System.out.println(ex.getMessage()); 96 97 MessageDialogRunnable.showMessageDialog(consoleTextArea, 99 ex.getMessage(), 100 msg("errorProcessing"), 101 JOptionPane.ERROR_MESSAGE); 102 } 103 catch (OutOfMemoryError er) 104 { 105 System.gc(); 107 108 System.out.println(msg("outOfMemoryInfo", configurationFileName)); 110 111 MessageDialogRunnable.showMessageDialog(consoleTextArea, 113 msg("outOfMemory"), 114 msg("errorProcessing"), 115 JOptionPane.ERROR_MESSAGE); 116 } 117 118 printStream.flush(); 120 121 System.setOut(oldOut); 123 System.setErr(oldErr); 124 125 consoleTextArea.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); 126 127 ProGuardGUI.systemOutRedirected = false; 129 } 130 131 132 134 138 private String msg(String messageKey) 139 { 140 return GUIResources.getMessage(messageKey); 141 } 142 143 144 148 private String msg(String messageKey, 149 Object messageArgument) 150 { 151 return GUIResources.getMessage(messageKey, new Object [] {messageArgument}); 152 } 153 } 154 | Popular Tags |