ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/core/loggers/SimpleSwingLogger.java
Revision: 1.13
Committed: Fri Feb 21 13:45:49 2003 UTC (21 years, 2 months ago) by tdb
Branch: MAIN
Changes since 1.12: +4 -4 lines
Log Message:
Main change is making the use of jacorb.properties transparent to the end
user - something which should have been done with CorbaServices a long time
ago :-) Now a base jacorb.properties is included in the jar files, because
it's searched by the jacorb loading stuff. The only value outside of the
jar file is the naming service location, which can now be found in the
default.properties files.

The server and corbaservices assume that the naming services is running on
localhost on port 8052, which is ok for most normal things. If it's on a
different host the default.properties just needs fixing.

Also added a default.properties style thing to the corbaservices, and fixed
some bugs in the command line argument parsing.

Finally, fixed a bug with the make src target of all the Makefiles.

File Contents

# User Rev Content
1 tdb 1.10 /*
2     * i-scream central monitoring system
3 tdb 1.11 * http://www.i-scream.org.uk
4 tdb 1.10 * Copyright (C) 2000-2002 i-scream
5     *
6     * This program is free software; you can redistribute it and/or
7     * modify it under the terms of the GNU General Public License
8     * as published by the Free Software Foundation; either version 2
9     * of the License, or (at your option) any later version.
10     *
11     * This program is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with this program; if not, write to the Free Software
18     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19     */
20    
21 ajm 1.1 //---PACKAGE DECLARATION---
22 tdb 1.9 package uk.org.iscream.cms.server.core.loggers;
23 ajm 1.1
24     //---IMPORTS---
25 tdb 1.12 import uk.org.iscream.cms.util.*;
26 tdb 1.9 import uk.org.iscream.cms.server.core.*;
27 ajm 1.1 import java.util.Date;
28     import java.text.DateFormat;
29     import java.util.Locale;
30     import javax.swing.*;
31 ajm 1.2 import javax.swing.border.*;
32     import java.awt.Color;
33 ajm 1.1
34     /**
35 ajm 1.5 * The SimpleSwingLogger is an implementation of the LoggerImpl defined
36 ajm 1.1 * in the associated interface. It's only purpose is to simply print
37     * all the logging information it receives to a window frame.
38     *
39     * All very simple really...
40     *
41 ajm 1.5 * This class does have the problem that if too many messages are
42     * entered into the text area, then it will fill the memory of
43     * the JVM. This MAY have been fixed by adding the setRows(int)
44     * in the write(string) method, however the Java API does not
45     * specify if this enforces the max rows, but I THINK it does.
46     *
47 tdb 1.10 * @author $Author: tdb $
48 tdb 1.13 * @version $Id: SimpleSwingLogger.java,v 1.12 2003/02/05 16:43:47 tdb Exp $
49 ajm 1.1 */
50 ajm 1.4 public class SimpleSwingLogger extends JFrame implements LoggerImpl {
51 ajm 1.1
52     //---FINAL ATTRIBUTES---
53    
54     /**
55     * The current CVS revision of this class
56     */
57 tdb 1.13 public final String REVISION = "$Revision: 1.12 $";
58 ajm 1.1
59 ajm 1.2 private final int width = 700;
60     private final int height = 400;
61    
62 ajm 1.1 //---STATIC METHODS---
63    
64     //---CONSTRUCTORS---
65    
66     /**
67 ajm 1.2 * Creates a new Simple Swing Logger.
68 ajm 1.1 */
69 ajm 1.2 public SimpleSwingLogger() {
70 tdb 1.9 _maxMessages = Integer.parseInt(System.getProperty("uk.org.iscream.cms.server.LoggerClass.SimpleSwingLogger.maxMessages"));
71 ajm 1.2 System.out.println(this.toString() + ": opening window");
72    
73     // set up the Frame
74     setTitle("I-Scream Logger");
75     setSize(width, height);
76     getContentPane().setBackground(Color.white);
77     setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
78     Box box = Box.createVerticalBox();
79    
80     // create the i-scream logo at the top
81 tdb 1.13 JLabel iscream = new JLabel(new ImageIcon(getClass().getResource("/uk/org/iscream/cms/server/core/loggers/i-scream.gif")));
82     JLabel comment = new JLabel(" i-scream System Logging Console");
83 ajm 1.3 comment.setForeground( new Color(0, 0, 102));
84 ajm 1.2 iscream.setBackground(Color.white);
85 ajm 1.3 comment.setBackground(Color.white);
86 ajm 1.2 Box header = Box.createHorizontalBox();
87 ajm 1.3 header.add(comment);
88 ajm 1.2 header.add(Box.createHorizontalGlue());
89     header.add(iscream);
90    
91     // set up the text area
92     _textArea.setEditable(false);
93     JScrollPane text = new JScrollPane(_textArea);
94     text.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 102)), " Messages "));
95     text.setBackground(Color.white);
96    
97     // build the frame
98     box.add(header);
99     box.add(text);
100     getContentPane().add(box);
101    
102     // show the window
103     show();
104 ajm 1.5 write(toString(), Logger.SYSINIT, "started");
105 ajm 1.1 }
106    
107     //---PUBLIC METHODS---
108    
109     /**
110 tdb 1.7 * The write() method takes a line of text, pre-formatted
111     * and outputs it using a method defined by the actual
112     * implementation. The verbosity is given in case the
113     * implementation wishes to utilise it in the layout -
114     * eg. a different colour or font.
115     *
116     * This instance writes the line to a Swing based GUI
117     * logger.
118     *
119     * @param line A line of formatted text to be logged
120     * @param verbosity the verbosity of this message
121     */
122 tdb 1.6 public synchronized void write(String line, int verbosity) {
123     _textArea.insert(line + "\n",0);
124     _textArea.setRows(_maxMessages);
125 ajm 1.1 }
126    
127     /**
128     * Overrides the {@link java.lang.Object#toString() Object.toString()}
129     * method to provide clean logging (every class should have this).
130     *
131 tdb 1.12 * This uses the uk.org.iscream.cms.util.FormatName class
132 ajm 1.5 * to format the toString()
133     *
134 ajm 1.1 * @return the name of this class and its CVS revision
135     */
136     public String toString() {
137 ajm 1.5 return FormatName.getName(
138     _name,
139     getClass().getName(),
140     REVISION);
141 ajm 1.1 }
142 ajm 1.5
143 ajm 1.1 //---PRIVATE METHODS---
144    
145 tdb 1.7 /**
146     * This method is provided if this class wishes to log
147     * a message itself.
148     *
149     * @param source A String representation of the source
150     * @param verbosity the verbosity of this message
151     * @param message The message to log
152     */
153 tdb 1.6 private void write(String source, int verbosity, String message) {
154     write(FormatName.formatLogLine(source, verbosity, message), verbosity);
155 ajm 1.1 }
156    
157     //---ACCESSOR/MUTATOR METHODS---
158    
159 ajm 1.2 //---ATTRIBUTES---
160 ajm 1.1
161 ajm 1.2 /**
162     * A text area to write log messages to
163     */
164 ajm 1.1 private JTextArea _textArea = new JTextArea();
165 ajm 1.5
166     /**
167     * The maximum number of messages that can
168     * be displayed before bottom items are removed.
169     * This is needed to fix the memory overload problem
170     * that was seen when the GUI got too full!
171     */
172     private int _maxMessages;
173    
174     /**
175     * This is the friendly identifier of the
176     * component this class is running in.
177     * eg, a Filter may be called "filter1",
178     * If this class does not have an owning
179     * component, a name from the configuration
180     * can be placed here. This name could also
181     * be changed to null for utility classes.
182     */
183     private String _name = Core.NAME;
184 ajm 1.1
185     //---STATIC ATTRIBUTES---
186    
187 tdb 1.12 }