/************************************************************************** /* This class shows a simple GUI created with Swt /* /* Copyright (c) 2002 by Bernhard Bablok (mail@bablokb.de) /* /* 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; see the file COPYING. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ import org.eclipse.swt.*; import org.eclipse.swt.widgets.*; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.graphics.*; /** This class shows a simple GUI created with Swt @version $Revision: 1.1 $ @author $Author: Bablokb $ */ public class SwtGui { private final int WINDOW_WIDTH = 300, WINDOW_HEIGHT = 200; private Display iDisplay; private Shell iMainWindow; private Composite iInputPanel; private Label iLabel; private Text iTextArea; private Text iEntryField; private Button iButton; private Color iColorWhite; ////////////////////////////////////////////////////////////////////////////// /** Constructor. */ public SwtGui() { iDisplay = new Display(); iMainWindow = new Shell(iDisplay); iMainWindow.setText("SWT-Example"); iColorWhite = new Color(iDisplay,255,255,255); } ////////////////////////////////////////////////////////////////////////////// /** Create GUI using Swt. */ private void createGUI() { FillLayout layout = new FillLayout(); // layout.justify = true; // layout.pack = true; // layout.wrap = false; layout.type = SWT.VERTICAL; iMainWindow.setLayout(layout); iTextArea = new Text(iMainWindow,SWT.MULTI); iTextArea.setBackground(iColorWhite); createPanel(); iMainWindow.setMenuBar(createMenuBar()); iMainWindow.setSize(WINDOW_WIDTH,WINDOW_HEIGHT); Rectangle screenSize = iDisplay.getClientArea(); iMainWindow.setLocation((screenSize.width - WINDOW_WIDTH)/2, (screenSize.height - WINDOW_HEIGHT)/2); iEntryField.setFocus(); } ////////////////////////////////////////////////////////////////////////////// /** Create input panel using Swt. */ private void createPanel() { iInputPanel = new Composite(iMainWindow,SWT.NULL); RowLayout layout = new RowLayout(); layout.justify = true; layout.wrap = false; layout.type = SWT.HORIZONTAL; iInputPanel.setLayout(new RowLayout()); iLabel = new Label(iInputPanel,SWT.LEFT); iLabel.setText("Text: "); iEntryField = new Text(iInputPanel,SWT.SINGLE); iEntryField.setBackground(iColorWhite); iButton = new Button(iInputPanel,SWT.PUSH | SWT.CENTER); iButton.setText("Add"); iButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { iTextArea.append(iEntryField.getText()); iTextArea.append("\n"); } } ); } ////////////////////////////////////////////////////////////////////////////// /** Create menu using Swt. */ private Menu createMenuBar() { Menu mb = new Menu(iMainWindow,SWT.BAR); Menu fileMenu = new Menu(mb); MenuItem fileMenuItem = new MenuItem(mb,SWT.CASCADE); fileMenuItem.setText("File"); fileMenuItem.setMenu(fileMenu); MenuItem exitItem = new MenuItem(fileMenu,SWT.PUSH); exitItem.setText("Exit"); exitItem.addSelectionListener(new SelectionAdapter () { public void widgetSelected(SelectionEvent e) { exit(); } }); Menu helpMenu = new Menu(mb); MenuItem helpMenuItem = new MenuItem(mb,SWT.CASCADE); helpMenuItem.setText("Help"); helpMenuItem.setMenu(helpMenu); MenuItem aboutItem = new MenuItem(helpMenu,SWT.PUSH); aboutItem.setText("About..."); aboutItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { about(); } } ); return mb; } ////////////////////////////////////////////////////////////////////////////// /** Close window and leave application. */ void exit() { iMainWindow.setVisible(false); iMainWindow.dispose(); } ////////////////////////////////////////////////////////////////////////////// /** Show about-dialog. */ void about() { MessageBox box = new MessageBox(iMainWindow,SWT.ICON_INFORMATION|SWT.OK); box.setText("About SWT-Example"); box.setMessage("SWT-Example class: " + SwtGui.class.getName()); box.open(); } ////////////////////////////////////////////////////////////////////////////// /** Main event loop */ private void processLoop() { iMainWindow.open(); while (!iMainWindow.isDisposed()) { if (!iDisplay.readAndDispatch()) iDisplay.sleep(); } iDisplay.dispose(); } ////////////////////////////////////////////////////////////////////////////// /** Main entry point */ public static void main(String[] args) { SwtGui gui = new SwtGui(); gui.createGUI(); gui.processLoop(); } }