/*
* XML11 --- An Abstract Windowing Protocol Copyright (c) 2004-2005 by The XML11
* Team
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 675 Mass
* Ave, Cambridge, MA 02139, USA.
*
* For more information, visit the XML11 Home Page at http://www.xml11.org/
*/
package org.xmlvm.demo;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Label;
import java.awt.List;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Testing Layouts
*
*/
public class LayoutDemo implements ActionListener {
private static final String GREETING = "This is a simple application "
+ "demonstrating XML11's layouting\ncapabilities. "
+ "'Dump' writes all text input to the textarea "
+ "at the\nbottom of this windows. 'Clear' removes "
+ "all text from this\ntextarea.";
private Frame _frmMain = null;
private Panel _pnlContent = null;
private Panel _pnlButtons1 = null;
private Panel _pnlButtons2 = null;
private Button _btnDump = null;
private Button _btnClear = null;
private Button _btnExit = null;
private Panel _pnlInput = null;
private TextArea _txtaGreeting = null;
private Label _lblLine1 = null;
private Label _lblLine2 = null;
private TextField _txtLine1 = null;
private TextField _txtLine21 = null;
private TextField _txtLine22 = null;
private TextField _txtLine23 = null;
private List _lstItems = null;
private ImagePanel _pnlImage = null;
private TextArea _txtaDump = null;
private Frame getFrmMain() {
if (_frmMain == null) {
_frmMain = new Frame();
_frmMain.setTitle("Layout Demo");
_frmMain.setBounds(100, 50, 400, 500);
_frmMain.setLayout(new BorderLayout());
_frmMain.add(getPnlContent(), BorderLayout.CENTER);
}
return _frmMain;
}
private Panel getPnlContent() {
if (_pnlContent == null) {
_pnlContent = new Panel();
_pnlContent.setLayout(new BorderLayout());
_pnlContent.add(getPnlInput(), BorderLayout.CENTER);
_pnlContent.add(getPnlButtons1(), BorderLayout.SOUTH);
}
return _pnlContent;
}
private Panel getPnlButtons1() {
FlowLayout layout;
if (_pnlButtons1 == null) {
layout = new FlowLayout();
layout.setAlignment(FlowLayout.RIGHT);
layout.setHgap(10);
layout.setVgap(10);
_pnlButtons1 = new Panel();
_pnlButtons1.setLayout(layout);
_pnlButtons1.add(getPnlButtons2());
}
return _pnlButtons1;
}
private Panel getPnlButtons2() {
GridLayout layout;
if (_pnlButtons2 == null) {
layout = new GridLayout();
layout.setRows(1);
layout.setHgap(10);
_pnlButtons2 = new Panel();
_pnlButtons2.setLayout(layout);
_pnlButtons2.add(getBtnDump(), null);
_pnlButtons2.add(getBtnClear(), null);
_pnlButtons2.add(getBtnExit(), null);
}
return _pnlButtons2;
}
private Button getBtnDump() {
if (_btnDump == null) {
_btnDump = new Button();
_btnDump.setLabel("Dump");
_btnDump.addActionListener(this);
}
return _btnDump;
}
private Button getBtnClear() {
if (_btnClear == null) {
_btnClear = new Button();
_btnClear.setLabel("Clear");
_btnClear.addActionListener(this);
}
return _btnClear;
}
private Button getBtnExit() {
if (_btnExit == null) {
_btnExit = new Button();
_btnExit.setLabel("Exit");
_btnExit.addActionListener(this);
}
return _btnExit;
}
private Panel getPnlInput() {
GridBagConstraints constraints;
if (_pnlInput == null) {
_pnlInput = new Panel();
_pnlInput.setLayout(new GridBagLayout());
constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 4;
constraints.gridheight = 1;
constraints.anchor = GridBagConstraints.CENTER;
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1.0;
constraints.weighty = 0.0;
constraints.insets = new Insets(10, 10, 10, 10);
_pnlInput.add(getTxtaGreeting(), constraints);
constraints.gridx = 0;
constraints.gridy = 1;
constraints.gridwidth = 1;
constraints.anchor = GridBagConstraints.WEST;
constraints.fill = GridBagConstraints.NONE;
constraints.weightx = 0.0;
constraints.weighty = 0.0;
constraints.insets = new Insets(5, 10, 5, 10);
_pnlInput.add(getLblLine1(), constraints);
constraints.gridy = 2;
_pnlInput.add(getLblLine2(), constraints);
constraints.gridx = 1;
constraints.gridy = 1;
constraints.gridwidth = 3;
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weightx = 1.0;
_pnlInput.add(getTxtLine1(), constraints);
constraints.gridy = 2;
constraints.gridwidth = 1;
constraints.weightx = 0.33;
constraints.insets = new Insets(5, 10, 5, 5);
_pnlInput.add(getTxtLine21(), constraints);
constraints.gridx = 2;
constraints.insets = new Insets(5, 5, 5, 5);
_pnlInput.add(getTxtLine22(), constraints);
constraints.gridx = 3;
constraints.insets = new Insets(5, 5, 5, 10);
_pnlInput.add(getTxtLine23(), constraints);
constraints.gridx = 0;
constraints.gridy = 3;
constraints.gridwidth = 2;
constraints.gridheight = 3;
constraints.weightx = 0.66;
constraints.weighty = 0.5;
constraints.anchor = GridBagConstraints.CENTER;
constraints.fill = GridBagConstraints.BOTH;
constraints.insets = new Insets(10, 10, 10, 10);
_pnlInput.add(getLstItems(), constraints);
// _pnlInput.add(getPnlImage(), constraints);
constraints.gridx = 2;
constraints.gridy = 3;
constraints.gridwidth = 2;
constraints.gridheight = 3;
constraints.weightx = 0.66;
constraints.weighty = 0.5;
constraints.anchor = GridBagConstraints.CENTER;
constraints.fill = GridBagConstraints.BOTH;
constraints.insets = new Insets(5, 5, 5, 10);
// _pnlInput.add(getLstItems(), constraints);
_pnlInput.add(getPnlImage(), constraints);
constraints.gridx = 0;
constraints.gridy = 6;
constraints.gridwidth = 4;
constraints.gridheight = 1;
constraints.weightx = 1.0;
constraints.weighty = 0.0;
constraints.anchor = GridBagConstraints.WEST;
constraints.fill = GridBagConstraints.BOTH;
constraints.insets = new Insets(5, 10, 10, 10);
_pnlInput.add(getTxtaDump(), constraints);
}
return _pnlInput;
}
private TextArea getTxtaGreeting() {
if (_txtaGreeting == null) {
_txtaGreeting = new TextArea(5, 50);
_txtaGreeting.setText(GREETING);
_txtaGreeting.setEditable(false);
_txtaGreeting.setBackground(Color.WHITE);
_txtaGreeting.setFocusable(false);
}
return _txtaGreeting;
}
private Label getLblLine1() {
if (_lblLine1 == null) {
_lblLine1 = new Label();
_lblLine1.setText("Line1: ");
}
return _lblLine1;
}
private Label getLblLine2() {
if (_lblLine2 == null) {
_lblLine2 = new Label();
_lblLine2.setText("Line2: ");
}
return _lblLine2;
}
private TextField getTxtLine1() {
if (_txtLine1 == null) {
_txtLine1 = new TextField();
}
return _txtLine1;
}
private TextField getTxtLine21() {
if (_txtLine21 == null) {
_txtLine21 = new TextField();
}
return _txtLine21;
}
private TextField getTxtLine22() {
if (_txtLine22 == null) {
_txtLine22 = new TextField();
}
return _txtLine22;
}
private TextField getTxtLine23() {
if (_txtLine23 == null) {
_txtLine23 = new TextField();
}
return _txtLine23;
}
private List getLstItems() {
if (_lstItems == null) {
_lstItems = new List();
for (int i = 0; i < 5; i++) {
_lstItems.add("Item " + i);
}
}
return _lstItems;
}
private ImagePanel getPnlImage() {
if (_pnlImage == null) {
_pnlImage = new ImagePanel("doc/xml11_tiny.png");
}
return _pnlImage;
}
private TextArea getTxtaDump() {
if (_txtaDump == null) {
_txtaDump = new TextArea(5, 50);
_txtaDump.setEditable(false);
_txtaDump.setBackground(Color.WHITE);
_txtaDump.setFocusable(false);
}
return _txtaDump;
}
private void dumpTextFields() {
SimpleDateFormat formatter;
formatter = new SimpleDateFormat("MM/dd/yyyy, HH:mm:ss");
_txtaDump.append("========== " + formatter.format(new Date())
+ " ==========\n");
_txtaDump.append("Line1: " + _txtLine1.getText() + "\n");
_txtaDump.append("Line2: " + _txtLine21.getText() + "/"
+ _txtLine22.getText() + "/" + _txtLine23.getText() + "\n");
_txtaDump.append("Selected: " + _lstItems.getSelectedItem() + "\n");
// _txtaDump.append("Line3: " + _txtLine3.getText() + "\n");
// _txtaDump.append("Line4: " + _txtLine4.getText() + "\n");
_txtaDump.append("========== " + formatter.format(new Date())
+ " ==========\n\n");
}
/*
* (non-Javadoc)
*
* @see
* java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
if (e.getSource() == _btnDump)
// Dump
dumpTextFields();
if (e.getSource() == _btnClear)
// Clear
_txtaDump.setText("");
if (e.getSource() == _btnExit)
// Exit
System.exit(0);
}
private void runApp() {
getFrmMain().setVisible(true);
}
public static void main(String[] args) {
new LayoutDemo().runApp();
}
}