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 + -
显示快捷键?