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

📄 skygui.java

📁 MSP IM Source code 2008 update
💻 JAVA
字号:
/** * Copyright (c) 2007, Swedish Institute of Computer Science. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the Institute nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * This file is part of MSPSim. * * $Id: SkyGui.java 265 2008-04-24 22:04:23Z nifi $ * * ----------------------------------------------------------------- * * SkyGui * * Author  : Joakim Eriksson * Created : Sun Oct 21 22:00:00 2007 * Updated : $Date: 2008-04-25 00:04:23 +0200 (Fri, 25 Apr 2008) $ *           $Revision: 265 $ */package se.sics.mspsim.platform.sky;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.ImageIcon;import javax.swing.JComponent;import javax.swing.JFrame;import se.sics.mspsim.core.*;import se.sics.mspsim.ui.SerialMon;import se.sics.mspsim.ui.WindowUtils;public class SkyGui extends JComponent implements KeyListener {  public static final int GREEN_Y = 40;  public static final int BLUE_Y = 46;  public static final int RED_Y = 34;  public static final int LED_X = 10;  public static final Color BLUE_TRANS = new Color(0x80,0x80,0xff,0xa0);  public static final Color GREEN_TRANS = new Color(0x40, 0xf0, 0x40, 0xa0);  public static final Color RED_TRANS = new Color(0xf0, 0x40, 0x40, 0xa0);  public static final Color BLUE_C = new Color(0xffa0a0ff);  public static final Color GREEN_C = new Color(0xff60ff60);  public static final Color RED_C = new Color(0xffff8000);  private SerialMon serial;  private ImageIcon skyImage;  private JFrame window;  private SkyNode node;  public SkyGui(SkyNode node) {    this.node = node;    setBackground(Color.black);    setOpaque(true);    skyImage = new ImageIcon("images/sky.jpg");    if (skyImage.getIconWidth() == 0 || skyImage.getIconHeight() == 0) {      // Image not found      throw new IllegalStateException("image not found");    }    setPreferredSize(new Dimension(skyImage.getIconWidth(),				   skyImage.getIconHeight()));    window = new JFrame("Sky");//     window.setSize(190,240);    window.add(this);    WindowUtils.restoreWindowBounds("SkyGui", window);    WindowUtils.addSaveOnShutdown("SkyGui", window);    window.setVisible(true);    window.addKeyListener(this);    MouseAdapter mouseHandler = new MouseAdapter() {	private boolean buttonDown = false;	private boolean resetDown = false;	// For the button sensor and reset button on the Sky nodes.	public void mousePressed(MouseEvent e) {	  int x = e.getX();	  int y = e.getY();	  if (x > 126 && x < 138) {	    if (y > 65 && y < 76) {	      SkyGui.this.node.setButton(buttonDown = true);	    } else if (y > 95 && y < 107) {	      resetDown = true;	    }	  }	}	public void mouseReleased(MouseEvent e) {	  if (buttonDown) {	    SkyGui.this.node.setButton(buttonDown = false);	  } else if (resetDown) {	    int x = e.getX();	    int y = e.getY();	    resetDown = false;	    if (x > 126 && x < 138 && y > 95 && y < 107) {	      SkyGui.this.node.getCPU().reset();	    }	  }	}      };//     window.addMouseMotionListener(mouseHandler);    window.addMouseListener(mouseHandler);    // Add some windows for listening to serial output    MSP430 cpu = node.getCPU();    IOUnit usart = cpu.getIOUnit("USART 1");    if (usart instanceof USART) {      serial = new SerialMon((USART)usart, "USART1 Port Output");      ((USART) usart).setUSARTListener(serial);    }  }  protected void paintComponent(Graphics g) {    Color old = g.getColor();    int w = getWidth(), h = getHeight();    int iw = skyImage.getIconWidth(), ih = skyImage.getIconHeight();    skyImage.paintIcon(this, g, 0, 0);    // Clear all areas not covered by the image    g.setColor(getBackground());    if (w > iw) {      g.fillRect(iw, 0, w, h);    }    if (h > ih) {      g.fillRect(0, ih, w, h);    }    // Display all active leds    if (node.redLed) {      g.setColor(RED_TRANS);      g.fillOval(LED_X - 2, RED_Y - 1, 9, 5);      g.setColor(RED_C);      g.fillOval(LED_X, RED_Y, 4, 3);    }    if (node.greenLed) {      g.setColor(GREEN_TRANS);      g.fillOval(LED_X - 2, GREEN_Y - 1, 9, 5);      g.setColor(GREEN_C);      g.fillOval(LED_X, GREEN_Y, 4, 3);    }    if (node.blueLed) {      g.setColor(BLUE_TRANS);      g.fillOval(LED_X - 2, BLUE_Y - 1, 9, 5);      g.setColor(BLUE_C);      g.fillOval(LED_X, BLUE_Y, 4, 3);    }    g.setColor(old);  }  public void keyPressed(KeyEvent key) {//     System.out.println("Key Pressed: " + key.getKeyChar());    if (key.getKeyChar() == 'd') {      node.setDebug(!node.getDebug());    }  }  public void keyReleased(KeyEvent key) {  }  public void keyTyped(KeyEvent key) {  }}

⌨️ 快捷键说明

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