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

📄 controller.java

📁 The WLAN Traffic Visualizer is a platform independent Java program providing accurate measurement of
💻 JAVA
字号:
package main;//Copyright (C) 2008 Harald Unander////    This file is part of WlanTV.////    WlanTV is free software: you can redistribute it and/or modify//    it under the terms of the GNU General Public License as published by//    the Free Software Foundation, either version 3 of the License, or//    (at your option) any later version.////    WlanTV is distributed in the hope that it will be useful,//    but WITHOUT ANY WARRANTY; without even the implied warranty of//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//    GNU General Public License for more details.////    You should have received a copy of the GNU General Public License//    along with WlanTV.  If not, see <http://www.gnu.org/licenses/>.import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.MouseEvent;import java.awt.event.MouseWheelEvent;import javax.swing.AbstractButton;import javax.swing.JComboBox;import javax.swing.JOptionPane;import javax.swing.event.MouseInputAdapter;import view.View;import view.View.MY_EVENT;import view.View.MyEvent;import view.View.MyEventListener;public class Controller {	// private Model model;	private View view;	enum STATE {		INIT, CAPTURE, CALC, STABLE	};	private STATE state = STATE.INIT;	public Controller(View view, String captureFile, String cmdString) {		this.view = view;		view.buttonHandler = new ButtonHandler();		view.radioButtonHandler = new RadioButtonHandler();		view.dropDownHandler = new DropDownHandler();		view.mouseHandler = new MouseHandler();		view.addMyEventListener(new MyEventHandler());		view.start();		if (cmdString != null) {			System.out.println("cmdString:" + cmdString + " captureFile:" + captureFile);			view.runCapture(cmdString, captureFile);		}	}	public class ButtonHandler implements ActionListener {		public void actionPerformed(ActionEvent event) {			String cmd = event.getActionCommand();			System.out.println("Button:" + cmd);			if (cmd.equals("help")) {				JOptionPane.showMessageDialog(null, Main.helpText);			} else if (cmd.equals("information")) {				JOptionPane.showMessageDialog(null, Main.informationText);			} else if (cmd.equals("setfolder")) {				view.setLiveLogFolder();			} else if (cmd.equals("live")) {				if (state == STATE.INIT || state == STATE.STABLE) {					state = STATE.CAPTURE;					view.setTabbedPaneVisible(false);					view.setWaitCursor1();					view.startLiveCapture();				}			} else if (cmd.equals("dead")) {				if (state == STATE.INIT || state == STATE.STABLE) {					state = STATE.CAPTURE;					view.setTabbedPaneVisible(false);					view.setWaitCursor1();					view.startDeadCapture();				}			} else if (cmd.equals("stop")) {				if (state == STATE.CAPTURE) {					view.stopCapture();				}				else if (state == STATE.CALC) {					state = STATE.INIT;					view.setTabbedPaneVisible(false);					view.setNormalCursor();				}			} else if (cmd.equals("home")) {				if (state == STATE.STABLE) {					view.updateViewSpan();					view.redraw();					view.calculateAvailability();				}			} else if (cmd.equals("beer")) {				if (state == STATE.STABLE) {					view.makePieChart();				}			} else if (cmd.equals("load")) {				if (state == STATE.STABLE) {					view.makeLoadChart();				}			} else if (cmd.equals("snap")) {				if (state == STATE.STABLE) {					view.snapshot();					view.trainPanel.repaint();				}			} else if (cmd.equals("store")) {				if (state == STATE.STABLE) {					view.storeCapture();				}			} else {				Main.myLogging.addWarning(this, "Wrong command: " + cmd);			}		}	};	public class RadioButtonHandler implements ItemListener {		public void itemStateChanged(ItemEvent e) {			String cmd = ((AbstractButton) e.getSource()).getActionCommand();			System.out.println("Radio:" + cmd);			if (cmd.equals("FCS")) {				if (state == STATE.STABLE) { 					state = STATE.CALC;					view.setWaitCursor2();					view.findAndFilterTransactions();					view.redraw();					view.calculateAvailability();					view.setNormalCursor();					state = STATE.STABLE;				}			} else if (cmd.equals("Log")) {				view.setLogging(e.getStateChange() == ItemEvent.SELECTED);			} else if (cmd.equals("Expert")) {				if (state == STATE.STABLE) { 					view.setAdvancedMenu(e.getStateChange() == ItemEvent.SELECTED);					view.calculateAvailability();					view.redraw();				}			} else if (cmd.equals("Details")) {				view.redraw();			} else				Main.myLogging.addWarning(this, "Wrong command: " + cmd);		}	}	public class DropDownHandler implements ItemListener {		public void itemStateChanged(ItemEvent event) {			if (event.getStateChange() == ItemEvent.SELECTED && state == STATE.STABLE) {				String cmd = ((JComboBox) event.getSource()).getActionCommand();				System.out.println("Drop:" + cmd);				if (cmd.equals("ModeDropDown")) {					state = STATE.CALC;					view.setWaitCursor2();					view.findAndFilterTransactions();					view.redraw();					view.calculateAvailability();					view.setNormalCursor();					state = STATE.STABLE;				} else if (cmd.equals("StaDropDown")) {					view.filterTransactions();					view.redraw();					view.calculateAvailability();				} else if (cmd.equals("ApDropDown")) {					view.filterTransactions();					view.redraw();					view.calculateAvailability();				} else if (cmd.equals("RssiDropDown")) {					view.filterTransactions();					view.redraw();					view.calculateAvailability();				} else if (cmd.equals("DirDropDown")) {					view.filterTransactions();					view.redraw();					view.calculateAvailability();				} else if (cmd.equals("ChannelDropDown")) {					view.filterTransactions();					view.redraw();					view.calculateAvailability();				} else if (cmd.equals("FillPayloadLenDropDown")) {					state = STATE.CALC;					view.setWaitCursor2();					view.findAndFilterTransactions();					view.redraw();					view.calculateAvailability();					view.setNormalCursor();					state = STATE.STABLE;				} else if (cmd.equals("FillAccessTimeDropDown")) {					state = STATE.CALC;					view.setWaitCursor2();					view.findAndFilterTransactions();					view.redraw();					view.calculateAvailability();					view.setNormalCursor();					state = STATE.STABLE;				} else					Main.myLogging.addWarning(this, "Wrong command: " + cmd);			}			view.trainPanel.requestFocusInWindow();		}	};	public class MouseHandler extends MouseInputAdapter {		boolean dragged = false;		@Override		public void mouseClicked(MouseEvent event) {			if (state == STATE.STABLE) {				if (event.getButton() == MouseEvent.BUTTON1)					view.showPacket(event.getX(), event.getY());				else if (event.getButton() == MouseEvent.BUTTON3) {					view.setWaitCursor1();					view.showPacketDetailsTshark(event.getX(), event.getY());					view.setNormalCursor();				}			}		}		@Override		public void mousePressed(MouseEvent e) {			if (state != STATE.CALC) {				// System.out.println("Pressed "+e.getX());				view.trainPanel.setFirstLimit(e.getX());			}		}		@Override		public void mouseReleased(MouseEvent e) {			if (state != STATE.CALC) {				if (dragged) {					// System.out.println("Released "+e.getX());					view.trainPanel.setSecondLimit(e.getX(), e.getButton());					if (state == STATE.STABLE)						view.calculateAvailability();				}			}			dragged = false;		}		@Override		public void mouseDragged(MouseEvent e) {			if (state != STATE.CALC) {				dragged = true;			}		}		@Override		public void mouseWheelMoved(MouseWheelEvent e) {			if (state != STATE.CALC) {				int notches = e.getWheelRotation();				if (notches > 0) {					view.trainPanel.zoomIn(e.getX());					if (state == STATE.STABLE)						view.calculateAvailability();				} else if (notches < 0) {					view.trainPanel.zoomOut(e.getX());					if (state == STATE.STABLE)						view.calculateAvailability();				}			}		}		@Override		public void mouseMoved(MouseEvent e) {			if (state == STATE.STABLE)				view.showPacketDetails(e.getX(), e.getY());		}	}	public void setTotalPacketCountLabel(int size) {		view.setTotalPacketCountLabel(size);	}	public void setGridLabel(String string) {		view.setGridLabel(string);	}	public class MyEventHandler implements MyEventListener {		@Override		public void myEventOccurred(MyEvent evt) {			MY_EVENT cmd = (MY_EVENT) evt.getSource();			System.out.println("My:" + cmd);			if (cmd == MY_EVENT.CAPTURE_COMPLETE) {				state = STATE.CALC;				view.setWaitCursor2();				view.findAndFilterTransactions();				view.updateViewSpan();				view.redraw();				view.calculateAvailability();				view.showFirstPacket();				view.setTabbedPaneVisible(true);				view.setNormalCursor();				state = STATE.STABLE;			} else if (cmd == MY_EVENT.CAPTURE_ABORT) {				view.setNormalCursor();				state = STATE.INIT;			} else				Main.myLogging.addWarning(this, "Wrong command: " + cmd);		}	}}

⌨️ 快捷键说明

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