📄 viewerpanel.java~
字号:
package edu.odu.cs.zeil.AlgAE.Client;import PSGr;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import java.applet.AppletContext;import java.net.URL;import edu.odu.cs.zeil.AlgAE.Application;import edu.odu.cs.zeil.AlgAE.Debug;import edu.odu.cs.zeil.AlgAE.Direction;import edu.odu.cs.zeil.AlgAE.Message;import edu.odu.cs.zeil.AlgAE.Messages;import edu.odu.cs.zeil.AlgAE.MessageListener;import edu.odu.cs.zeil.AlgAE.ParameterizedMessage;import edu.odu.cs.zeil.AlgAE.ResponseDialog;import edu.odu.cs.zeil.AlgAE.TextDialog;import edu.odu.cs.zeil.AlgAE.Client.AboutAlgAEDialog;import edu.odu.cs.zeil.AlgAE.Client.FontDialog;import edu.odu.cs.zeil.AlgAE.Client.MessageDispatcher;import edu.odu.cs.zeil.AlgAE.Client.SpeedDialog;import edu.odu.cs.zeil.AlgAE.Client.Toolbar;import edu.odu.cs.zeil.AlgAE.Client.DataViewer.DataCanvas;import edu.odu.cs.zeil.AlgAE.Client.DataViewer.DataPane;import edu.odu.cs.zeil.AlgAE.Client.DataViewer.DataGraph.Graph;import edu.odu.cs.zeil.AlgAE.Client.DataViewer.DataGraph.Node;import edu.odu.cs.zeil.AlgAE.Client.SourceViewer.SourcePane;import edu.odu.cs.zeil.AlgAE.Client.IOViewer.IOPane;import edu.odu.cs.zeil.AlgAE.gui.HSplitPane;import edu.odu.cs.zeil.AlgAE.gui.VSplitPane;public class ViewerPanel extends Panel{ private Application application; private Panel mainPanel; private Menu algorithmMenu; private Menu helpMenu; private DataPane dataPane; private SourcePane sourcePane; private IOPane ioPane; private MenuBar menuBar; private Toolbar toolBar; private Component splitPane; private MessageDispatcher dispatcher; private boolean pausingAtFrames; private boolean showDataPane; private boolean showSourcePane; private boolean showIOPane; private boolean wideGraphics; private String helpCommand; private String aboutString; private int framePause; private int algorithmPause; private InputSimulator buttonSimulator; private MenuItem speedItem, exitItem, continueItem, fontsItem, clearHighlightingItem, arrangeItem; private CheckboxMenuItem autoArrangeItem, incrementalItem, pausingItem, tracingItem, showDataItem, showSourceItem, showIOItem, showToolbarItem; private SpeedDialog speedDialog = null; private Vector algorithmMenuItems; private ActionListener algorithmMenuSelected; private ResponseDialog rd; private MessageListener responseHandler; private void buildMenu(Vector sourceFileItems, Vector menuList) { Menu fileMenu, optionsMenu, windowsMenu; fileMenu = new Menu ("File", false); menuList.addElement(fileMenu); algorithmMenu = new Menu ("Algorithm", false); if (framePause < 0) menuList.addElement(algorithmMenu); optionsMenu = new Menu ("Options", false); menuList.addElement(optionsMenu); windowsMenu = new Menu ("Windows", false); menuList.addElement(windowsMenu); helpMenu = new Menu ("Help", false); menuList.addElement(helpMenu); if (!application.isAnApplet()) { MenuItem printItem = new MenuItem ("Save PS"); fileMenu.add (printItem); printItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { printCanvas(); }}); fileMenu.add (new MenuItem ("-")); } exitItem = new MenuItem ("Exit"); fileMenu.add (exitItem); exitItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { application.exit(0); }}); continueItem = new MenuItem ("Continue (alt-C)"); continueItem.setEnabled (false); if (framePause < 0) algorithmMenu.add (continueItem); continueItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { continueAnimation(); }}); algorithmMenu.add (new MenuItem ("-")); arrangeItem = new MenuItem ("Arrange (alt-R)"); if (framePause < 0) optionsMenu.add (arrangeItem); arrangeItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { synchronized (dispatcher) { dataPane.forceArrangeData(); } }}); optionsMenu.add (new MenuItem ("-")); fontsItem = new MenuItem ("Font Size..."); optionsMenu.add (fontsItem); fontsItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setFontSize(); }}); speedItem = new MenuItem ("Speed..."); optionsMenu.add (speedItem); speedItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { speedSettings(); }}); optionsMenu.add (new MenuItem ("-")); autoArrangeItem = new CheckboxMenuItem("Auto Arrange"); optionsMenu.add (autoArrangeItem); autoArrangeItem.addItemListener(new ItemListener() { public void itemStateChanged (ItemEvent e) { autoArranging(autoArrangeItem.getState()); }}); pausingItem = new CheckboxMenuItem("Pausing"); if (framePause < 0) optionsMenu.add (pausingItem); pausingItem.setState(true); pausingItem.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { pausing(pausingItem.getState()); }}); MenuItem wideItem = new MenuItem ("Wide graphics"); windowsMenu.add (wideItem); wideItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { configurePanes(true, showDataPane, showSourcePane, showIOPane); }}); MenuItem tallItem = new MenuItem ("Tall graphics"); windowsMenu.add (tallItem); tallItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { configurePanes(false, showDataPane, showSourcePane, showIOPane); }}); windowsMenu.add (new MenuItem ("-")); showToolbarItem = new CheckboxMenuItem("Toolbar"); showToolbarItem.setState(true); windowsMenu.add (showToolbarItem); showToolbarItem.addItemListener(new ItemListener() { public void itemStateChanged (ItemEvent e) { toolBar.setVisible (showToolbarItem.getState()); toolBar.repaint(); /* ViewerPanel.this.invalidate(); ViewerPanel.this.validate(); */ }}); windowsMenu.add (new MenuItem ("-")); showDataItem = new CheckboxMenuItem("Graphics"); windowsMenu.add (showDataItem); showDataItem.addItemListener(new ItemListener() { public void itemStateChanged (ItemEvent e) { configurePanes(wideGraphics, showDataItem.getState(), showSourcePane, showIOPane); }}); showSourceItem = new CheckboxMenuItem("Source"); windowsMenu.add (showSourceItem); showSourceItem.addItemListener(new ItemListener() { public void itemStateChanged (ItemEvent e) { configurePanes(wideGraphics, showDataPane, showSourceItem.getState(), showIOPane); }}); showIOItem = new CheckboxMenuItem("std I/O"); windowsMenu.add (showIOItem); showIOItem.addItemListener(new ItemListener() { public void itemStateChanged (ItemEvent e) { configurePanes(wideGraphics, showDataPane, showSourcePane, showIOItem.getState()); }}); windowsMenu.add (new MenuItem ("-")); for (int i = 0; i < sourceFileItems.size(); ++i) { MenuItem item = (MenuItem)sourceFileItems.elementAt(i); windowsMenu.add (item); } MenuItem aboutItem = new MenuItem ("About AlgAE"); helpMenu.add (aboutItem); aboutItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { AboutAlgAEDialog d = new AboutAlgAEDialog(application.dialogParent()); application.dialogDone(); }}); if (helpCommand != null) { MenuItem helpItem = new MenuItem ("Help"); helpMenu.add (helpItem); helpItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { showHelp(); }}); } } private void setMessageResponses() { application.msgs.title.addMessageListener (new MessageListener() { public void messageReceived (String kind, Vector params) { try { String title = (String)params.elementAt(0); if (application.dataWindow != null) application.dataWindow.setTitle (title); aboutString = (String)params.elementAt(1); MenuItem aboutItem = new MenuItem ("About " + title); helpMenu.add (aboutItem); aboutItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { TextDialog d = new TextDialog(application.dialogParent(), aboutString); application.dialogDone(); }}); } catch (ClassCastException e) { Debug.error ("Internal error\nIllegal parameter in TITLE msg:\n" + e.getMessage()); } } }); application.msgs.serverQuit.addMessageListener (new MessageListener() { public void messageReceived (String kind, Vector params) { dispatcher.exit(); application.exit (0); }}); application.msgs.status.addMessageListener (new MessageListener() { public void messageReceived (String kind, Vector params) { try { String str = (String)params.elementAt(0); dataPane.setStatusText (str); } catch (ClassCastException e) { Debug.error ("Internal error\nIllegal parameter in STATUS msg:\n" + e.getMessage()); } } }); MessageListener preparePicture = new MessageListener() { public void messageReceived (String kind, Vector params) { dataPane.graph().unmarkNodes(); } }; application.msgs.beginAlgorithm.addMessageListener (preparePicture); application.msgs.beginFrame.addMessageListener (preparePicture); application.msgs.endFrame.addMessageListener (new MessageListener() { public void messageReceived (String kind, Vector params) { dispatcher.denyContinuation(); continueItem.setEnabled (true); toolBar.enableContinue(); Debug.show (Debug.messageSynch, "VW EFRAME pausingAtFrames: ", pausingAtFrames); dataPane.graph().removeUnmarkedNodes(); if (pausingAtFrames) { arrangeData(); try { if (params.size() > 0) { String frameID = (String)params.elementAt(0); sourcePane.display (frameID); } } catch (Exception e) {} if (framePause >= 0) { buttonSimulator = new InputSimulator (framePause); buttonSimulator.start(); } } else continueAnimation(); } }); application.msgs.endAlgorithm.addMessageListener (new MessageListener() { public void messageReceived (String kind, Vector params) { dispatcher.denyContinuation(); continueItem.setEnabled (false); toolBar.disableContinue(); dataPane.graph().removeUnmarkedNodes(); arrangeData(); dataPane.showGraph(); for (int i = 0; i < algorithmMenuItems.size(); ++i) { MenuItem item = (MenuItem)algorithmMenuItems.elementAt(i); item.setEnabled(true); } if (algorithmPause >= 0) { buttonSimulator = new InputSimulator (algorithmPause); buttonSimulator.start(); } } }); algorithmMenuItems = new Vector(); application.msgs.menuItem.addMessageListener (new MessageListener() { public void messageReceived (String kind, Vector params) { String menuItemName = (String)params.elementAt(0); MenuItem newItem = new MenuItem (menuItemName); algorithmMenuItems.addElement (newItem); newItem.addActionListener (algorithmMenuSelected); algorithmMenu.add (newItem); } }); algorithmMenuSelected = new ActionListener () { public void actionPerformed(ActionEvent e) { MenuItem item = (MenuItem)e.getSource(); Vector params = new Vector(); params.addElement (item.getLabel()); dispatcher.send (new ParameterizedMessage(application.msgs.itemSelected, params)); for (int i = 0; i < algorithmMenuItems.size(); ++i) { MenuItem it = (MenuItem)algorithmMenuItems.elementAt(i); it.setEnabled(false); } dispatcher.permitContinuation(); }}; responseHandler = new MessageListener () { public void messageReceived (String kind, Vector params) { Vector oparams = new Vector(); oparams.addElement (kind); dispatcher.send (new ParameterizedMessage(application.msgs.response, oparams)); application.dialogDone(); rd = null; } }; rd = null; application.msgs.prompt.addMessageListener (new MessageListener() { public void messageReceived (String kind, Vector params) { String prompt = (String)params.elementAt(0); rd = new ResponseDialog (application.dialogParent(), prompt, responseHandler); } }); MessageListener showStdIO = new MessageListener() { public void messageReceived (String kind, Vector params) { configurePanes(wideGraphics, showDataPane, showSourcePane, true); } }; application.msgs.stdout.addMessageListener (showStdIO);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -