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

📄 guipanel.java

📁 用于传感器网络的节点操作系统 TinyOS 结构设计非常有意思
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * QueryFrame.java * Main class to allow users to build and distribute queries over the network... * Created on May 21, 2002, 10:16 AM *//** * * @author  madden */package net.tinyos.tinydb;import net.tinyos.amhandler.*;import java.awt.*;import javax.swing.*;import javax.swing.event.*;import java.awt.event.*;import java.util.*;import javax.swing.border.*;import java.io.*;import java.sql.*;import net.tinyos.tinydb.awtextra.*;import net.tinyos.tinydb.topology.*;import net.tinyos.tinydb.parser.*;public class GuiPanel extends JPanel implements CatalogListener {    //constants for UI layout    static final int PANEL_WID = 530; //width of main panel (excluding buttons on right side)    static final int BUT_SEP = 10; //separator between buttons    static final int SEND_BUT_TOP = 5;    static final int BUT_HEIGHT = 30; //height of buttons    static final int CHECK_BOX_LEFT = 10;     static final int CHECK_BOX_WID = 20; //width of check box without labels    static final int ATTR_POPUP_WID = 120; //width of an attribute popup    static final int GROUP_LABEL_WID = 100; //width of "group by" label    static final int GRP_OPS_WID = 60;  //width of group by operations combo box    static final int GRP_CONST_WID = 60;  //width of group by constant field box    static final int SELECT_PANEL_HEIGHT = 105;     //height of select panel    static final int SCROLLER_LABEL_WID = 200;	 //width of labels at top of scroller panels    static final int SCROLLER_HEIGHT = 150; //height of scroller box    static final int SCROLLER_TOP = 60; //top of scroller box    static final int L_SCROLLER_LEFT = 20; //left side of scroller box    static final int EPOCH_LABEL_WID = 150; //width of "epoch duration" label    static final int TOP_ROW = 5; //where the top row begins    static final int TEXT_HEIGHT = 20; //height of text items    static final int SQL_BOX_HEIGHT = 90; //height of SQL string text box    static final int TRIGGER_LABEL_WID = 150; //width of "trigger action" label    static final int TRIGGER_ACTION_WID = 190; //width of trigger action popup    static final int LOG_CHECK_WID = 200;        static final int SEND_BUT_LEFT = PANEL_WID + BUT_SEP;    static final int TOPO_BUT_TOP = SEND_BUT_TOP + BUT_HEIGHT + BUT_SEP;    static final int MAGNET_BUT_TOP = TOPO_BUT_TOP + BUT_HEIGHT + BUT_SEP;    static final int GROUP_LABEL_LEFT = CHECK_BOX_LEFT + CHECK_BOX_WID;    static final int ATTR_POPUP_LEFT = GROUP_LABEL_LEFT + GROUP_LABEL_WID;    static final int GRP_OPS_LEFT = ATTR_POPUP_LEFT + ATTR_POPUP_WID;    static final int GRP_CONST_LEFT = GRP_OPS_LEFT + GRP_OPS_WID;    static final int NEW_PRED_LEFT = GRP_CONST_LEFT + GRP_CONST_WID + BUT_SEP - 5;  //the side of the button was being cut off, thus -5    static final int GROUP_PANEL_HEIGHT = BUT_HEIGHT;    static final int SCROLLER_WIDTH = SCROLLER_LABEL_WID - 20;    static final int AGG_BOX_LEFT = L_SCROLLER_LEFT + SCROLLER_WIDTH + BUT_SEP;    static final int SEL_BUTTON_LEFT = AGG_BOX_LEFT + 20;    static final int AGG_BOX_WID = ATTR_POPUP_WID;    static final int R_SCROLLER_LEFT = AGG_BOX_LEFT + AGG_BOX_WID + BUT_SEP;    static final int ATTR_BUT_TOP = SCROLLER_TOP + BUT_HEIGHT; //top of scroller attribute button        static final int SEL_BUT_TOP = ATTR_BUT_TOP + BUT_HEIGHT + 5;    static final int EPOCH_BOX_WID = ATTR_POPUP_WID;    static final int EPOCH_BOX_LEFT = L_SCROLLER_LEFT + EPOCH_LABEL_WID;        static final int SCROLLER_LABEL_TOP = SCROLLER_TOP - TEXT_HEIGHT;    static final int SQL_BOX_LEFT = L_SCROLLER_LEFT;    static final int SQL_BOX_TOP = SCROLLER_TOP + SCROLLER_HEIGHT + BUT_SEP;    static final int SQL_BOX_WID = (R_SCROLLER_LEFT - L_SCROLLER_LEFT) + SCROLLER_WIDTH;    static final int GROUP_PANEL_TOP = SQL_BOX_TOP + SQL_BOX_HEIGHT + BUT_SEP; //was 310    static final int SELECT_PANEL_TOP = GROUP_PANEL_TOP + GROUP_PANEL_HEIGHT+ BUT_SEP;    static final int TRIGGER_TOP = SELECT_PANEL_TOP + SELECT_PANEL_HEIGHT + BUT_SEP;    static final int TRIGGER_LABEL_LEFT = GROUP_LABEL_LEFT;    static final int TRIGGER_ACTION_LEFT = TRIGGER_LABEL_LEFT + TRIGGER_LABEL_WID + BUT_SEP;    static final int LOG_CHECK_LEFT = TRIGGER_ACTION_LEFT + TRIGGER_ACTION_WID + BUT_SEP;    static final int TRIGGER_PANEL_WID = LOG_CHECK_LEFT + LOG_CHECK_WID;        /** Creates new panel GuiPanel */    public GuiPanel(TinyDBNetwork nw) {	//init ui	this.nw = nw;	initComponents();	Catalog.curCatalog.addListener(this);    }        //construct the UI    private void initComponents() {	UIManager.put("Label.font", normalFont);	UIManager.put("Button.font", normalFont);	UIManager.put("CheckBox.font", normalFont);	UIManager.put("ComboBox.font", normalFont);	setFont(normalFont);	setFont(normalFont);	        selectGroupPanel = new JPanel();	selectGroupPanel.setFont(normalFont);        groupByPanel = new JPanel();        groupCheckBox = new JCheckBox();        groupLabel = new JLabel();	        groupBox = new JComboBox();	groupBox.setLightWeightPopupEnabled(false);	addFieldsToMenu(groupBox);		groupByOps = new JComboBox();	groupByOps.setLightWeightPopupEnabled(false);	addArithOpsToMenu(groupByOps);	groupByOps.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent evt) {		    JComboBox cb = (JComboBox)evt.getSource();		    String op = (String)cb.getSelectedItem();		    if (!op.equals("")) {			groupByConst.setEnabled(true);		    } else {			groupByConst.setEnabled(false);		    }		    updateSQL();		    //updateAttributeLists();		}	    });		groupByConst = new JTextField();	groupByConst.setEnabled(false);	groupByConst.getDocument().addDocumentListener(new DocumentListener() {		public void changedUpdate(DocumentEvent e){		    updateSQL();		}		public void insertUpdate(DocumentEvent e){		    updateSQL();		}		public void removeUpdate(DocumentEvent e){		    updateSQL();		}	    });	groupByConst.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent evt) {		    //updateAttributeLists();		}	    });		attenuationBox = new JComboBox(attens);	attenuationBox.setLightWeightPopupEnabled(false);	aggregateBox = new JComboBox();	aggregateBox.setLightWeightPopupEnabled(false);	addAggsToMenu(aggregateBox);	epochBox = new JComboBox();	epochBox.setLightWeightPopupEnabled(false);	addEpochsToMenu(epochBox);        newPredButton = new JButton();        selectSrcList = new JList();	selectSrcList.setFont(textBoxFont);        selectDestList = new JList();	selectDestList.setFont(textBoxFont);        removeSelButton = new JButton();        addSelButton = new JButton();        selectFieldsLabel = new JLabel();        selectedLabel = new JLabel();	sqlString = new JTextArea();	sqlString.setLineWrap(true);	sqlString.setEditable(false);        sqlString.setBorder(new LineBorder(new java.awt.Color(0, 0, 0)));	sqlString.setFont(textBoxFont);	triggerCheckBox = new JCheckBox();	triggerLabel = new JLabel("TRIGGER ACTION");	triggerActionBox = new JComboBox(triggerActions);	triggerActionBox.setLightWeightPopupEnabled(false);	triggerPanel = new JPanel();		logCheckBox = new JCheckBox("Log to Database");	logCheckBox.setSelected(false);	        jSeparator2 = new JSeparator();	        setLayout(new AbsoluteLayout());	final GuiPanel queryFrame = this;	        selectGroupPanel.setLayout(new java.awt.GridLayout(3, 0, 5, 5));	//        selectGroupPanel.setBackground(java.awt.Color.white);        selectGroupPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));	        groupByPanel.setLayout(new AbsoluteLayout());		//        groupByPanel.setBackground(java.awt.Color.white);		groupBox.setEnabled(false);	oldGroup = groupBox.getSelectedItem();	groupBox.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent evt) {		    if (oldGroup != groupBox.getSelectedItem()) {			if (!checkSelectionConsistency(selectDestList,null)) {			    groupBox.setSelectedItem(oldGroup);			} else {			    oldGroup = groupBox.getSelectedItem();			    selectSrcListAction(); //update the possible choices of aggregate functions....			}		    }		    //updateAttributeLists();		}	    });		groupLabel.setEnabled(false);	groupByOps.setEnabled(false);	groupByConst.setEnabled(false);		//        groupCheckBox.setBackground(java.awt.Color.white);			groupCheckBox.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent evt) {		    groupCheckBoxAction(evt);		}	    });			        groupByPanel.add(groupCheckBox, new AbsoluteConstraints(CHECK_BOX_LEFT, 0, CHECK_BOX_WID, BUT_HEIGHT));		        groupLabel.setText("GROUP BY");        groupByPanel.add(groupLabel, new AbsoluteConstraints(GROUP_LABEL_LEFT, 0, GROUP_LABEL_WID, BUT_HEIGHT));        groupByPanel.add(groupBox, new AbsoluteConstraints(ATTR_POPUP_LEFT, 0, ATTR_POPUP_WID, BUT_HEIGHT));	groupByPanel.add(groupByOps, new AbsoluteConstraints(GRP_OPS_LEFT, 0, GRP_OPS_WID, BUT_HEIGHT));	groupByPanel.add(groupByConst, new AbsoluteConstraints(GRP_CONST_LEFT, 0, GRP_CONST_WID, BUT_HEIGHT));		add(groupByPanel, new AbsoluteConstraints(0,GROUP_PANEL_TOP, PANEL_WID, GROUP_PANEL_HEIGHT));	        add(selectGroupPanel, new AbsoluteConstraints(0, SELECT_PANEL_TOP , PANEL_WID, SELECT_PANEL_HEIGHT));	        newPredButton.setText("New Predicate");        newPredButton.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent evt) {		    newPredButtonActionPerformed(evt);		}	    });	        groupByPanel.add(newPredButton, new AbsoluteConstraints(NEW_PRED_LEFT, 0, -1, BUT_HEIGHT));	        selectSrcList.setBorder(new LineBorder(new java.awt.Color(0, 0, 0)));        selectSrcList.setMinimumSize(new java.awt.Dimension(100, 100));	JScrollPane srcScroller = new JScrollPane(selectSrcList);	selectSrcList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);        add(srcScroller, new AbsoluteConstraints(L_SCROLLER_LEFT, SCROLLER_TOP, 								  SCROLLER_WIDTH, SCROLLER_HEIGHT));	addSelectChoices(selectSrcList);	selectSrcList.addMouseListener(new MouseAdapter() {		public void mouseClicked(MouseEvent evt) {		    selectSrcListAction();		}	    });			        selectDestList.setBorder(new LineBorder(new java.awt.Color(0, 0, 0)));	JScrollPane destScroller = new JScrollPane(selectDestList);	selectDestList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);        add(destScroller, new AbsoluteConstraints(R_SCROLLER_LEFT, SCROLLER_TOP, 								   SCROLLER_WIDTH, 								   SCROLLER_HEIGHT));	        removeSelButton.setText("<<<");        removeSelButton.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent evt) {		    removeSelButtonActionPerformed(evt);		}	    });		add(aggregateBox, new AbsoluteConstraints(AGG_BOX_LEFT, ATTR_BUT_TOP, AGG_BOX_WID,BUT_HEIGHT));	        add(addSelButton, new AbsoluteConstraints(SEL_BUTTON_LEFT, SEL_BUT_TOP, -1, -1));	        add(removeSelButton, new AbsoluteConstraints(SEL_BUTTON_LEFT, SEL_BUT_TOP + BUT_HEIGHT, -1, -1));	        addSelButton.setText(">>>");        addSelButton.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent evt) {		    addSelButtonActionPerformed(evt);		}	    });					JLabel epochsLabel = new JLabel();	epochsLabel.setText("Sample Period");	add(epochsLabel, new AbsoluteConstraints(L_SCROLLER_LEFT, TOP_ROW + 5, -1, TEXT_HEIGHT));		add(epochBox, new AbsoluteConstraints(EPOCH_BOX_LEFT, TOP_ROW ,ATTR_POPUP_WID,BUT_HEIGHT));	epochBox.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent evt) {		    epochDur = (short)((Integer)epochBox.getSelectedItem()).intValue();		    updateSQL();		}			    });	        selectFieldsLabel.setText("Available Attributes");	selectFieldsLabel.setFont(boldFont);        add(selectFieldsLabel, new AbsoluteConstraints(L_SCROLLER_LEFT, SCROLLER_LABEL_TOP, 									SCROLLER_LABEL_WID, TEXT_HEIGHT));	        selectedLabel.setText("Projected Attributes");	selectedLabel.setFont(boldFont);        add(selectedLabel, new AbsoluteConstraints(R_SCROLLER_LEFT, SCROLLER_LABEL_TOP, 								    SCROLLER_LABEL_WID, TEXT_HEIGHT));	        add(jSeparator2, new AbsoluteConstraints(-10, 30, 600, 0));		add(sqlString, new AbsoluteConstraints(SQL_BOX_LEFT, SQL_BOX_TOP, 								SQL_BOX_WID, SQL_BOX_HEIGHT));	updateSQL();		        triggerPanel.setLayout(new AbsoluteLayout());		triggerActionBox.setEnabled(false);	triggerActionBox.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent evt) {		    updateSQL();		}	    });		triggerLabel.setEnabled(false);		triggerCheckBox.addActionListener(new ActionListener() {		public void actionPerformed(ActionEvent evt) {		    triggerCheckBoxAction();		}	    });        triggerPanel.add(triggerCheckBox, new AbsoluteConstraints(CHECK_BOX_LEFT, 0, CHECK_BOX_WID, BUT_HEIGHT));        triggerPanel.add(triggerLabel, new AbsoluteConstraints(TRIGGER_LABEL_LEFT, 0, TRIGGER_LABEL_WID, BUT_HEIGHT));        triggerPanel.add(triggerActionBox, new AbsoluteConstraints(TRIGGER_ACTION_LEFT, 0, TRIGGER_ACTION_WID, BUT_HEIGHT));	triggerPanel.add(logCheckBox, new AbsoluteConstraints(LOG_CHECK_LEFT,0,LOG_CHECK_WID,-1));		add(triggerPanel, new AbsoluteConstraints(0,TRIGGER_TOP, TRIGGER_PANEL_WID, BUT_HEIGHT));		    }        public void magnetDemo() {	byte qid = MainFrame.allocateQID();	MagnetFrame mf = new MagnetFrame(qid, nw);	mf.show();	if (resultWins.size() <= (qid + 1))	    resultWins.setSize(qid+1);	resultWins.setElementAt(mf,qid);    }    public void displayTopology() {	if (topologyWindowUp)	    return;		try {	    topologyFrame = new MainClass(nw, MainFrame.allocateQID());	} catch (Exception e) { }    }    public void sendQuery() {	byte qid = MainFrame.allocateQID();		TinyDBQuery curQuery = generateQuery(qid, epochDur);	if (curQuery == null)	    return;	updateSQL();	curQuery.setSQL(sqlString.getText());	if (curQuery != null) {	    ResultFrame rf = new ResultFrame(curQuery, nw);	    	    rf.setLocation(5,30);	    if (logCheckBox.isSelected())		{		    try {			DBLogger dbLogger = new DBLogger(curQuery, sqlString.getText(), nw);				// XXX keep track of this so we can delete the listener when the query is cancelled			TinyDBMain.addQueryListener(dbLogger);		    } catch (SQLException e) {			e.printStackTrace();		    }		}	    	    	    TinyDBMain.notifyAddedQuery(curQuery);	    	    rf.show();	    if (resultWins.size() <= (qid + 1))		resultWins.setSize(qid+1);	    resultWins.setElementAt(rf,qid);	    if (TinyDBMain.debug) System.out.println(curQuery);	    try {		nw.sendQuery(curQuery);	    } catch (IOException e) {		e.printStackTrace();	    }	}    }

⌨️ 快捷键说明

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