Class SimulationView3D
- All Implemented Interfaces:
edu.cnu.mdi.feedback.IFeedbackProvider,edu.cnu.mdi.sim.ISimulationHost,edu.cnu.mdi.sim.SimulationListener,edu.cnu.mdi.transfer.IFileDropHandler,ActionListener,ComponentListener,FocusListener,MouseListener,ImageObserver,MenuContainer,Serializable,EventListener,Accessible,RootPaneContainer,WindowConstants
- Direct Known Subclasses:
AizawaDemoView,KineticsDemoView,LogoDemoView
SimulationEngine.
This is the 3D analogue of edu.cnu.mdi.sim.ui.SimulationView:
the simulation engine remains UI-agnostic, while this view provides the
"MDI bridge" for Swing/MDI and triggers repaint/refresh of the 3D panel
on engine refresh events.
Layout
PlainView3D installs the 3D panel in BorderLayout.CENTER.
This class optionally adds:
- A control panel in
BorderLayout.SOUTH - An optional diagnostics/settings component on the right by wrapping the current
CENTER component in a
JSplitPane
Construction
This class now supports both the legacy Object... keyVals pattern and
the cleaner Properties-based pattern. Legacy constructors are retained
as compatibility shims.
Threading
All SimulationListener callbacks arrive on the Swing EDT (as
guaranteed by SimulationEngine). Therefore onRefresh(SimulationContext)
can safely call PlainView3D.refresh().
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceFactory for creating a simulation control panel component.static interfaceFactory for creating an optional diagnostics/settings component (e.g.Nested classes/interfaces inherited from class javax.swing.JInternalFrame
JInternalFrame.AccessibleJInternalFrame, JInternalFrame.JDesktopIconNested 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
FieldsModifier and TypeFieldDescriptionprotected final JComponentOptional control panel component (may be null).protected final JComponentOptional diagnostics/settings component (may be null).protected final JSplitPaneIf diagnostics is installed, this is the split pane (else null).protected edu.cnu.mdi.sim.SimulationEngineHosted engine (never null).Fields inherited from class edu.cnu.mdi.mdi3D.view3D.PlainView3D
_panel3DFields inherited from class edu.cnu.mdi.view.BaseView
container, desktop, infoDialog, properties, scrollPane, statusWP, viewPopupMenu, VIEWPROPNAME, virtualItemFields inherited from class javax.swing.JInternalFrame
closable, CONTENT_PANE_PROPERTY, desktopIcon, FRAME_ICON_PROPERTY, frameIcon, GLASS_PANE_PROPERTY, iconable, IS_CLOSED_PROPERTY, IS_ICON_PROPERTY, IS_MAXIMUM_PROPERTY, IS_SELECTED_PROPERTY, isClosed, isIcon, isMaximum, isSelected, LAYERED_PANE_PROPERTY, maximizable, MENU_BAR_PROPERTY, resizable, ROOT_PANE_PROPERTY, rootPane, rootPaneCheckingEnabled, title, TITLE_PROPERTYFields 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, WIDTHFields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE -
Constructor Summary
ConstructorsConstructorDescriptionSimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, SimulationView3D.ControlPanelFactory controlPanelFactory, boolean includeDiagnostics, SimulationView3D.DiagnosticFactory diagnosticFactory, double initialSplitFraction, Object... keyVals) Construct a simulation 3D view with optional control panel and optional diagnostics panel.SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, SimulationView3D.ControlPanelFactory controlPanelFactory, boolean includeDiagnostics, SimulationView3D.DiagnosticFactory diagnosticFactory, double initialSplitFraction, Properties props) Construct a simulation 3D view with optional control panel and optional diagnostics panel.SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, SimulationView3D.ControlPanelFactory factory, Object... keyVals) Construct a simulation 3D view with a caller-provided control panel factory.SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, SimulationView3D.ControlPanelFactory factory, Properties props) Construct a simulation 3D view with a caller-provided control panel factory.SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, Object... keyVals) Construct a simulation 3D view with optional inclusion of the default control panel.SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, Properties props) Construct a simulation 3D view with optional inclusion of the default control panel.SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, Object... keyVals) Construct a simulation 3D view using default engine configuration and including the default control panel.SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, Properties props) Construct a simulation 3D view using default engine configuration and including the default control panel. -
Method Summary
Modifier and TypeMethodDescriptionprotected JComponentGet the diagnostics/settings component if installed.final edu.cnu.mdi.sim.SimulationEnginevoidonCancelRequested(edu.cnu.mdi.sim.SimulationContext ctx) voidonDone(edu.cnu.mdi.sim.SimulationContext ctx) voidvoidonInit(edu.cnu.mdi.sim.SimulationContext ctx) voidvoidonPause(edu.cnu.mdi.sim.SimulationContext ctx) voidonProgress(edu.cnu.mdi.sim.SimulationContext ctx, edu.cnu.mdi.sim.ProgressInfo progress) voidonReady(edu.cnu.mdi.sim.SimulationContext ctx) voidonRefresh(edu.cnu.mdi.sim.SimulationContext ctx) voidonResume(edu.cnu.mdi.sim.SimulationContext ctx) voidonRun(edu.cnu.mdi.sim.SimulationContext ctx) protected voidonSimulationCancelRequested(edu.cnu.mdi.sim.SimulationContext ctx) Called when cancellation of the running simulation has been requested.protected voidonSimulationDone(edu.cnu.mdi.sim.SimulationContext ctx) Called when the simulation completes normally.protected voidonSimulationFail(edu.cnu.mdi.sim.SimulationContext ctx, Throwable error) Called when the simulation terminates with an error.protected voidonSimulationInit(edu.cnu.mdi.sim.SimulationContext ctx) Called once the engine has initialized the simulation.protected voidonSimulationMessage(edu.cnu.mdi.sim.SimulationContext ctx, String message) Called when the simulation posts an informational message.protected voidonSimulationPause(edu.cnu.mdi.sim.SimulationContext ctx) Called when the simulation is paused.protected voidonSimulationProgress(edu.cnu.mdi.sim.SimulationContext ctx, edu.cnu.mdi.sim.ProgressInfo progress) Called when the simulation reports progress.protected voidonSimulationReady(edu.cnu.mdi.sim.SimulationContext ctx) Called when the simulation becomes ready to run.protected voidonSimulationRefresh(edu.cnu.mdi.sim.SimulationContext ctx) Called on every engine refresh request, immediately before this class repaints or refreshes the 3D panel in response.protected voidonSimulationResume(edu.cnu.mdi.sim.SimulationContext ctx) Called when the simulation resumes after being paused.protected voidonSimulationRun(edu.cnu.mdi.sim.SimulationContext ctx) Called when the simulation starts or restarts running.protected voidonSimulationStateChange(edu.cnu.mdi.sim.SimulationContext ctx, edu.cnu.mdi.sim.SimulationState from, edu.cnu.mdi.sim.SimulationState to, String reason) Called whenever the simulation transitions between states, after any pending engine reset triggered byrequestEngineReset(java.util.function.Supplier<edu.cnu.mdi.sim.Simulation>, java.util.function.Consumer<edu.cnu.mdi.sim.SimulationEngine>, boolean, boolean)has been applied.voidonStateChange(edu.cnu.mdi.sim.SimulationContext ctx, edu.cnu.mdi.sim.SimulationState from, edu.cnu.mdi.sim.SimulationState to, String reason) protected final voidreplaceEngine(edu.cnu.mdi.sim.SimulationEngine newEngine) Swap in a newSimulationEngine, unregistering this view as a listener on the old engine and registering it on the new one, and rebinding the control panel if it implementsISimulationControlPanel.protected final voidrequestEngineReset(Supplier<edu.cnu.mdi.sim.Simulation> simSupplier, Consumer<edu.cnu.mdi.sim.SimulationEngine> afterSwap, boolean autoStart, boolean refresh) Request an engine reset by supplying a factory for the new simulation.final voidConvenience method to start and run the simulation in one call.Methods inherited from class edu.cnu.mdi.mdi3D.view3D.PlainView3D
actionPerformed, addMenus, componentMoved, componentResized, componentShown, focusGained, getImageComponent, make3DPanel, refresh, request3DRefresh, resolveContainerMethods inherited from class edu.cnu.mdi.view.BaseView
addWestPanel, applyFocusFix, center, checkBooleanProperty, componentHidden, enableFileDrop, enableFileDrop, filesDropped, focusLost, getAnnotationLayer, getCenterComponent, getConfigurationProperties, getConnectionLayer, getDefaultLayer, getFeedbackStrings, getFileFilter, getIContainer, getInfoButton, getInsets, getIntProperty, getName, getParentFrame, getProperties, getPropertyName, getScrollPane, getSpecialClip, getToolBar, getViewInfo, getViewPopupMenu, getVirtualItem, handleMagnify, hoverClosed, hoverUpdate, initFeedback, initFeedback, isOnTop, isScrollable, isViewVisible, mouseClicked, mouseEntered, mouseExited, mousePressed, mouseReleased, offset, onFirstRealize, prepareForExit, rightClicked, setAfterDraw, setBeforeDraw, setBooleanProperty, setFileFilter, setFromProperties, setIntProperty, setVirtualItem, viewInfoMethods inherited from class javax.swing.JInternalFrame
addImpl, addInternalFrameListener, createRootPane, dispose, doDefaultCloseAction, fireInternalFrameEvent, getAccessibleContext, getContentPane, getDefaultCloseOperation, getDesktopIcon, getDesktopPane, getFocusCycleRootAncestor, getFocusOwner, getFrameIcon, getGlassPane, getInternalFrameListeners, getJMenuBar, getLastCursor, getLayer, getLayeredPane, getMenuBar, getMostRecentFocusOwner, getNormalBounds, getRootPane, getTitle, getUI, getUIClassID, getWarningString, hide, isClosable, isClosed, isFocusCycleRoot, isIcon, isIconifiable, isMaximizable, isMaximum, isResizable, isRootPaneCheckingEnabled, isSelected, moveToBack, moveToFront, pack, paintComponent, paramString, remove, removeInternalFrameListener, reshape, restoreSubcomponentFocus, setClosable, setClosed, setContentPane, setCursor, setDefaultCloseOperation, setDesktopIcon, setFocusCycleRoot, setFrameIcon, setGlassPane, setIcon, setIconifiable, setJMenuBar, setLayer, setLayer, setLayeredPane, setLayout, setMaximizable, setMaximum, setMenuBar, setNormalBounds, setResizable, setRootPane, setRootPaneCheckingEnabled, setSelected, setTitle, setUI, show, toBack, toFront, 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, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, 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, 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, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, 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, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, 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, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, 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.ISimulationHost
cancelSimulation, getSimulationContext, getSimulationState, pauseSimulation, resumeSimulation, runSimulation, startSimulation, stopSimulationMethods inherited from interface edu.cnu.mdi.sim.SimulationListener
onCompleted
-
Field Details
-
engine
protected volatile edu.cnu.mdi.sim.SimulationEngine engineHosted engine (never null). -
controlPanel
Optional control panel component (may be null). -
diagnostics
Optional diagnostics/settings component (may be null). -
diagnosticsSplitPane
If diagnostics is installed, this is the split pane (else null).
-
-
Constructor Details
-
SimulationView3D
Construct a simulation 3D view using default engine configuration and including the default control panel.- Parameters:
simulation- the simulation to run (non-null)keyVals- standardBaseViewkey-value arguments
-
SimulationView3D
Construct a simulation 3D view using default engine configuration and including the default control panel.- Parameters:
simulation- the simulation to run (non-null)props- view properties
-
SimulationView3D
public SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, Object... keyVals) Construct a simulation 3D view with optional inclusion of the default control panel.- Parameters:
simulation- the simulation to run (non-null)config- engine configuration (non-null)includeControlPanel- if true, creates and adds the default control panel at SOUTHkeyVals- standardBaseViewkey-value arguments
-
SimulationView3D
public SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, Properties props) Construct a simulation 3D view with optional inclusion of the default control panel.- Parameters:
simulation- the simulation to run (non-null)config- engine configuration (non-null)includeControlPanel- if true, creates and adds the default control panel at SOUTHprops- view properties
-
SimulationView3D
public SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, SimulationView3D.ControlPanelFactory factory, Object... keyVals) Construct a simulation 3D view with a caller-provided control panel factory.- Parameters:
simulation- the simulation to run (non-null)config- engine configuration (non-null)includeControlPanel- if true, creates and adds a control panel at SOUTHfactory- factory used to create the control panel componentkeyVals- standardBaseViewkey-value arguments
-
SimulationView3D
public SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, SimulationView3D.ControlPanelFactory factory, Properties props) Construct a simulation 3D view with a caller-provided control panel factory.- Parameters:
simulation- the simulation to run (non-null)config- engine configuration (non-null)includeControlPanel- if true, creates and adds a control panel at SOUTHfactory- factory used to create the control panel componentprops- view properties
-
SimulationView3D
public SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, SimulationView3D.ControlPanelFactory controlPanelFactory, boolean includeDiagnostics, SimulationView3D.DiagnosticFactory diagnosticFactory, double initialSplitFraction, Object... keyVals) Construct a simulation 3D view with optional control panel and optional diagnostics panel.- Parameters:
simulation- the simulation to run (non-null)config- engine configuration (non-null)includeControlPanel- if true, creates and adds a control panel at SOUTHcontrolPanelFactory- factory used to create the control panel component (may be null if includeControlPanel is false)includeDiagnostics- if true, installs a right-side diagnostics component via a split panediagnosticFactory- factory used to create the diagnostics component (required if includeDiagnostics is true)initialSplitFraction- fraction of width given to the main (left) component on startup (0..1)keyVals- standardBaseViewkey-value arguments
-
SimulationView3D
public SimulationView3D(edu.cnu.mdi.sim.Simulation simulation, edu.cnu.mdi.sim.SimulationEngineConfig config, boolean includeControlPanel, SimulationView3D.ControlPanelFactory controlPanelFactory, boolean includeDiagnostics, SimulationView3D.DiagnosticFactory diagnosticFactory, double initialSplitFraction, Properties props) Construct a simulation 3D view with optional control panel and optional diagnostics panel.- Parameters:
simulation- the simulation to run (non-null)config- engine configuration (non-null)includeControlPanel- if true, creates and adds a control panel at SOUTHcontrolPanelFactory- factory used to create the control panel component (may be null if includeControlPanel is false)includeDiagnostics- if true, installs a right-side diagnostics component via a split panediagnosticFactory- factory used to create the diagnostics component (required if includeDiagnostics is true)initialSplitFraction- fraction of width given to the main (left) component on startup (0..1)props- view properties
-
-
Method Details
-
getDiagnosticsComponent
Get the diagnostics/settings component if installed.- Returns:
- diagnostics/settings component, or null if not installed
-
getSimulationEngine
public final edu.cnu.mdi.sim.SimulationEngine getSimulationEngine()- Specified by:
getSimulationEnginein interfaceedu.cnu.mdi.sim.ISimulationHost
-
onStateChange
public void onStateChange(edu.cnu.mdi.sim.SimulationContext ctx, edu.cnu.mdi.sim.SimulationState from, edu.cnu.mdi.sim.SimulationState to, String reason) - Specified by:
onStateChangein interfaceedu.cnu.mdi.sim.SimulationListener
-
onInit
public void onInit(edu.cnu.mdi.sim.SimulationContext ctx) - Specified by:
onInitin interfaceedu.cnu.mdi.sim.SimulationListener
-
onReady
public void onReady(edu.cnu.mdi.sim.SimulationContext ctx) - Specified by:
onReadyin interfaceedu.cnu.mdi.sim.SimulationListener
-
onRun
public void onRun(edu.cnu.mdi.sim.SimulationContext ctx) - Specified by:
onRunin interfaceedu.cnu.mdi.sim.SimulationListener
-
onResume
public void onResume(edu.cnu.mdi.sim.SimulationContext ctx) - Specified by:
onResumein interfaceedu.cnu.mdi.sim.SimulationListener
-
onPause
public void onPause(edu.cnu.mdi.sim.SimulationContext ctx) - Specified by:
onPausein interfaceedu.cnu.mdi.sim.SimulationListener
-
onDone
public void onDone(edu.cnu.mdi.sim.SimulationContext ctx) - Specified by:
onDonein interfaceedu.cnu.mdi.sim.SimulationListener
-
onFail
- Specified by:
onFailin interfaceedu.cnu.mdi.sim.SimulationListener
-
onCancelRequested
public void onCancelRequested(edu.cnu.mdi.sim.SimulationContext ctx) - Specified by:
onCancelRequestedin interfaceedu.cnu.mdi.sim.SimulationListener
-
onMessage
- Specified by:
onMessagein interfaceedu.cnu.mdi.sim.SimulationListener
-
onProgress
public void onProgress(edu.cnu.mdi.sim.SimulationContext ctx, edu.cnu.mdi.sim.ProgressInfo progress) - Specified by:
onProgressin interfaceedu.cnu.mdi.sim.SimulationListener
-
onRefresh
public void onRefresh(edu.cnu.mdi.sim.SimulationContext ctx) - Specified by:
onRefreshin interfaceedu.cnu.mdi.sim.SimulationListener
-
onSimulationStateChange
protected void onSimulationStateChange(edu.cnu.mdi.sim.SimulationContext ctx, edu.cnu.mdi.sim.SimulationState from, edu.cnu.mdi.sim.SimulationState to, String reason) Called whenever the simulation transitions between states, after any pending engine reset triggered byrequestEngineReset(java.util.function.Supplier<edu.cnu.mdi.sim.Simulation>, java.util.function.Consumer<edu.cnu.mdi.sim.SimulationEngine>, boolean, boolean)has been applied.- Parameters:
ctx- simulation contextfrom- the state being leftto- the state being enteredreason- human-readable reason for the transition, ornull
-
onSimulationInit
protected void onSimulationInit(edu.cnu.mdi.sim.SimulationContext ctx) Called once the engine has initialized the simulation.- Parameters:
ctx- simulation context
-
onSimulationReady
protected void onSimulationReady(edu.cnu.mdi.sim.SimulationContext ctx) Called when the simulation becomes ready to run.- Parameters:
ctx- simulation context
-
onSimulationRun
protected void onSimulationRun(edu.cnu.mdi.sim.SimulationContext ctx) Called when the simulation starts or restarts running.- Parameters:
ctx- simulation context
-
onSimulationResume
protected void onSimulationResume(edu.cnu.mdi.sim.SimulationContext ctx) Called when the simulation resumes after being paused.- Parameters:
ctx- simulation context
-
onSimulationPause
protected void onSimulationPause(edu.cnu.mdi.sim.SimulationContext ctx) Called when the simulation is paused.- Parameters:
ctx- simulation context
-
onSimulationDone
protected void onSimulationDone(edu.cnu.mdi.sim.SimulationContext ctx) Called when the simulation completes normally.- Parameters:
ctx- simulation context
-
onSimulationFail
Called when the simulation terminates with an error.- Parameters:
ctx- simulation contexterror- the exception that caused the failure
-
onSimulationCancelRequested
protected void onSimulationCancelRequested(edu.cnu.mdi.sim.SimulationContext ctx) Called when cancellation of the running simulation has been requested.- Parameters:
ctx- simulation context
-
onSimulationMessage
Called when the simulation posts an informational message.- Parameters:
ctx- simulation contextmessage- message text from the simulation
-
onSimulationProgress
protected void onSimulationProgress(edu.cnu.mdi.sim.SimulationContext ctx, edu.cnu.mdi.sim.ProgressInfo progress) Called when the simulation reports progress.- Parameters:
ctx- simulation contextprogress- current progress information
-
onSimulationRefresh
protected void onSimulationRefresh(edu.cnu.mdi.sim.SimulationContext ctx) Called on every engine refresh request, immediately before this class repaints or refreshes the 3D panel in response.- Parameters:
ctx- simulation context
-
replaceEngine
protected final void replaceEngine(edu.cnu.mdi.sim.SimulationEngine newEngine) Swap in a newSimulationEngine, unregistering this view as a listener on the old engine and registering it on the new one, and rebinding the control panel if it implementsISimulationControlPanel.Must run on the EDT; if called from another thread, it re-dispatches itself via
SwingUtilities.invokeLater(Runnable).- Parameters:
newEngine- the engine to install; must not benull
-
requestEngineReset
protected final void requestEngineReset(Supplier<edu.cnu.mdi.sim.Simulation> simSupplier, Consumer<edu.cnu.mdi.sim.SimulationEngine> afterSwap, boolean autoStart, boolean refresh) Request an engine reset by supplying a factory for the new simulation. If the current engine is in a safe state, the reset will happen immediately. Otherwise the current engine will be requested to stop, and the reset will happen as soon as the engine reaches a safe state (TERMINATED or FAILED).- Parameters:
simSupplier- supplier for the new simulation instance (required)afterSwap- optional callback that receives the new engine after it has been swapped inautoStart- if true, automatically start the new engine after swappingrefresh- if true, request a refresh on the new engine after swapping
-
startAndRun
public final void startAndRun()Convenience method to start and run the simulation in one call. This is safe to call from any thread.
-