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

📄 viewerpanel.java

📁 ALGAE是一个快速创建算法演示的框架。目前支持的算法实现语言包括java和c
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -