Package edu.cnu.mdi.sim.ui
Class SimulationControlPanel
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
edu.cnu.mdi.sim.ui.SimulationControlPanel
- All Implemented Interfaces:
SimulationListener,ISimulationControlPanel,ImageObserver,MenuContainer,Serializable,Accessible
public class SimulationControlPanel
extends JPanel
implements SimulationListener, ISimulationControlPanel
A reusable Swing control panel for driving a simulation hosted by an
ISimulationHost.
This panel is MDI-agnostic and can be embedded anywhere (views, dialogs, side
panels). It binds to a host and listens to the host engine via
SimulationListener events, updating:
- buttons enabled/disabled based on state
- progress bar (indeterminate or determinate)
- status and message labels
Binding
Call bind(ISimulationHost) once after creating the panel.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidbind(ISimulationHost host) Bind this panel to a host.voidCalled when cancellation is requested viaSimulationEngine.requestCancel().voidonDone(SimulationContext ctx) Called when the engine ends normally (reachesSimulationState.TERMINATED).voidonFail(SimulationContext ctx, Throwable error) Called when the engine fails (reachesSimulationState.FAILED).voidonMessage(SimulationContext ctx, String message) Called for status/log messages intended for UI display.voidonPause(SimulationContext ctx) Called when the engine entersSimulationState.PAUSED.voidonProgress(SimulationContext ctx, ProgressInfo progress) Called for progress updates (indeterminate or determinate).voidCalled when the engine resumes fromSimulationState.PAUSEDback toSimulationState.RUNNING.voidonRun(SimulationContext ctx) Called when the engine begins execution (entersSimulationState.RUNNING).voidonStateChange(SimulationContext ctx, SimulationState from, SimulationState to, String reason) Called on every state transition.voidunbind()Unbind the panel from its host (if any).Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateMethods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeMethods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface edu.cnu.mdi.sim.SimulationListener
onCompleted, onInit, onReady, onRefresh
-
Constructor Details
-
SimulationControlPanel
public SimulationControlPanel()Create an unbound control panel. Callbind(ISimulationHost)to attach it.
-
-
Method Details
-
bind
Bind this panel to a host.This method:
- stores the host reference
- registers this panel as a
SimulationListener - updates UI to reflect the host's current state
Note: unlike
TaskControlPanel.bind, this method does not implicitly unbind first. Calling it again with a different host while already bound leaves this panel registered as a stale listener on the previous host's engine; callunbind()first if rebinding.- Specified by:
bindin interfaceISimulationControlPanel- Parameters:
host- the simulation host (non-null)
-
unbind
public void unbind()Unbind the panel from its host (if any).After unbinding, the panel becomes inert until bound again.
- Specified by:
unbindin interfaceISimulationControlPanel
-
onStateChange
public void onStateChange(SimulationContext ctx, SimulationState from, SimulationState to, String reason) Description copied from interface:SimulationListenerCalled on every state transition.- Specified by:
onStateChangein interfaceSimulationListener- Parameters:
ctx- simulation contextfrom- previous stateto- new statereason- human-readable reason (may be null)
-
onRun
Description copied from interface:SimulationListenerCalled when the engine begins execution (entersSimulationState.RUNNING).- Specified by:
onRunin interfaceSimulationListener- Parameters:
ctx- simulation context
-
onResume
Description copied from interface:SimulationListenerCalled when the engine resumes fromSimulationState.PAUSEDback toSimulationState.RUNNING.- Specified by:
onResumein interfaceSimulationListener- Parameters:
ctx- simulation context
-
onPause
Description copied from interface:SimulationListenerCalled when the engine entersSimulationState.PAUSED.- Specified by:
onPausein interfaceSimulationListener- Parameters:
ctx- simulation context
-
onDone
Description copied from interface:SimulationListenerCalled when the engine ends normally (reachesSimulationState.TERMINATED).- Specified by:
onDonein interfaceSimulationListener- Parameters:
ctx- simulation context
-
onFail
Description copied from interface:SimulationListenerCalled when the engine fails (reachesSimulationState.FAILED).- Specified by:
onFailin interfaceSimulationListener- Parameters:
ctx- simulation contexterror- the exception/error that caused failure
-
onCancelRequested
Description copied from interface:SimulationListenerCalled when cancellation is requested viaSimulationEngine.requestCancel().This callback occurs on the EDT; the simulation thread observes cancellation via
SimulationContext.isCancelRequested().- Specified by:
onCancelRequestedin interfaceSimulationListener- Parameters:
ctx- simulation context
-
onMessage
Description copied from interface:SimulationListenerCalled for status/log messages intended for UI display.- Specified by:
onMessagein interfaceSimulationListener- Parameters:
ctx- simulation contextmessage- message text (non-null)
-
onProgress
Description copied from interface:SimulationListenerCalled for progress updates (indeterminate or determinate).- Specified by:
onProgressin interfaceSimulationListener- Parameters:
ctx- simulation contextprogress- progress payload
-