/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
/**
* Copyright (c) 2007, Aberystwyth University
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* - Neither the name of the Centre for Advanced Software and
* Intelligent Systems (CASIS) nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
package org.purl.sword.client;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/**
* Panel to display output messages. Text or characters can be sent to the
* panel for display. The panel also includes a button to clear any
* text that is currently displayed.
*
* @author Neil Taylor
*/
public class MessageOutputPanel extends JPanel
implements ActionListener
{
/**
* The text area that displays the messages.
*/
private JTextArea messages = null;
/**
* Create a new instance and initialise the panel.
*/
public MessageOutputPanel()
{
super();
setLayout(new GridBagLayout());
messages = new JTextArea();
JScrollPane detailsPane = new JScrollPane(messages,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
JButton clearButton = new JButton("Clear");
clearButton.addActionListener(this);
//add components and set constraints
//dpc = details pane constraint
GridBagConstraints dpc = new GridBagConstraints();
dpc.gridx = 0;
dpc.gridy = 0;
dpc.fill = GridBagConstraints.BOTH;
dpc.weightx = 0.75;
dpc.weighty = 0.45;
dpc.gridwidth = 2;
dpc.insets = new Insets(5,5,5,5);
add(detailsPane,dpc);
//cbc = clear button constraint
GridBagConstraints cbc = new GridBagConstraints();
cbc.gridx = 1;
cbc.gridy = 1;
cbc.insets = new Insets(0,0,5,5);
cbc.anchor = GridBagConstraints.LINE_END;
add(clearButton,cbc);
}
/**
* Add a message to the text area. The message will be added with a carriage return.
*
* @param message The message.
*/
public void addMessage(String message)
{
messages.insert(message + "\n", messages.getDocument().getLength());
}
/**
* Add a single character to the text area.
*
* @param character The character.
*/
public void addCharacter(Character character)
{
messages.insert(character.toString(), messages.getDocument().getLength());
}
/**
* Clear the text from the display.
*
* @param arg0 The action event.
*
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent arg0)
{
messages.setText("");
}
}