Class AutomatenSimulator

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--java.awt.Panel
                    |
                    +--java.applet.Applet
                          |
                          +--AutomatenSimulator

public class AutomatenSimulator
extends java.applet.Applet
implements KontrollAenderung, KonfigurationsAenderung

Simulation eines endlichen Automaten als Applet

Version:
990618
Author:
Christian Heinemann <heinemann@bigfoot.de>
See Also:
Serialized Form

Inner classes inherited from class java.awt.Component
java.awt.Component.AWTTreeLock
 
Field Summary
private  java.awt.Color defaultPanelColor
          Vorgegebene Standardfarbe für Hintergründe der Bereiche
private  GraphLayoutPanel graphlayoutpanel
          Steuerung des Graphen
private  GraphPanel graphpanel
          Anzeige der Überführungen als Graph
private  java.awt.GridBagLayout gridbag
          Layoutmanager zur Plazierung der Appletbereiche
private  java.awt.Image helpTextImage
           
private static java.lang.String HELPTEXTURL
           
private  LogoPanel logopanel
          Anzeige der Copyright-Informationen
private  SimKontrollPanel simkontrollpanel
          Eingabe des Wortes, Steuerung der Simulation
private  Simulation simulation
          Simulations-Objekt des Automaten
private  SimulationsZustandsPanel simulationszustandspanel
          Anzeige des Simulationsstatusses: läeuft, stop, pause, ...
private  StartEndePanel startendepanel
          Eingabebereich für Startzustand und Endzustände
private  StatusPanel statuspanel
          zeigt die momentane Konfiguration (Wort, Zustandsmenge) des Automaten an
private  TabellenPanel tabellenpanel
          Überführungstabelle
private  TabellenPanelScroll tabellenpanelscroll
          scrollbarer Bereich für Überführungstabelle
 
Fields inherited from class java.applet.Applet
serialVersionUID, stub
 
Fields inherited from class java.awt.Panel
base, nameCounter, serialVersionUID
 
Fields inherited from class java.awt.Container
component, containerListener, containerSerializedDataVersion, dispatcher, layoutMgr, maxSize, ncomponents, serialVersionUID
 
Fields inherited from class java.awt.Component
actionListenerK, adjustmentListenerK, appContext, assert, background, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, changeSupport, componentListener, componentListenerK, componentOrientation, componentSerializedDataVersion, containerListenerK, cursor, dropTarget, enabled, eventMask, focusListener, focusListenerK, font, foreground, hasFocus, height, incRate, inputMethodListener, inputMethodListenerK, isInc, isPacked, itemListenerK, keyListener, keyListenerK, LEFT_ALIGNMENT, locale, LOCK, minSize, mouseListener, mouseListenerK, mouseMotionListener, mouseMotionListenerK, name, nameExplicitlySet, newEventsOnly, ownedWindowK, parent, peer, peerFont, popups, prefSize, RIGHT_ALIGNMENT, serialVersionUID, textListenerK, TOP_ALIGNMENT, valid, visible, width, windowListenerK, x, y
 
Constructor Summary
AutomatenSimulator()
           
 
Method Summary
private  Automat generiereAutomat()
          erstellt einen Automaten aus Automatenparametern
private  Simulation generiereSimulation()
          erstellt eine neue Simulation und richtet den Graphen ein
private  AutomatenParameter getAutomatenParameter()
          erstellt Automaten-Parameter aus den Eingaben im Applet
 void init()
          richtet die Fenster-Bereiche ein und erzeugt ein neues Simulationsobjekt Optional wird aus den Applet-Parametern ein Automat konstruiert.
 void konfigurationsAenderung(Konfiguration konfiguration)
          wird aufgerufen, wenn eine Konfigurationsänderung im Automaten auftritt implementiert die Funktion aus dem Interface KonfigurationsAenderung
private  boolean prepareSimulation()
          bereitet alles für den Start der Simulation vor
private  void readAppletParameters()
          verarbeitet Applet-Parameter aus HTML-Datei und konstruiert daraus einen Automaten
 void setEditable(boolean state)
          sperrt/aktiviert die Eingabebereiche gegen Eingabe
 void simulationErzeugen()
          Erzeugt eine neue Simulation aus den Eingabedaten, sowie einen Graphen
 void simulationPause()
          pausiert die Simulation implementiert die Funktion aus dem Interface KontrollAenderung
 void simulationReboot()
          Zurücksetzen der Simulation implementiert die Funktion aus dem Interface KontrollAenderung
 void simulationStart()
          startet die Simulation implementiert die Funktion aus dem Interface KontrollAenderung
 void simulationStep()
          führt einen Einzelschritt der Simulation durch implementiert die Funktion aus dem Interface KontrollAenderung
 void simulationStop()
          stoppt die Simulation implementiert die Funktion aus dem Interface KontrollAenderung
 void simulationsZustandsAenderung(SimulationsZustand zustand)
          wird aufgerufen, wenn sich der Zustand der Simulation geändert hat implementiert die Funktion aus dem Interface KonfigurationsAenderung
 void simulationVerzoegerung(int verzoegerung)
          setzt die Geschwindigkeit der Simulation
 void start()
           
 
Methods inherited from class java.applet.Applet
destroy, getAppletContext, getAppletInfo, getAudioClip, getAudioClip, getCodeBase, getDocumentBase, getImage, getImage, getLocale, getParameter, getParameterInfo, isActive, newAudioClip, play, play, resize, resize, setStub, showStatus, stop
 
Methods inherited from class java.awt.Panel
, addNotify, constructComponentName
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyOrientation, countComponents, deliverEvent, dispatchEventImpl, dispatchEventToSelf, doLayout, eventEnabled, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents_NoClientCode, getComponents, getInsets, getLayout, getMaximumSize, getMinimumSize, getMouseEventTarget, getPreferredSize, getWindow, initIDs, insets, invalidate, invalidateTree, isAncestorOf, layout, lightweightPrint, list, list, locate, minimumSize, nextFocus, paint, paintComponents, paramString, postProcessKeyEvent, postsOldMouseEvents, preferredSize, preProcessKeyEvent, print, printComponents, printOneComponent, processContainerEvent, processEvent, proxyEnableEvents, proxyRequestFocus, readObject, remove, remove, removeAll, removeContainerListener, removeNotify, setFocusOwner, setFont, setLayout, transferFocus, update, validate, validateTree, writeObject
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addPropertyChangeListener, addPropertyChangeListener, areInputMethodsEnabled, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont_NoClientCode, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getInputContext, getInputMethodRequests, getLocation, getLocation, getLocationOnScreen, getName, getNativeContainer, getParent_NoClientCode, getParent, getPeer, getSize, getSize, getToolkit, getToolkitImpl, getTreeLock, getWidth, getWindowForObject, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isDisplayable, isDoubleBuffered, isEnabled, isEnabledImpl, isFocusTraversable, isLightweight, isOpaque, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, remove, removeComponentListener, removeFocusListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, reshape, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setForeground, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

statuspanel

private StatusPanel statuspanel
zeigt die momentane Konfiguration (Wort, Zustandsmenge) des Automaten an

tabellenpanel

private TabellenPanel tabellenpanel
Überführungstabelle

tabellenpanelscroll

private TabellenPanelScroll tabellenpanelscroll
scrollbarer Bereich für Überführungstabelle

graphpanel

private GraphPanel graphpanel
Anzeige der Überführungen als Graph

HELPTEXTURL

private static final java.lang.String HELPTEXTURL

helpTextImage

private java.awt.Image helpTextImage

graphlayoutpanel

private GraphLayoutPanel graphlayoutpanel
Steuerung des Graphen

startendepanel

private StartEndePanel startendepanel
Eingabebereich für Startzustand und Endzustände

simkontrollpanel

private SimKontrollPanel simkontrollpanel
Eingabe des Wortes, Steuerung der Simulation

gridbag

private java.awt.GridBagLayout gridbag
Layoutmanager zur Plazierung der Appletbereiche

logopanel

private LogoPanel logopanel
Anzeige der Copyright-Informationen

simulationszustandspanel

private SimulationsZustandsPanel simulationszustandspanel
Anzeige des Simulationsstatusses: läeuft, stop, pause, ...

simulation

private Simulation simulation
Simulations-Objekt des Automaten

defaultPanelColor

private final java.awt.Color defaultPanelColor
Vorgegebene Standardfarbe für Hintergründe der Bereiche
Constructor Detail

AutomatenSimulator

public AutomatenSimulator()
Method Detail

init

public void init()
richtet die Fenster-Bereiche ein und erzeugt ein neues Simulationsobjekt Optional wird aus den Applet-Parametern ein Automat konstruiert.
Overrides:
init in class java.applet.Applet

start

public void start()
Overrides:
start in class java.applet.Applet

setEditable

public void setEditable(boolean state)
sperrt/aktiviert die Eingabebereiche gegen Eingabe
Parameters:
state - true:Eingabe möglich/true:Eingabe nicht möglich

simulationStart

public void simulationStart()
startet die Simulation implementiert die Funktion aus dem Interface KontrollAenderung
Specified by:
simulationStart in interface KontrollAenderung
See Also:
KontrollAenderung

simulationStop

public void simulationStop()
stoppt die Simulation implementiert die Funktion aus dem Interface KontrollAenderung
Specified by:
simulationStop in interface KontrollAenderung
See Also:
KontrollAenderung

simulationPause

public void simulationPause()
pausiert die Simulation implementiert die Funktion aus dem Interface KontrollAenderung
Specified by:
simulationPause in interface KontrollAenderung
See Also:
KontrollAenderung

simulationStep

public void simulationStep()
führt einen Einzelschritt der Simulation durch implementiert die Funktion aus dem Interface KontrollAenderung
Specified by:
simulationStep in interface KontrollAenderung
See Also:
KontrollAenderung

simulationReboot

public void simulationReboot()
Zurücksetzen der Simulation implementiert die Funktion aus dem Interface KontrollAenderung
Specified by:
simulationReboot in interface KontrollAenderung
See Also:
KontrollAenderung

simulationErzeugen

public void simulationErzeugen()
Erzeugt eine neue Simulation aus den Eingabedaten, sowie einen Graphen
Specified by:
simulationErzeugen in interface KontrollAenderung

readAppletParameters

private void readAppletParameters()
verarbeitet Applet-Parameter aus HTML-Datei und konstruiert daraus einen Automaten

prepareSimulation

private boolean prepareSimulation()
bereitet alles für den Start der Simulation vor
Returns:
war dieser Vorgang erfolgreich

simulationsZustandsAenderung

public void simulationsZustandsAenderung(SimulationsZustand zustand)
wird aufgerufen, wenn sich der Zustand der Simulation geändert hat implementiert die Funktion aus dem Interface KonfigurationsAenderung
Specified by:
simulationsZustandsAenderung in interface KonfigurationsAenderung
Parameters:
zustand - neuer Zustand der Simulation
See Also:
KonfigurationsAenderung

konfigurationsAenderung

public void konfigurationsAenderung(Konfiguration konfiguration)
wird aufgerufen, wenn eine Konfigurationsänderung im Automaten auftritt implementiert die Funktion aus dem Interface KonfigurationsAenderung
Specified by:
konfigurationsAenderung in interface KonfigurationsAenderung
Parameters:
konfiguration - neue Konfiguration der Automaten
See Also:
KonfigurationsAenderung

simulationVerzoegerung

public void simulationVerzoegerung(int verzoegerung)
setzt die Geschwindigkeit der Simulation
Specified by:
simulationVerzoegerung in interface KontrollAenderung
Parameters:
verzoegerung - Verzögerung bei jedem Simulationsschritt in ms

generiereAutomat

private Automat generiereAutomat()
                          throws StartEndePanel.XUngueltigerZustand,
                                 TabellenPanel.XUngueltigeEingabe
erstellt einen Automaten aus Automatenparametern
Returns:
neuer Automat

generiereSimulation

private Simulation generiereSimulation()
                                throws StartEndePanel.XUngueltigerZustand,
                                       TabellenPanel.XUngueltigeEingabe
erstellt eine neue Simulation und richtet den Graphen ein
Returns:
neue Simulation

getAutomatenParameter

private AutomatenParameter getAutomatenParameter()
                                          throws StartEndePanel.XUngueltigerZustand,
                                                 TabellenPanel.XUngueltigeEingabe
erstellt Automaten-Parameter aus den Eingaben im Applet
Returns:
Automatenparameter