📄 sfwindow.java
字号:
// $Id: SFWindow.java,v 1.3.2.2 2003/08/18 22:09:43 cssharp Exp $/* tab:4 * "Copyright (c) 2000-2003 The Regents of the University of California. * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice, the following * two paragraphs and the author appear in all copies of this software. * * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." * * Copyright (c) 2002-2003 Intel Corporation * All rights reserved. * * This file is distributed under the terms in the attached INTEL-LICENSE * file. If you do not find these files, copies can be found by writing to * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, * 94704. Attention: Intel License Inquiry. *//** * File: ControlWindow.java * * Description: * This class displays the GUI that allows the serial forwarder * to be more easily configured * * @author <a href="mailto:bwhull@sourceforge.net">Bret Hull</a> * @author <a href="mailto:dgay@intel-research.net">David Gay</a> */package net.tinyos.sf;import javax.swing.*;import java.awt.*;import java.awt.event.*;import net.tinyos.packet.*;public class SFWindow extends JPanel implements WindowListener { JScrollPane mssgPanel = new JScrollPane(); JTextArea mssgArea = new JTextArea(); BorderLayout toplayout = new BorderLayout(); JTabbedPane pnlTabs = new JTabbedPane(); JLabel labelPacketsSent = new JLabel(); JLabel labelServerPort = new JLabel(); JTextField fieldServerPort = new JTextField(); JLabel labelMoteCom = new JLabel(); JLabel labelPacketsReceived = new JLabel(); JTextField fieldMoteCom = new JTextField(); ButtonGroup bttnGroup = new ButtonGroup(); JPanel pnlMain = new JPanel(); GridLayout gridLayout1 = new GridLayout(); JLabel labelNumClients = new JLabel(); JCheckBox cbVerboseMode = new JCheckBox(); JButton bStopServer = new JButton(); GridLayout gridLayout2 = new GridLayout(); JButton bHelp = new JButton(); JButton bQuit = new JButton(); private SerialForwarder sf; public SFWindow(SerialForwarder SF) { sf = SF; try { jbInit(); } catch(Exception e) { e.printStackTrace(); System.exit(2); } } private void jbInit() throws Exception { this.setLayout(toplayout); mssgPanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); mssgPanel.setAutoscrolls(true); this.setMinimumSize(new Dimension(500, 250)); this.setPreferredSize(new Dimension(500, 300)); labelPacketsSent.setFont(new java.awt.Font("Dialog", 1, 10)); labelPacketsSent.setHorizontalTextPosition(SwingConstants.LEFT); labelPacketsSent.setText("Pckts Read: 0"); labelServerPort.setFont(new java.awt.Font("Dialog", 1, 10)); labelServerPort.setText("Server Port:"); fieldServerPort.setFont(new java.awt.Font("Dialog", 0, 10)); fieldServerPort.setText(Integer.toString (sf.serverPort)); labelMoteCom.setFont(new java.awt.Font("Dialog", 1, 10)); labelMoteCom.setText("Mote Communications:"); labelPacketsReceived.setFont(new java.awt.Font("Dialog", 1, 10)); labelPacketsReceived.setHorizontalTextPosition(SwingConstants.LEFT); labelPacketsReceived.setText("Pckts Wrttn: 0"); fieldMoteCom.setFont(new java.awt.Font("Dialog", 0, 10)); fieldMoteCom.setText(sf.motecom); // Input CheckBoxes ActionListener cbal = new ActionListener() { public void actionPerformed(ActionEvent e) { updateGlobals(); } }; bQuit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { shutdown(); } }); bQuit.setText("Quit"); bQuit.setFont(new java.awt.Font("Dialog", 1, 10)); bHelp.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { sf.message("The Mote communications field must"); sf.message("specify a known packet source, one of:"); sf.message(BuildSource.sourceHelp()); } }); bHelp.setText("Help"); bHelp.setFont(new java.awt.Font("Dialog", 1, 10)); pnlMain.setLayout(gridLayout1); pnlMain.setMinimumSize(new Dimension(150, 75)); pnlMain.setPreferredSize(new Dimension(150, 75)); gridLayout1.setRows(13); labelNumClients.setFont(new java.awt.Font("Dialog", 1, 10)); labelNumClients.setText("Num Clients: 0"); cbVerboseMode.setSelected(sf.verbose.on); cbVerboseMode.setText("Verbose Mode"); cbVerboseMode.setFont(new java.awt.Font("Dialog", 1, 10)); cbVerboseMode.addActionListener(cbal); bStopServer.setFont(new java.awt.Font("Dialog", 1, 10)); bStopServer.setText("Stop Server"); bStopServer.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { if (sf.listenServer != null) { sf.stopListenServer(); } else { updateGlobals(); sf.startListenServer(); } } }); gridLayout2.setRows(15); gridLayout2.setColumns(1); toplayout.setHgap(1); toplayout.setVgap(1); this.add(mssgPanel, BorderLayout.CENTER); this.add(pnlTabs, BorderLayout.EAST); pnlTabs.add(pnlMain, "Main"); // Main Panel Setup pnlMain.add(labelServerPort, null); pnlMain.add(fieldServerPort, null); pnlMain.add(labelMoteCom, null); pnlMain.add(fieldMoteCom, null); pnlMain.add(bStopServer, null); pnlMain.add(cbVerboseMode, null); pnlMain.add(labelPacketsSent, null); pnlMain.add(labelPacketsReceived, null); pnlMain.add(labelNumClients, null); pnlMain.add(bHelp, null); pnlMain.add(bQuit, null); mssgPanel.getViewport().add(mssgArea, null); mssgArea.setFont(new java.awt.Font("Monospaced", Font.PLAIN, 12)); } public synchronized void windowClosing (WindowEvent e) { shutdown(); } public void windowClosed (WindowEvent e) { } public void windowActivated (WindowEvent e) { } public void windowIconified (WindowEvent e) { } public void windowDeactivated (WindowEvent e) { } public void windowDeiconified (WindowEvent e) { } public void windowOpened (WindowEvent e) { } public synchronized void message(String mssg) { mssgArea.append(mssg + "\n"); mssgArea.setCaretPosition(mssgArea.getDocument().getLength()); } public void updatePacketsRead(int numPackets) { labelPacketsSent.setText("Pckts Read: " + numPackets); } public void updatePacketsWritten(int numPackets) { labelPacketsReceived.setText("Pckts Wrttn: " + numPackets); } public void updateNumClients(int numClients) { labelNumClients.setText("Num Clients: " + numClients); } private void updateGlobals() { // set application/communications defaults sf.verbose.on = cbVerboseMode.isSelected(); sf.motecom = fieldMoteCom.getText(); sf.serverPort = Integer.parseInt(fieldServerPort.getText()); } public void updateListenServerStatus(boolean running) { if (!running) { bStopServer.setText("Start Server"); } else { bStopServer.setText("Stop Server"); } } synchronized private void shutdown() { sf.cntrlWndw = null; sf.stopListenServer(); System.out.println("Serial Forwarder Exited Normally\n"); System.exit(0); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -