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

📄 simgui.java

📁 p2p仿真
💻 JAVA
字号:
/*
 * @(#)SimGui.java	ver 1.2  6/20/2005
 *
 * Copyright 2005 Weishuai Yang (wyang@cs.binghamton.edu). 
 * All rights reserved.
 * 
 */


package gps.gui;

import gps.Simulator;
import gps.event.SimEventScheduler;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.Timer;


public class SimGui extends JPanel {

    private StatusBar mStatusBar;
    private JMenuBar mMBar;
    private ActionListener mActionListener;
    private SimGuiControl mSimGuiControl;
    private JPanel mInfo;
    private JPanel mGraph;
    private JFrame mFrame;
    
    public JFrame getFrame(){
    	return mFrame;
    }
    
    public JPanel getGraphPanel(){
        return mGraph;
    }
    
    public JPanel getInfoPanel(){
        return mInfo;
    }
    
	public static SimEventScheduler mScheduler=SimEventScheduler.getInstance();
    
    public SimGui(){
    	
    	
    }
  

    private void setMenu(){
        
        mMBar=new JMenuBar();

        JMenu file=new JMenu("File");
        file.setMnemonic(KeyEvent.VK_F);
        
        JMenuItem file_openConfig=new JMenuItem("Open Protocol Config File", KeyEvent.VK_O);
        file_openConfig.addActionListener(mActionListener);
        file.add(file_openConfig);



        JMenuItem file_saveConfig=new JMenuItem("Save Protocol Config File", KeyEvent.VK_S);
        file_saveConfig.addActionListener(mActionListener);
        file.add(file_saveConfig);
        

        JMenuItem file_openGraph=new JMenuItem("Open Graph File", KeyEvent.VK_G);
        file_openGraph.addActionListener(mActionListener);
        file.add(file_openGraph);

        JMenuItem file_quit=new JMenuItem("Quit", KeyEvent.VK_Q);
        file_quit.addActionListener(mActionListener);
        file.add(file_quit);
        
        JMenu sim=new JMenu("Simulation");
        sim.setMnemonic(KeyEvent.VK_S);
        
        JMenuItem sim_run=new JMenuItem("Run", KeyEvent.VK_R);
        sim_run.addActionListener(mActionListener);
        sim.add(sim_run);

        JMenuItem sim_pause=new JMenuItem("Pause", KeyEvent.VK_P);
        sim_pause.addActionListener(mActionListener);
        sim.add(sim_pause);
        
        
        JMenuItem sim_resume=new JMenuItem("Resume", KeyEvent.VK_U);
        sim_resume.addActionListener(mActionListener);
        sim.add(sim_resume);

        JMenuItem sim_stop=new JMenuItem("Stop", KeyEvent.VK_T);
        sim_stop.addActionListener(mActionListener);
        sim.add(sim_stop);

        
        //JMenu settings=new JMenu("Settings");
        //settings.setMnemonic(KeyEvent.VK_S);
        
        //JMenuItem settings_options=new JMenuItem("Options", KeyEvent.VK_O);
        //settings_options.addActionListener(mActionListener);
        //settings.add(settings_options);

        JMenu help=new JMenu("Help");
        help.setMnemonic(KeyEvent.VK_H);
        
        JMenuItem help_about=new JMenuItem("About", KeyEvent.VK_A);
        help_about.addActionListener(mActionListener);
        help.add(help_about);
        
        mMBar.add(file);
        mMBar.add(sim);
        //mMBar.add(settings);
        mMBar.add(help);
        
    }
    
    
    
    public void initComponents() {
        mSimGuiControl=new SimGuiControl(this);
        mActionListener=new ActionHandler(mSimGuiControl);

        mGraph = new GraphPanel();
        mInfo = new ControlPanel(mSimGuiControl);
        
        mSimGuiControl.setGraphPanel(mGraph);
        mSimGuiControl.setControlPanel(mInfo);
        
        
        setLayout(new BorderLayout());
        //Adding BoardPanel Contents
        mGraph.setBorder(new javax.swing.border.EtchedBorder());
        mGraph.setPreferredSize(new java.awt.Dimension(480, 480));
        //boardPanel.add(new BSMCanvas(this));
        add(mGraph, java.awt.BorderLayout.CENTER);
        
        //Graphics g=boardPanel.getGraphics();
        //g.drawImage(board.getImage(), 0, 0, this);

        //Adding InformationPanel Contents
        mInfo.setBorder(new javax.swing.border.EtchedBorder());
        mInfo.setPreferredSize(new java.awt.Dimension(320, 480));
        add(mInfo, java.awt.BorderLayout.EAST);
        
        
        mStatusBar = new StatusBar("Please load config file for simulation.");
        mStatusBar.setBorder(new javax.swing.border.EtchedBorder());
        mStatusBar.setPreferredSize(new java.awt.Dimension(800, 20));
        add(mStatusBar, java.awt.BorderLayout.PAGE_END);
        
        
        mSimGuiControl.loadInit();
        
        
    }
    
    
    public void setStatusBar(String s){
        if(mStatusBar!=null)
            mStatusBar.setText(s);
    }
    
    public void setProgress(int c, int m){ 	
	    	mStatusBar.setMax(m);
	        mStatusBar.setProgress(c);
	        
	        if(m!=0){
	        	mStatusBar.setText("Current simulation time: "+c+" / Total simulation time: "+m);	        	
	        	if(c==m)
	        		mStatusBar.setText("Simulation finished.");
			}
			else
				mStatusBar.setText("Current simulation time: "+c);	        	
	        	
    }

    public void resetProgress(){
        mStatusBar.reset();
    }

    public void go(JFrame win){
        win.setContentPane(this);
        setMenu();
        win.setJMenuBar(mMBar);
        win.addWindowListener(new WindowHandler(win));
        //win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        win.pack();
        win.setLocationRelativeTo(null);
        win.setVisible(true);
        mFrame=win;
    }

    public void quit(){
        mFrame.setVisible(false);
        mFrame.dispose();
        System.exit(0);  
    }
    
    private final static class ActionHandler implements ActionListener
    {
        
        private SimGuiControl mSimGuiControl;
        ActionHandler(SimGuiControl simGuiControl){
            mSimGuiControl=simGuiControl;
        }
        public void actionPerformed(ActionEvent e){
            String cmd=e.getActionCommand();
            if(cmd.equals("Open Protocol Config File")) {
            		mSimGuiControl.openConf();
            }

            else if(cmd.equals("Save Protocol Config File")) {
            		mSimGuiControl.saveConf();
            }
            else if(cmd.equals("Open Graph File")) {
            		mSimGuiControl.openGraph();
            }
            else if(cmd.equals("Run")) {
                	mSimGuiControl.run();
            }

            else if(cmd.equals("Pause")) {
                	mSimGuiControl.stop();
            }
            else if(cmd.equals("Resume")) {
                	mSimGuiControl.resume();
            }
            
            else if(cmd.equals("Stop")) {
                	mSimGuiControl.terminate();
            }
            else if(cmd.equals("Quit")) {
        		mSimGuiControl.quit();
            }

            /*

            else if(cmd.equals("Open Resume File")) {
        		mSimGuiControl.openResume();
            }
            else if(cmd.equals("Resume simulation")) {
            	mSimGuiControl.resume();
            }
			*/
            else if(cmd.equals("Options")) {
                	mSimGuiControl.options();
            }

            else if(cmd.equals("About")) {
                	mSimGuiControl.about();;
            }

        }
    }
    

    private final static class WindowHandler extends WindowAdapter
    {
        private JFrame frame;
        public WindowHandler(JFrame f){ frame=f;}
        public void windowClosing(WindowEvent e){
            Simulator.getInstance().stopIt();
        	mScheduler.discharge();
            frame.setVisible(false);
            frame.dispose();
            System.exit(0);
        }
    }
    
    
    private class StatusBar extends JPanel
    {
        private int current=0;
        private int total=0;
        private JLabel mText=null;
        private JProgressBar mProgressBar=null;
        
        int test=0;
        
        public StatusBar(String s){
            mText=new JLabel();
            mText.setText(s);
            setLayout(new BorderLayout());
            mText.setPreferredSize(new java.awt.Dimension(200, 120));
            add(mText, java.awt.BorderLayout.CENTER);
            
            mProgressBar=new JProgressBar();
            mProgressBar.setPreferredSize(new java.awt.Dimension(160, 20));
            mProgressBar.setBorderPainted(false);
            add(mProgressBar, java.awt.BorderLayout.EAST);
            
            //startProgress(200);

        }
        public void setMax(int m){
        	mProgressBar.setVisible(true);
        	
        	if(total!=m){
	        	total=m;
				mProgressBar.setMaximum(m);
				setIndeterminate(false);
			}
        }
        public void setProgress(int c){
            current=c;
            mProgressBar.setValue(c);
        }
        public void setText(String t){
            mText.setText(t);
        }
        public void setIndeterminate(boolean b){
        	mProgressBar.setIndeterminate(b);
            mProgressBar.setStringPainted(!b);

        }
        
        public void reset(){
            mProgressBar.setVisible(false);
        }
        public void startProgress(int m){
        	
			  int delay = 500; //500 milliseconds
        
        	  setMax(m);
        	  
			  ActionListener taskPerformer = new ActionListener() {
			      public void actionPerformed(ActionEvent evt) {
			          //setProgress(mScheduler.getCurrent());
			  
			          setProgress(test);
			          test+=10;
			      }
			  };
			  Timer mTimer=new Timer(delay, taskPerformer);
			  mTimer.setRepeats(true);
			  mTimer.start();
        }
        
    }

}

⌨️ 快捷键说明

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