⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 moteplugin.java

📁 无线通信的主要编程软件,是无线通信工作人员的必备工具,关天相关教程我会在后续传上.
💻 JAVA
字号:
// $Id: MotePlugin.java,v 1.18 2004/04/14 18:25:47 mikedemmer Exp $/*									tab:2 * * * "Copyright (c) 2000 and 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 and the following two paragraphs 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." * * Authors:	Nelson Lee * Date:        December 11 2002 * Desc:        Default Mote Plugin *              GUI interactions with motes. * *//** * @author Nelson Lee */package net.tinyos.sim;import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import net.tinyos.sim.event.*;public class MotePlugin extends GuiPlugin implements SimConst {  private MotePanel motePanel;  private SimComm simComm;  private SimState state;  private MoteLayoutPlugin moteLayoutPlugin;    public void initialize(TinyViz tv, JPanel pluginPanel) {    super.initialize(tv, pluginPanel);    this.motePanel = tv.getMotePanel();    this.state = driver.getSimState();    this.simComm = driver.getSimComm();    this.moteLayoutPlugin = driver.getMoteLayout();  }  public void register() {    JButton bPower = tv.getMenuBar().addIconButton("On/off", "ui/power.gif");    bPower.addActionListener(new bPowerListener());    // Add layout menu    ButtonGroup group = new ButtonGroup();    menuListener ml = new menuListener();    JMenu layoutMenu = new JMenu("Layout");    JRadioButtonMenuItem layoutRandom;    layoutRandom = new JRadioButtonMenuItem("Random");    group.add(layoutRandom);    layoutRandom.setFont(tv.defaultFont);    layoutRandom.addActionListener(ml);    layoutRandom.setSelected(true);    JRadioButtonMenuItem layoutGrid;    layoutGrid = new JRadioButtonMenuItem("Grid");    group.add(layoutGrid);    layoutGrid.setFont(tv.defaultFont);    layoutGrid.addActionListener(ml);    JRadioButtonMenuItem layoutGridRandom;    layoutGridRandom = new JRadioButtonMenuItem("Grid + Random");    group.add(layoutGridRandom);    layoutGridRandom.setFont(tv.defaultFont);    layoutGridRandom.addActionListener(ml);    JMenuItem layoutFileLoad = new JMenuItem("File Load");    layoutFileLoad.addActionListener(ml);    layoutFileLoad.setFont(tv.defaultFont);    JMenuItem layoutFileSave = new JMenuItem("File Save");    layoutFileSave.addActionListener(ml);    layoutFileSave.setFont(tv.defaultFont);    layoutMenu.add(layoutRandom);    layoutMenu.add(layoutGrid);    layoutMenu.add(layoutGridRandom);    layoutMenu.add(layoutFileLoad);    layoutMenu.add(layoutFileSave);    tv.getMenuBar().addMenu(layoutMenu);  }  public void handleEvent(SimEvent event) {    if (event instanceof TossimEvent) {      TossimEvent tosEvent = (TossimEvent)event;            if (tosEvent instanceof LedEvent) {	LedEvent ledEvent = (LedEvent)tosEvent;        MoteSimObject mote = state.getMoteSimObject(ledEvent.getMoteID());        MoteLedsAttribute ledAttrib = (MoteLedsAttribute)           (mote.getAttribute("net.tinyos.sim.MoteLedsAttribute"));        boolean attributeModified = false;        if (ledEvent.redLedOn() != ledAttrib.redLedOn()) {          if (ledEvent.redLedOn())            ledAttrib.setRedOn();          else            ledAttrib.setRedOff();          attributeModified = true;        }                if (ledEvent.greenLedOn() != ledAttrib.greenLedOn()) {          if (ledEvent.greenLedOn())            ledAttrib.setGreenOn();          else            ledAttrib.setGreenOff();          attributeModified = true;        }                if (ledEvent.yellowLedOn() != ledAttrib.yellowLedOn()) {          if (ledEvent.yellowLedOn())            ledAttrib.setYellowOn();          else            ledAttrib.setYellowOff();          attributeModified = true;        }                if (attributeModified) {          motePanel.refresh();        } else if (! ( ledAttrib.shortString().equals("") &&                       ledEvent.shortString().equals("")) ) {          System.out.println("Warning: irrelevant LED event: " +                             ledAttrib.shortString() + "vs" + ledEvent.shortString());        }      }    }    if (event instanceof AttributeEvent) {      AttributeEvent ae = (AttributeEvent)event;      if (ae.getType() == AttributeEvent.ATTRIBUTE_CHANGED) {        if (ae.getAttribute() instanceof CoordinateAttribute) {          motePanel.refresh();	}      }    }  }    public void draw(Graphics graphics) {    //System.err.println("MotePlugin draw called.");    //System.out.println("drawing on graphics " + graphics);    Iterator it = state.getSimObjects().iterator();    graphics.setFont(tv.smallFont);    while (it.hasNext()) {      SimObject simObject = (SimObject)it.next();      simObject.draw(graphics, cT);    }        }  public String toString() {    return "MotePlugin";	  }    class bPowerListener implements ActionListener {    public void actionPerformed(ActionEvent e) {      Iterator it = state.getSelectedMoteSimObjects().iterator();      try {	while (it.hasNext()) {	  MoteSimObject mote = (MoteSimObject)it.next();	  // Toggle power status for each mote	  if (mote.getPower()) {	    simComm.sendCommand(new TurnOffMoteCommand((short)mote.getID(), 0L));	    mote.setPower(false);  	  } else {  	    simComm.sendCommand(new TurnOnMoteCommand((short)mote.getID(), 0L));  	    mote.setPower(true);  	  }  	  motePanel.refresh();   	}      } catch (IOException ioe) {	System.err.println("Cannot send command: "+ioe);      }    }  }    class menuListener implements ActionListener {    public void actionPerformed(ActionEvent e) {      if (e.getActionCommand().equals("Grid")) {        moteLayoutPlugin.setLayout(moteLayoutPlugin.LAYOUT_GRID);      } else if (e.getActionCommand().equals("Random")) {        moteLayoutPlugin.setLayout(moteLayoutPlugin.LAYOUT_RANDOM);      } else if (e.getActionCommand().equals("Grid + Random")) {        moteLayoutPlugin.setLayout(moteLayoutPlugin.LAYOUT_GRID_RANDOM);      } else if (e.getActionCommand().equals("File Load")) {	JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));	fc.addChoosableFileFilter(new MotePositionsFileFilter());	int returnVal = fc.showOpenDialog(motePanel);	if (returnVal == JFileChooser.APPROVE_OPTION) {	    File file = fc.getSelectedFile();	    try {	                  moteLayoutPlugin.loadLocationFile(file);	    } catch (IOException exception) {      	      tv.setStatus("Error reading location file "+file.getName());	    }	}      } else if (e.getActionCommand().equals("File Save")) {        JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));        fc.addChoosableFileFilter(new MotePositionsFileFilter());        int returnVal = fc.showSaveDialog(motePanel);        if (returnVal == JFileChooser.APPROVE_OPTION) {          File file = fc.getSelectedFile();          try {            moteLayoutPlugin.saveLocationFile(file);          } catch (IOException ioException) {            tv.setStatus("Error writing spatial file "+file.getName());            System.out.println(ioException);            ioException.printStackTrace();          }        }      }      motePanel.refresh();    }        protected class MotePositionsFileFilter extends javax.swing.filechooser.FileFilter {      public MotePositionsFileFilter() {}      public boolean accept(File f) {	if (f.isDirectory()) {	  return true;	}	String name = f.getName();	int index = name.lastIndexOf('.');	if (index < 0) {return false;}	String extension = name.substring(index);	if (extension != null) {	  if (extension.equals(".mps")) {	    return true;	  } else {	    return false;	  }	}	return false;      }      public String getDescription() {	return "*.mps";      }    }  }   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -