office-gobmx/toolkit/test/accessibility/MessageArea.java

124 lines
2.9 KiB
Java
Raw Normal View History

import java.awt.Font;
import java.awt.Rectangle;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JScrollBar;
/** A message area displays text in a scrollable text widget. It is a
singleton. Other objects can access it directly to display messages.
*/
public class MessageArea
extends JScrollPane
{
public static synchronized MessageArea Instance ()
{
if (saInstance == null)
saInstance = new MessageArea ();
return saInstance;
}
/** Create a new message area. This method is private because the class is
a singleton and may therefore not be instanciated from the outside.
*/
private MessageArea ()
{
maText = new JTextArea();
maText.setBackground (new Color (255,250,240));
maText.setFont (new Font ("Helvetica", Font.PLAIN, 9));
setViewportView (maText);
setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setHorizontalScrollBarPolicy (JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
printMessage (
"class path is " + System.getProperty ("java.class.path") + "\n");
}
/** Show the given string at the end of the message area and scroll to make
it visible.
*/
public static synchronized void print (String aMessage)
{
print (0, aMessage);
}
/** Show the given string at the end of the message area and scroll to make
it visible. Indent the string as requested.
*/
public static synchronized void print (int nIndentation, String aMessage)
{
while (nIndentation-- > 0)
aMessage = " " + aMessage;
Instance().printMessage(aMessage);
}
/** Show the given string at the end of the message area and scroll to make
it visible.
*/
public static void println (String aMessage)
{
println (0, aMessage);
}
/** Show the given string at the end of the message area and scroll to make
it visible.
*/
public static void println (int nIndentation, String aMessage)
{
print (nIndentation, aMessage+"\n");
}
public void paintComponent (Graphics g)
{
synchronized (g)
{
JScrollBar sb = getVerticalScrollBar();
if (sb != null)
{
int nScrollBarValue = sb.getMaximum() - sb.getVisibleAmount() - 1;
sb.setValue (nScrollBarValue);
}
super.paintComponent (g);
}
}
/** Append the given string to the end of the text and scroll so that it
becomes visible. This is an internal method. Use one of the static
and public ones.
*/
private synchronized void printMessage (String aMessage)
{
maText.append (aMessage);
}
private static MessageArea saInstance = null;
private JTextArea maText;
}