/* * A Viewer for each structure. * * Copyright 2000 Andy Gill * * $Revision: 1.1 $ * $Date: 2000/09/15 16:14:17 $ */ import java.lang.*; import java.awt.*; import java.awt.event.*; import java.util.*; /** * @version 0.1 * @author Andy Gill */ class HoodViewer extends Frame implements ActionListener,WindowListener { final static int START = 0; final static int END = 1; final static int STATIC = 2; String observeLabel; CDS stuff; // our root node Frame frame; HoodText textarea; ScrollPane scroller; private Button startButton = new Button("<<"), backButton = new Button("<"), forwardButton = new Button(">"), endButton = new Button(">>"); int currNode = 0; int targetNode; HoodVector allNodes; // vector of nodes. int[] allIx; Pretty pretty; boolean isStatic = false; HoodViewer(String observeLabel,CDS stuff,int firstStyle) { super(); if (firstStyle == STATIC) { isStatic = true; } this.observeLabel = observeLabel; this.stuff = stuff; // frame = new Frame(); this.setBackground(Hood.bg); this.setLayout(new BorderLayout()); this.setSize(800,500); this.setTitle(observeLabel); this.addWindowListener(this); textarea = new HoodText(observeLabel); textarea.setFontSize(15); textarea.setBackground(Hood.textBg); textarea.setForeground(Hood.textFg); scroller = new ScrollPane(); scroller.add(textarea); this.add("Center",scroller); Panel p = new Panel(); p.add(startButton); p.add(backButton); p.add(forwardButton); p.add(endButton); this.add("North",p); this.show(); startButton.addActionListener(this); backButton.addActionListener(this); forwardButton.addActionListener(this); endButton.addActionListener(this); allNodes = new HoodVector(); allNodes.setElementAt(stuff,0); stuff.visitNodes(allNodes); String txt = ""; allIx = allNodes.indexes(); if (firstStyle == END || firstStyle == STATIC) { currNode = allIx.length - 1; } pretty = stuff.render(null,0,false); pretty.best(80,textarea); showAt(currNode); this.validate(); } public void showAt(int vtime) { int realtime = allIx[vtime]; CDS cds = (CDS) allNodes.elementAt(realtime); // realtime is current timestamp Message.message("showAt" + vtime); textarea.setStep(realtime); textarea.repaint(); } public void actionPerformed(ActionEvent e) { Button b = (Button) e.getSource(); if (b == forwardButton) { if (currNode < allIx.length - 1) { currNode++; showAt(currNode); } } else if (b == backButton) { if (currNode > 0) { currNode--; showAt(currNode); } } else if (b == startButton) { currNode = 0; showAt(currNode); } else if (b == endButton) { currNode = allIx.length - 1; showAt(currNode); } else { Message.message("B:" + b.getLabel()); } Message.message("C:" + currNode + " " + allIx.length); } // WindowListener public void windowClosing(WindowEvent e) { this.dispose(); } public void windowOpened(WindowEvent e) {} public void windowClosed(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} }