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