KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > uk > ac > roe > antigen > dialogs > BuildLoggerFrame


1 package uk.ac.roe.antigen.dialogs;
2
3 import java.awt.BorderLayout JavaDoc;
4 import java.awt.event.ActionEvent JavaDoc;
5 import java.awt.event.ActionListener JavaDoc;
6 import java.io.BufferedOutputStream JavaDoc;
7 import java.io.IOException JavaDoc;
8 import java.io.InputStreamReader JavaDoc;
9 import java.io.OutputStream JavaDoc;
10 import java.io.PrintStream JavaDoc;
11 import java.nio.ByteBuffer JavaDoc;
12 import java.nio.charset.Charset JavaDoc;
13 import java.util.logging.Logger JavaDoc;
14
15 import javax.swing.BorderFactory JavaDoc;
16 import javax.swing.ImageIcon JavaDoc;
17 import javax.swing.JButton JavaDoc;
18 import javax.swing.JPanel JavaDoc;
19 import javax.swing.JProgressBar JavaDoc;
20 import javax.swing.JScrollPane JavaDoc;
21 import javax.swing.JTextArea JavaDoc;
22 import javax.swing.border.BevelBorder JavaDoc;
23 import javax.swing.border.LineBorder JavaDoc;
24
25 import org.apache.tools.ant.BuildEvent;
26 import org.apache.tools.ant.BuildLogger;
27 import org.apache.tools.ant.DefaultLogger;
28
29 import sun.rmi.runtime.Log;
30 import uk.ac.roe.antigen.utils.Config;
31
32
33
34
35
36 public class BuildLoggerFrame extends AntigenFrame {
37     /**
38      * Logger for this class
39      */

40     private static final Logger JavaDoc logger = Logger.getLogger(BuildLoggerFrame.class.getName());
41
42     private JTextArea JavaDoc outputArea;
43
44     private JPanel JavaDoc buttons;
45
46     private JScrollPane JavaDoc jScrollPane1;
47     private JProgressBar JavaDoc jProgressBar1;
48
49     private JButton JavaDoc okBtn;
50
51     /**
52      * Auto-generated main method to display this JDialog
53      */

54     public static void main(String JavaDoc[] args) {
55         Config.load("/config.properties");
56         BuildLoggerFrame inst = new BuildLoggerFrame();
57         inst.setVisible(true);
58         PrintStream JavaDoc test = new PrintStream JavaDoc(inst.new LocalOutputStream());
59         test.println("Hello World");
60     }
61
62     public class InstallerAntLogger extends DefaultLogger {
63         /**
64          * Logger for this class
65          */

66         private final Logger JavaDoc logger = Logger.getLogger(InstallerAntLogger.class.getName());
67
68
69         /* (non-Javadoc)
70          * @see org.apache.tools.ant.BuildListener#taskFinished(org.apache.tools.ant.BuildEvent)
71          */

72         public void taskFinished(BuildEvent arg0) {
73             super.taskFinished(arg0);
74           // System.out.println("Task finished");
75
incrementProgress();
76         }
77     }
78
79     private PrintStream JavaDoc printStream = new PrintStream JavaDoc(new BufferedOutputStream JavaDoc(new LocalOutputStream()));
80     
81     public BuildLoggerFrame() {
82         super();
83         initGUI2();
84         antLogger = new InstallerAntLogger();
85         
86         antLogger.setOutputPrintStream(getPrintStream());
87         System.setOut(getPrintStream());
88     }
89
90     /**
91      * @return Returns the printStream to access the build pane.
92      */

93     PrintStream JavaDoc getPrintStream() {
94         return printStream;
95     }
96
97     private class LocalOutputStream extends OutputStream JavaDoc {
98         /**
99          * The number of chars in the window will be between [MAX_CHARS_IN_WINDOW/2,MAX_CHARS_IN_WINDOW]
100          */

101         private static final int MAX_CHARS_IN_WINDOW = 40000;
102         /**
103          * Kludge to get default char set
104          */

105         private Charset JavaDoc defaultCharSet = Charset.forName(new InputStreamReader JavaDoc(System.in).getEncoding());
106         
107         public void write(byte[] b, int off, int len) {
108             ByteBuffer JavaDoc buffer = ByteBuffer.wrap(b, off, len);
109
110             String JavaDoc newText = defaultCharSet.decode(buffer).toString();
111             outputArea.append(newText);
112             
113             String JavaDoc allText = outputArea.getText();
114             int allTextLength = allText.length();
115             if (allTextLength>MAX_CHARS_IN_WINDOW) {
116                 String JavaDoc cutText = allText.substring(allTextLength-MAX_CHARS_IN_WINDOW/2);
117                 outputArea.setText(cutText);
118                 logger.fine(""+cutText.length());
119                 allTextLength=MAX_CHARS_IN_WINDOW/2;
120             }
121             
122             outputArea.setCaretPosition(allTextLength);
123         }
124
125         /*
126          * (non-Javadoc)
127          *
128          * @see java.io.OutputStream#write(int)
129          */

130         public void write(int arg0) throws IOException JavaDoc {
131             char[] chars = { (char) arg0 };
132             String JavaDoc newText = new String JavaDoc(chars);
133             outputArea.append(newText);
134             outputArea.setCaretPosition(outputArea.getText().length());
135         }
136
137     }
138
139     /**
140      *
141      */

142     private void initGUI2() {
143         {
144             jScrollPane1 = new JScrollPane JavaDoc();
145             workPanel.add(jScrollPane1, BorderLayout.CENTER);
146             jScrollPane1.setAutoscrolls(true);
147             jScrollPane1
148                 .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
149             {
150                 outputArea = new JTextArea JavaDoc();
151                 jScrollPane1.setViewportView(outputArea);
152                 //outputArea.setText("Build log:");
153
outputArea.setBorder(new LineBorder JavaDoc(new java.awt.Color JavaDoc(
154                     0,
155                     255,
156                     255), 1, true));
157                 outputArea.setBackground(new java.awt.Color JavaDoc(0, 0, 0));
158                 outputArea
159                     .setForeground(new java.awt.Color JavaDoc(0, 255, 255));
160                 outputArea.setLineWrap(true);
161                 outputArea.setEditable(false);
162                 outputArea.setFocusable(false);
163             }
164         }
165         {
166             jProgressBar1 = new JProgressBar JavaDoc();
167             workPanel.add(jProgressBar1, BorderLayout.SOUTH);
168             jProgressBar1.setSize(400, 14);
169             jProgressBar1.setBorder(BorderFactory.createBevelBorder(
170                 BevelBorder.LOWERED,
171                 null,
172                 null,
173                 null,
174                 null));
175         }
176         {
177             buttons = new JPanel JavaDoc();
178             southPanel.add(buttons, BorderLayout.SOUTH);
179             buttons.setOpaque(false);
180             {
181                 okBtn = new JButton JavaDoc();
182                 buttons.add(okBtn);
183                 okBtn.setText("Done");
184                 okBtn.setEnabled(false);
185                 okBtn.setIcon(new ImageIcon JavaDoc(getClass().getClassLoader()
186                     .getResource("img/exit.png")));
187                 okBtn.addActionListener(new ActionListener JavaDoc() {
188                     public void actionPerformed(ActionEvent JavaDoc evt) {
189                         shutDown();
190                     }
191                 });
192             }
193         }
194     }
195
196     private DefaultLogger antLogger;
197
198     private int numberOfTasks;
199
200     public BuildLogger getBuildLogger() {
201         return antLogger;
202     }
203
204     public void incrementProgress() {
205        jProgressBar1.setMaximum(numberOfTasks-1);
206        jProgressBar1.setValue(currentTaskNumber++);
207     logger.fine("incrementProgress() - current task " + currentTaskNumber
208             + " / " + numberOfTasks);
209     }
210     private int currentTaskNumber = 0;
211     /**
212      * @param numberOfTasks
213      */

214     public void setNumberOfTasks(int numberOfTasks) {
215         this.numberOfTasks = numberOfTasks;
216     }
217
218
219     public void setFinished() {
220         jProgressBar1.setValue(jProgressBar1.getMaximum());
221         okBtn.setEnabled(true);
222     }
223
224     /**
225      * Time to clean up and closedown
226      */

227     public void shutDown() {
228         logger.info("BuildLogger window closing");
229         dispose();
230     }
231
232 }
Popular Tags