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

📄 motemessagetable.java

📁 传感器网络中的嵌入式操作系统源代码
💻 JAVA
字号:
// $Id: MoteMessageTable.java,v 1.1.8.3 2003/08/26 09:08:11 cssharp 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:	Matt Welsh * Date:        Feb 9 2003 * Desc:        Message display list with mote tracking * *//** * @author Matt Welsh */package net.tinyos.sim;import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;import net.tinyos.sim.*;import net.tinyos.sim.event.*;/** * An extension to MessageList that associates a MoteSimObject * with each entry. The user can specify that only messages from a * given selected set of motes should be displayed. */public class MoteMessageTable extends MessageList implements SimConst {  private boolean selectedOnly = false;  private Set selected = null;  protected JTable msgTable;  protected moteTableModel msgTableModel;  public MoteMessageTable() {    this(DEFAULT_MAX_DISPLAY, DEFAULT_MAX_MESSAGES);  }  public MoteMessageTable(int maxDisplay, int maxMessages) {    this.maxDisplay = maxDisplay;    this.maxMessages = maxMessages;    msgTableModel = new moteTableModel();    msgTable = new JTable(msgTableModel);    //if (maxDisplay > 0) msgList.setVisibleRowCount(maxDisplay);    msgTable.setFont(TinyViz.constFont);    //msgList.setFixedCellHeight(15);    msgTable.setBackground(Color.white);    msgTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);    msgTable.setDefaultRenderer(mmlEntry.class, new moteTableRenderer());    listPane = new JScrollPane(msgTable);    listPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);    //listPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);    //sbHoriz = listPane.createHorizontalScrollBar();    //sbVert = listPane.createVerticalScrollBar();    //listPane.setHorizontalScrollBar(sbHoriz);    //listPane.setVerticalScrollBar(sbVert);    this.setLayout(new BorderLayout());    this.add(listPane, BorderLayout.NORTH);    this.revalidate();  }  public void setSelectedOnly(boolean value) {    this.selectedOnly = value;  }  public synchronized void setSelected(Set selected) {    this.selected = selected;    ((moteTableModel)msgTableModel).resetSelected();  }  public synchronized void addMessage(String msg) {    addMessage(msg, null, defaultForeground, defaultBackground);  }  public synchronized void addMessage(String msg, Color fgColor, Color bgColor) {    addMessage(msg, null, fgColor, bgColor);  }  public synchronized void addMessage(String msg, MoteSimObject mote) {    addMessage(msg, mote, defaultForeground, defaultBackground);  }  public synchronized void addMessage(String msg, MoteSimObject mote,      Color fgColor, Color bgColor) {    msgTableModel.addElement(new mmlEntry(msg, mote, fgColor, bgColor));    msgTable.revalidate();    msgTable.repaint();  }  class mmlEntry extends MessageList.mlEntry {    public MoteSimObject mote;    mmlEntry(String msg, MoteSimObject mote, Color fgColor, Color bgColor) {      super(msg, fgColor, bgColor);      this.mote = mote;    }  }  class moteTableRenderer extends JLabel implements TableCellRenderer {    public Component getTableCellRendererComponent(JTable table,	Object value, boolean isSelected, boolean hasFocus, int row, 	int column) {      mmlEntry mml = (mmlEntry)value;      this.setFont(TinyViz.constFont);      if (column == 0) {	this.setText(new Integer(mml.mote.getID()).toString());      } else {	this.setText(mml.msg);      }      if (isSelected) {	this.setForeground(mml.fgColor);	this.setBackground(table.getSelectionBackground());      } else {	this.setForeground(mml.fgColor);	this.setBackground(mml.bgColor);      }      this.setOpaque(true);      return this;    }  }  class moteTableModel extends AbstractTableModel {    Vector allItems = new Vector();    Vector selectedItems = new Vector();    public void addElement(mmlEntry mml) {      allItems.addElement(mml);      if (allItems.size() > maxMessages) allItems.removeElementAt(0);      if (selected != null && 	  (mml.mote == null || selected.contains(mml.mote))) {	if (selectedItems.size() > maxMessages) selectedItems.removeElementAt(0);	selectedItems.addElement(mml);      }    }    public void resetSelected() {      selectedItems.clear();      if (selected == null) return;      Enumeration e = allItems.elements();      while (e.hasMoreElements()) {	mmlEntry mml = (mmlEntry)e.nextElement();	if (selected != null &&   	    (mml.mote == null || selected.contains(mml.mote)))  	  selectedItems.addElement(mml);      }    }    public int getColumnCount() {       return 2;     }    public int getRowCount() {      if (!selectedOnly) return allItems.size();      if (selected == null) return 0;      return selectedItems.size();    }    public boolean isCellEditable(int row, int column) {      return false;    }    public Class getColumnClass(int column) {      return mmlEntry.class;    }    public String getColumnName(int column) {      if (column == 0) return "Mote";      if (column == 1) return "Message";      return null;    }    public Object getValueAt(int row, int column) {      mmlEntry mml;      if (!selectedOnly) {	mml = (mmlEntry)allItems.elementAt(row);      } else {	if (selected == null) throw new ArrayIndexOutOfBoundsException("no motes in selected set");	mml = (mmlEntry)selectedItems.elementAt(row);      }      return mml;    }  }}

⌨️ 快捷键说明

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