📄 displaymanager.java
字号:
public void SetImageHelper(ImageIcon pImageHelper){ imageHelper =pImageHelper;} public void SetImage(Image pImage){ image =pImage;} public void SetImageWidth(double w){ imageWidth = w;} public void SetImageHeight(double h){ imageHeight = h;} public void SetDisplayThisNode(boolean pDisplay){ displayThisNode=pDisplay;} public void SetDisplayNodeNumber(boolean pDisplayNumber){ displayNodeNumber=pDisplayNumber;} public void SetFitOnScreen(boolean pFit){ fitOnScreen=pFit;} } //NODE INFO //********************************************************* //********************************************************* //********************************************************* //********************************************************* //********************************************************* //********************************************************* //EDGEINFO //this class should hold any special information you hold about the //edge, for example time created or a history of the number of packets //forwarded over this edge or whetever it is you are studying public class EdgeInfo { protected Integer sourceNodeNumber; protected Integer destinationNodeNumber; public EdgeInfo(Integer pSourceNodeNumber, Integer pDestinationNodeNumber) { sourceNodeNumber = pSourceNodeNumber; destinationNodeNumber = pDestinationNodeNumber; } public Integer GetSourceNodeNumber(){return sourceNodeNumber;} public Integer GetDestinationNodeNumber(){return destinationNodeNumber;} } //EDGE INFO //********************************************************* //********************************************************* //********************************************************* //********************************************************* //********************************************************* //********************************************************* //PROPRIETARY NODE INFO DISPLAY PANEL //This class is an ActivePanel and should have all the information //in GUI form that this class stores with respect to nodes //It should be return with GetProprietaryNodeInfoPanel and it will be displayed //with all the other packet analyzer proprietary info when a node is clicked. public class ProprietaryNodeInfoPanel extends net.tinyos.surge.Dialog.ActivePanel { NodeInfo nodeInfo; public ProprietaryNodeInfoPanel(NodeInfo pNodeInfo) { tabTitle = "Display"; nodeInfo = pNodeInfo; //{{INIT_CONTROLS setLayout(null); Insets ins = getInsets(); setSize(500,500); JLabel3.setText("Image Width"); add(JLabel3); JLabel3.setBounds(36,48,84,24); JLabel4.setText("Image Height"); add(JLabel4); JLabel4.setBounds(36,72,75,24); JTextField1.setNextFocusableComponent(JTextField2); JTextField1.setToolTipText("The scale of the coordinate system is determined by the user, and scaled automatically by the system to fit to the screen"); JTextField1.setText("1.5"); add(JTextField1); JTextField1.setBounds(120,48,87,18); JTextField2.setNextFocusableComponent(JCheckBox1); JTextField2.setToolTipText("The scale of the coordinate system is determined by the user, and scaled automatically by the system to fit to the screen"); JTextField2.setText("3.2"); add(JTextField2); JTextField2.setBounds(120,72,87,18); JLabel1.setText("Image"); add(JLabel1); JLabel1.setBounds(36,24,84,24); JTextField3.setNextFocusableComponent(JTextField1); JTextField3.setText("image/base.gif"); add(JTextField3); JTextField3.setBounds(84,24,162,18); JCheckBox1.setNextFocusableComponent(JCheckBox2); JCheckBox1.setSelected(true); JCheckBox1.setToolTipText("Check this if you want this node to appear on the screen"); JCheckBox1.setText("Display This Node"); add(JCheckBox1); JCheckBox1.setBounds(36,96,123,21); JCheckBox2.setNextFocusableComponent(JCheckBox3); JCheckBox2.setSelected(true); JCheckBox2.setToolTipText("This should be checked if you want this node to be fit onto the screen"); JCheckBox2.setText("Fit To Screen"); add(JCheckBox2); JCheckBox2.setBounds(36,120,123,21); JCheckBox3.setNextFocusableComponent(JTextField3); JCheckBox3.setSelected(true); JCheckBox3.setToolTipText("This should be checked if you want the number of the node to be drawn on the screen"); JCheckBox3.setText("Display Node Number"); add(JCheckBox3); JCheckBox3.setBounds(36,144,123,21); JButton1.setToolTipText("Click this button to see the image that is typed above"); JButton1.setText("Preview"); add(JButton1); JButton1.setBounds(168,108,84,27); JPanel1.setLayout(null); add(JPanel1); JPanel1.setBounds(36,165,153,126); //}} //{{REGISTER_LISTENERS SymAction lSymAction = new SymAction(); JButton1.addActionListener(lSymAction); //}} } //{{DECLARE_CONTROLS javax.swing.JLabel JLabel3 = new javax.swing.JLabel(); javax.swing.JLabel JLabel4 = new javax.swing.JLabel(); javax.swing.JTextField JTextField1 = new javax.swing.JTextField(); javax.swing.JTextField JTextField2 = new javax.swing.JTextField(); javax.swing.JLabel JLabel1 = new javax.swing.JLabel(); javax.swing.JTextField JTextField3 = new javax.swing.JTextField(); javax.swing.JCheckBox JCheckBox1 = new javax.swing.JCheckBox(); javax.swing.JCheckBox JCheckBox2 = new javax.swing.JCheckBox(); javax.swing.JCheckBox JCheckBox3 = new javax.swing.JCheckBox(); javax.swing.JButton JButton1 = new javax.swing.JButton(); javax.swing.JPanel JPanel1 = new javax.swing.JPanel(); //}} public void ApplyChanges() { nodeInfo.SetImageWidth(Double.parseDouble(JTextField1.getText())); nodeInfo.SetImageHeight(Double.parseDouble(JTextField2.getText())); nodeInfo.SetDisplayThisNode(JCheckBox1.isSelected()); nodeInfo.SetFitOnScreen(JCheckBox2.isSelected()); nodeInfo.SetDisplayNodeNumber(JCheckBox3.isSelected()); nodeInfo.SetImageHelper(new ImageIcon(JTextField3.getText(),JTextField3.getText())); nodeInfo.SetImage(nodeInfo.GetImageHelper().getImage()); } public void InitializeDisplayValues() { JTextField3.setText(nodeInfo.GetImageHelper().getDescription()); JTextField1.setText(String.valueOf(nodeInfo.GetImageWidth())); JTextField2.setText(String.valueOf(nodeInfo.GetImageHeight())); JCheckBox1.setSelected(nodeInfo.GetDisplayThisNode()); JCheckBox2.setSelected(nodeInfo.GetFitOnScreen()); JCheckBox3.setSelected(nodeInfo.GetDisplayNodeNumber()); } class SymAction implements java.awt.event.ActionListener { public void actionPerformed(java.awt.event.ActionEvent event) { Object object = event.getSource(); if (object == JButton1) JButton1_actionPerformed(event); } } void JButton1_actionPerformed(java.awt.event.ActionEvent event) { // to do: code goes here. JButton1_actionPerformed_Interaction1(event); } void JButton1_actionPerformed_Interaction1(java.awt.event.ActionEvent event) { try { ImageIcon imageIcon = new ImageIcon(JTextField3.getText()); Image tempImage = imageIcon.getImage(); Graphics g = this.getGraphics(); Dimension d = JPanel1.getSize(); int width = (int)(MainClass.mainFrame.GetGraphDisplayPanel().GetXScale()*Double.parseDouble(JTextField1.getText())); int height = (int)(MainClass.mainFrame.GetGraphDisplayPanel().GetYScale()*Double.parseDouble(JTextField2.getText())); g.drawImage(tempImage, 36,144, width, height, null); } catch (java.lang.Exception e) { } } } //PROPRIETARY NODE INFO DISPLAY PANEL //********************************************************* //********************************************************* //********************************************************* //*********************************************************************** //*********************************************************************** //Class DisplayPropertiesPanel //This panel will be shown in a dialog when the users clicks the right menu public static class DisplayPropertiesPanel extends ActivePanel { public DisplayPropertiesPanel() { tabTitle = "Display Properties"; modal=true; //{{INIT_CONTROLS setLayout(null); // Insets ins = getInsets(); setSize(280,114); JLabel1.setToolTipText("This is the number of times the screen will be magnified"); JLabel1.setText("ZoomX:"); add(JLabel1); JLabel1.setBounds(24,12,48,24); JComboBox1.setEditable(true); JComboBox1.setToolTipText("This is the number of times the screen will be magnified"); JComboBox1.addItem(new Double(1.0)); JComboBox1.addItem(new Double(1.5)); JComboBox1.addItem(new Double(2.0)); JComboBox1.addItem(new Double(2.5)); JComboBox1.addItem(new Double(3.0)); add(JComboBox1); JComboBox1.setBounds(144,12,108,24); JLabel2.setToolTipText("Times are listed in milliseconds"); JLabel2.setText("Screen Refresh Rate:"); add(JLabel2); JLabel2.setBounds(24,48,132,24); JLabel4.setText("msec"); add(JLabel4); JLabel4.setFont(new Font("Dialog", Font.BOLD, 9)); JLabel4.setBounds(204,48,24,24); JSlider1.setMinimum(100); JSlider1.setMaximum(10000); JSlider1.setToolTipText("Slide this to change the refresh rate"); JSlider1.setValue(1500); add(JSlider1); JSlider1.setBounds(60,84,216,21); JLabel3.setText("jlabel"); add(JLabel3); JLabel3.setFont(new Font("Dialog", Font.BOLD, 16)); JLabel3.setBounds(156,48,51,27); JComboBox1.setSelectedIndex(0); //}} //{{REGISTER_LISTENERS SymChange lSymChange = new SymChange(); JSlider1.addChangeListener(lSymChange); SymAction lSymAction = new SymAction(); //}} } //{{DECLARE_CONTROLS javax.swing.JLabel JLabel1 = new javax.swing.JLabel(); javax.swing.JComboBox JComboBox1 = new javax.swing.JComboBox(); javax.swing.JLabel JLabel2 = new javax.swing.JLabel(); javax.swing.JLabel JLabel4 = new javax.swing.JLabel(); javax.swing.JSlider JSlider1 = new javax.swing.JSlider(); javax.swing.JLabel JLabel3 = new javax.swing.JLabel(); //}} public void ApplyChanges() { MainClass.displayManager.MultiplyGraphDisplayPanelSize( Double.parseDouble(JComboBox1.getSelectedItem().toString())); MainClass.displayManager.SetRefreshRate(JSlider1.getValue()); } public void InitializeDisplayValues() { double factor = MainClass.displayManager.GetScaleFactor(); JComboBox1.setSelectedItem(new Double(factor)); JSlider1.setValue((int)MainClass.displayManager.GetRefreshRate()); JLabel3.setText(String.valueOf(MainClass.displayManager.GetRefreshRate())); } class SymChange implements javax.swing.event.ChangeListener { public void stateChanged(javax.swing.event.ChangeEvent event) { Object object = event.getSource(); if (object == JSlider1) JSlider1_stateChanged(event); } } void JSlider1_stateChanged(javax.swing.event.ChangeEvent event) { // to do: code goes here. JSlider1_stateChanged_Interaction1(event); } class SymAction implements java.awt.event.ActionListener { public void actionPerformed(java.awt.event.ActionEvent event) { } } void JSlider1_stateChanged_Interaction1(javax.swing.event.ChangeEvent event) { try { // convert int->class java.lang.String JLabel3.setText(java.lang.String.valueOf(JSlider1.getValue())); } catch (java.lang.Exception e) { } } } public void stopDisplayThread() { stopped = true; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -