/*
* Copyright (c) 2014 tabletoptool.com team.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* rptools.com team - initial implementation
* tabletoptool.com team - further development
*/
package com.t3.client.swing;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.text.JTextComponent;
public class NoteFrame extends JFrame {
private JTextComponent noteArea;
private JButton clearButton;
private JButton closeButton;
public NoteFrame() {
setPreferredSize(new Dimension(300, 300));
initUI();
}
private void initUI() {
setLayout(new BorderLayout());
add(BorderLayout.CENTER, new JScrollPane(getNoteArea()));
add(BorderLayout.SOUTH, createButtonBar());
}
private JTextComponent getNoteArea() {
if (noteArea == null) {
noteArea = new JTextArea();
noteArea.setBorder(BorderFactory.createLineBorder(Color.black));
}
return noteArea;
}
private JPanel createButtonBar() {
JPanel panel = new JPanel(new BorderLayout());
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
panel.add(BorderLayout.WEST, getClearButton());
panel.add(BorderLayout.EAST, getCloseButton());
return panel;
}
private JButton getClearButton() {
if (clearButton == null) {
clearButton = new JButton("Clear");
clearButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
getNoteArea().setText("");
}
});
}
return clearButton;
}
private JButton getCloseButton() {
if (closeButton == null) {
closeButton = new JButton("Close");
closeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
processWindowEvent(new WindowEvent(NoteFrame.this, WindowEvent.WINDOW_CLOSING));
}
});
}
return closeButton;
}
public synchronized void addText(String text) {
getNoteArea().setText(getNoteArea().getText() + text + "\n");
getNoteArea().setCaretPosition(getNoteArea().getText().length());
}
}