1 4 package com.tc; 5 6 import com.tc.admin.common.OutputStreamListener; 7 import com.tc.admin.common.StreamReader; 8 import com.tc.admin.common.TextComponentHelper; 9 import com.tc.admin.common.TextPaneUpdater; 10 import com.tc.admin.common.XTextPane; 11 12 import javax.swing.JPopupMenu ; 13 import javax.swing.SwingUtilities ; 14 import javax.swing.UIManager ; 15 16 public class ProcessOutputView extends XTextPane { 17 private StreamReader m_errorStreamReader; 18 private StreamReader m_outputStreamReader; 19 private String m_listenerTrigger; 20 private OutputStreamListener m_listener; 21 22 public ProcessOutputView() { 23 super(); 24 } 25 26 protected TextComponentHelper createHelper() { 27 return new Helper(); 28 } 29 30 class Helper extends TextComponentHelper { 31 Helper() { 32 super(ProcessOutputView.this); 33 } 34 protected void addCutAction(JPopupMenu popup) {} 35 protected void addPasteAction(JPopupMenu popup) {} 36 } 37 38 public void setListener(OutputStreamListener listener) { 39 m_listener = listener; 40 41 if(m_errorStreamReader != null) { 42 m_errorStreamReader.setTriggerListener(m_listener); 43 } 44 if(m_outputStreamReader != null) { 45 m_outputStreamReader.setTriggerListener(m_listener); 46 } 47 } 48 49 public OutputStreamListener getListener() { 50 return m_listener; 51 } 52 53 public void setListenerTrigger(String trigger) { 54 m_listenerTrigger = trigger; 55 56 if(m_errorStreamReader != null) { 57 m_errorStreamReader.setTrigger(trigger); 58 } 59 if(m_outputStreamReader != null) { 60 m_outputStreamReader.setTrigger(trigger); 61 } 62 } 63 64 public String getListenerTrigger() { 65 return m_listenerTrigger; 66 } 67 68 public void start(Process process) { 69 if(m_errorStreamReader != null || m_outputStreamReader != null) { 70 stop(); 71 } 72 73 m_errorStreamReader = new StreamReader(process.getErrorStream(), 74 new TextPaneUpdater(this), 75 m_listener, 76 m_listenerTrigger); 77 m_errorStreamReader.start(); 78 79 m_outputStreamReader = new StreamReader(process.getInputStream(), 80 new TextPaneUpdater(this), 81 m_listener, 82 m_listenerTrigger); 83 m_outputStreamReader.start(); 84 } 85 86 public void stop() { 87 m_errorStreamReader.finish(); 88 m_outputStreamReader.finish(); 89 } 90 91 public void append(String text) { 92 SwingUtilities.invokeLater(new TextPaneUpdater(this, text)); 93 } 94 95 public void stopAndClear() { 96 stop(); 97 setContent(""); 98 } 99 100 class TextClearer implements Runnable { 101 public void run() { 102 ProcessOutputView.this.setText(""); 103 } 104 } 105 106 public void setEnabled(boolean enabled) { 107 String key = enabled ? "TextPane.foreground" : "TextPane.inactiveForeground"; 108 setForeground(UIManager.getColor(key)); 109 } 110 111 public boolean isEnabled() { 112 return true; 113 } 114 } 115 | Popular Tags |