KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > ProcessOutputView


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

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 JavaDoc;
13 import javax.swing.SwingUtilities JavaDoc;
14 import javax.swing.UIManager JavaDoc;
15
16 public class ProcessOutputView extends XTextPane {
17   private StreamReader m_errorStreamReader;
18   private StreamReader m_outputStreamReader;
19   private String JavaDoc 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 JavaDoc popup) {/**/}
35     protected void addPasteAction(JPopupMenu JavaDoc 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 JavaDoc 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 JavaDoc getListenerTrigger() {
65     return m_listenerTrigger;
66   }
67   
68   public void start(Process JavaDoc 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 JavaDoc 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 JavaDoc {
101     public void run() {
102       ProcessOutputView.this.setText("");
103     }
104   }
105
106   public void setEnabled(boolean enabled) {
107     String JavaDoc 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