📄 simgui.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 + -