taskvisualization.java
来自「tinyos最新版」· Java 代码 · 共 1,070 行 · 第 1/3 页
JAVA
1,070 行
layer.addChild(routeGroup);
}
else if (ie.getStateChange() == ItemEvent.DESELECTED) {
layer.removeChild(routeGroup);
}
}
});
sensor.add(route);
JCheckBoxMenuItem showGradient = new JCheckBoxMenuItem("Show Gradient", false);
showGradient.setActionCommand("Show Gradient");
showGradient.setToolTipText("Show Gradient");
showGradient.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) {
System.out.println("GRADIENT ENABLED");
layer.addChild(gradientGroup);
layer.raiseTo(gradientGroup,canvas.getLeaf());
doGradient = true;
}
else if (ie.getStateChange() == ItemEvent.DESELECTED) {
System.out.println("GRADIENT DISABLED");
layer.removeChild(gradientGroup);
doGradient = false;
}
}
});
sensor.add(showGradient);
JMenuItem sensorRange = new JMenuItem("Set Sensor Range...");
sensorRange.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
selectItemRange();
recomputeGradient();
}
});
sensor.add(sensorRange);
JMenuItem fromColorMenu = new JMenuItem("Set From Color...");
fromColorMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JColorChooser choose = new JColorChooser(fromColor);
Color myColor= choose.showDialog(parentFrame, "Select Color for the Minimum Value",fromColor);
if (myColor != null)
fromColor = myColor;
recomputeGradient();
}
});
sensor.add(fromColorMenu);
JMenuItem toColorMenu = new JMenuItem("Set To Color...");
toColorMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JColorChooser choose = new JColorChooser(toColor);
Color myColor = choose.showDialog(parentFrame, "Select Color for the Maximum Value",toColor);
if (myColor != null)
toColor = myColor;
recomputeGradient();
}
});
sensor.add(toColorMenu);
JToolBar toolBar = createToolBar();
mainPanel.add(toolBar);
toolbarCons = layout.getConstraints(toolBar);
toolbarCons.setX(Spring.constant(5));
toolbarCons.setY(Spring.constant(5));
parent.removeSensorMenu();
parent.addSensorMenu(sensor);
viewConfiguration();
//setComponentSizes(mainPanel,5);
}
/**
* Creates a toolbar to allow panning of the frame
*
* @return the created toolbar
*/
private JToolBar createToolBar() {
JToolBar toolbar = new JToolBar(JToolBar.VERTICAL);
ButtonGroup group = new ButtonGroup();
Insets margins = new Insets(0, 0, 0, 0);
/* pan = new ToolBarButton("images/P.gif");
pan.setSelectedIcon(new ImageIcon("images/P-selected.gif"));
*/
pan = new JToggleButton("Pan view");
pan.setToolTipText("Pan view");
pan.setMargin(margins);
pan.setActionCommand("pan");
pan.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
setMode(PAN_MODE);
}
});
toolbar.add(pan);
group.add(pan);
/* select = new ToolBarButton("images/S.gif");
select.setSelectedIcon(new ImageIcon("images/S-selected.gif"));
*/
select = new JToggleButton("Select motes");
select.setToolTipText("Select motes to graph");
select.setMargin(margins);
select.setActionCommand("select");
select.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
setMode(SELECT_MODE);
}
});
toolbar.add(select);
group.add(select);
/* ToolBarButton graph = new ToolBarButton("images/G.gif");
*/
JToggleButton graph = new JToggleButton("Graph data");
graph.setToolTipText("Graph data");
graph.setMargin(margins);
graph.setActionCommand("graph");
graph.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
Vector v = new Vector();
Component menuitems[] = sensor.getMenuComponents();
for (int i=0; i<menuitems.length; i++) {
if (menuitems[i] instanceof JMenuItem) {
JMenuItem menuitem = (JMenuItem)menuitems[i];
if (!menuitem.getText().equalsIgnoreCase("nodeid")) {
v.addElement(menuitem.getText());
}
}
}
AttributeSelectDialog asd = new AttributeSelectDialog(parentFrame, v);
asd.pack();
asd.setLocationRelativeTo(parentFrame);
asd.setVisible(true);
if (asd.isDataValid()) {
Vector attributes = asd.getSelectedAttributes();
attributes.insertElementAt("nodeid",0);
Collection c = selectionHandler.getSelectionModifyHandler().getCurrentSelection();
if (c.size() > 0) {
Vector nodes = new Vector();
for (Iterator i=c.iterator(); i.hasNext(); ) {
ZVisualComponent zvc = ((ZVisualLeaf)i.next()).getFirstVisualComponent();
if (zvc instanceof Mote) {
nodes.addElement(new Integer(((Mote)zvc).getId()));
}
}
new ResultFrame(client, nodes, attributes);
}
}
}
});
toolbar.add(graph);
toolbar.setFloatable(true);
toolbar.setMaximumSize(new Dimension(100,200));
toolbar.setPreferredSize(new Dimension(100,200));
toolbar.setMinimumSize(new Dimension(100,500));
return toolbar;
}
/**
* This method renders the configuration to the screen
*/
private void viewConfiguration() {
// do view stuff here
// AKDNEW - shouldn't need this after testing
/*
Vector hselects = new Vector();
hselects.addElement("voltage");
TASKQuery hquery = new TASKQuery(hselects, new Vector(), 1000, null);
int hq = client.submitHealthQuery(hquery);
*/
TASKQuery healthQuery = client.getHealthQuery();
if (healthQuery != null) {
healthQueryId = healthQuery.getQueryId();
}
/* Vector sselects = new Vector();
sselects.addElement("temperature");
TASKQuery squery = new TASKQuery(sselects, new Vector(), 1000, null);
int sq = client.submitSensorQuery(squery);
*/
TASKQuery sensorQuery = client.getSensorQuery();
if (sensorQuery != null) {
sensorQueryId = sensorQuery.getQueryId();
}
// render image
if (config.useBlankImage()) {
imageWidth = config.getImageWidth();
imageHeight = config.getImageHeight();
canvas = new ZImageCanvas(imageWidth, imageHeight);
}
else {
ImageIcon icon = new ImageIcon(config.getImageName(), config.getImageName());
Image base = icon.getImage();
imageHeight = base.getHeight(null);
imageWidth = base.getWidth(null);
canvas = new ZImageCanvas(base);
}
// render surrounding rectangle
layer = canvas.getLayer();
ZLine line = new ZLine(config.getMinimumPixelX(), config.getMinimumPixelY(),
config.getMaximumPixelX(), config.getMinimumPixelY());
ZVisualLeaf leaf = new ZVisualLeaf(line);
leaf.setSelectable(false);
layer.addChild(leaf);
line = new ZLine(config.getMinimumPixelX(), config.getMinimumPixelY(),
config.getMinimumPixelX(), config.getMaximumPixelY());
leaf = new ZVisualLeaf(line);
leaf.setSelectable(false);
layer.addChild(leaf);
line = new ZLine(config.getMaximumPixelX(), config.getMinimumPixelY(),
config.getMaximumPixelX(), config.getMaximumPixelY());
leaf = new ZVisualLeaf(line);
leaf.setSelectable(false);
layer.addChild(leaf);
line = new ZLine(config.getMinimumPixelX(), config.getMaximumPixelY(),
config.getMaximumPixelX(), config.getMaximumPixelY());
leaf = new ZVisualLeaf(line);
leaf.setSelectable(false);
layer.addChild(leaf);
//render overlay
int width = config.getMaximumPixelX() - config.getMinimumPixelX();
int height = config.getMaximumPixelY() - config.getMinimumPixelY();
int stepSize = STEP_SIZE;
int stepsX = width/stepSize;
int stepsY = height/stepSize;
gRects = new ZRectangle[stepsX][stepsY];
gradientGroup = new ZGroup();
for (int i = 0; i < stepsX; i++) {
for (int j = 0; j < stepsY; j++) {
Paint p = getPaintForPixel(i * stepSize, j * stepSize, width, height);
ZRectangle r = new ZRectangle((i * stepSize), (j * stepSize), stepSize, stepSize);
r.setFillPaint(p);
r.setPenWidth(0);
r.setPenPaint(new Color(0f,0f,0f,0f));
leaf = new ZVisualLeaf(r);
leaf.setSelectable(false);
gradientGroup.addChild(leaf);
gRects[i][j] = r;
}
}
if (doGradient) layer.addChild(gradientGroup);
// render motes
for (Enumeration e=motes.elements(); e.hasMoreElements(); ) {
SensorMote sm = (SensorMote)e.nextElement();
leaf = new ZVisualLeaf(sm);
layer.addChild(leaf);
layer.raise(leaf);
}
routeGroup = new ZGroup();
routeGroup.setSelectable(false);
layer.addChild(routeGroup);
//parentPanel.add(mainPanel);
// add scroll pane
int x=0, y = 0;
if (imageWidth > SCROLL_WIDTH) {
x = SCROLL_WIDTH;
}
else {
x = imageWidth;
}
if (imageHeight > SCROLL_HEIGHT) {
y = SCROLL_HEIGHT;
}
else {
y = imageHeight;
}
scrollPane = new ZScrollPane(canvas);
scrollPane.setMaximumSize(new Dimension(Integer.MAX_VALUE,Integer.MAX_VALUE));
scrollPane.setPreferredSize(new Dimension(x+20,y+20));
scrollPane.setMinimumSize(new Dimension(200,200));
//scrollPane.setPreferredSize(new Dimension(400,400));
mainPanel.add(scrollPane);
SpringLayout.Constraints scrollCons = layout.getConstraints(scrollPane);
scrollCons.setX(Spring.sum(Spring.constant(5),
toolbarCons.getConstraint(SpringLayout.EAST)));
scrollCons.setY(Spring.constant(5));
JPanel unknownNodesPanel = new JPanel();
Border b = BorderFactory.createBevelBorder(BevelBorder.LOWERED);
unknownNodesPanel.setBorder(BorderFactory.createTitledBorder(b,"Unknown Nodes"));
unknownNodesPanel.add(scrollPane2);
unknownNodesPanel.setMaximumSize(new Dimension(150,200));
unknownNodesPanel.setMinimumSize(new Dimension(150,200));
unknownNodesPanel.setPreferredSize(new Dimension(150,200));
mainPanel.add(unknownNodesPanel);
SpringLayout.Constraints cons = layout.getConstraints(unknownNodesPanel);
cons.setX(Spring.sum(Spring.constant(5),
scrollCons.getConstraint(SpringLayout.EAST)));
cons.setY(Spring.constant(5));
// create event handlers
panEventHandler = new ZPanEventHandler(canvas.getCameraNode());
zoomEventHandler = new ZoomEventHandler(canvas.getCameraNode());
moveEventHandler = new MoveEventHandler2(canvas, imageWidth, imageHeight, true);
selectionHandler = new ZCompositeSelectionHandler(canvas.getCameraNode(), canvas, canvas.getLayer(), ZCompositeSelectionHandler.MODIFY);
zoomEventHandler.setActive(true);
moveEventHandler.setActive(true);
if (healthQuery != null) {
client.addHealthResultListener(this);
if (timer != null) {
timer.cancel();
}
timer = new java.util.Timer();
healthSamplePeriod = healthQuery.getSamplePeriod();
timer.schedule(new Task(), 0, 10*healthSamplePeriod);
}
if (sensorQuery != null) {
client.addSensorResultListener(this);
}
}
//set the min and max values for the attribute in the visualization
public void selectItemRange() {
String s = (String)JOptionPane.showInputDialog(mainPanel,
"Specify a maximum value:",
"Maximum Value",
JOptionPane.PLAIN_MESSAGE,
null, null, new Integer((int)MAX_VAL).toString());
if ((s != null) && (s.length() > 0)) {
try {
MAX_VAL = (float)(new Integer(s).intValue());
} catch (NumberFormatException e) {
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?