Package org.opentrafficsim.swing.gui
Class OTSAnimationPanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- org.opentrafficsim.swing.gui.OTSSimulationPanel
-
- org.opentrafficsim.swing.gui.OTSAnimationPanel
-
- All Implemented Interfaces:
ActionListener
,WindowListener
,ImageObserver
,MenuContainer
,Serializable
,EventListener
,Accessible
,EventListenerInterface
public class OTSAnimationPanel extends OTSSimulationPanel implements ActionListener, WindowListener, EventListenerInterface
Animation panel with various controls.Copyright (c) 2013-2022 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.$LastChangedDate: 2018-10-16 12:57:02 +0200 (Tue, 16 Oct 2018) $, @version $Revision: 4703 $, by $Author: wjschakel $, initial version Jun 18, 2015
- Author:
- Alexander Verbraeck, Peter Knoppers
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
OTSAnimationPanel.DemoPanelPosition
Enum for demo panel position.protected class
OTSAnimationPanel.DisposeOnCloseThread
Install the dispose on close when the OTSControlPanel is registered as part of a frame.protected class
OTSAnimationPanel.UpdateTimer
UpdateTimer class to update the coordinate on the screen.-
Nested classes/interfaces inherited from class org.opentrafficsim.swing.gui.OTSSimulationPanel
OTSSimulationPanel.AppearanceControlTabbedContentPane
-
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
-
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
closeHandlerRegistered
Has the window close handler been registered?protected boolean
windowExited
Indicate the window has been closed and the timer thread can stop.-
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_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
-
Constructor Summary
Constructors Constructor Description OTSAnimationPanel(Rectangle2D extent, Dimension size, org.opentrafficsim.core.dsol.OTSAnimator simulator, org.opentrafficsim.core.dsol.OTSModelInterface otsModel, org.opentrafficsim.core.animation.gtu.colorer.GTUColorer gtuColorer, org.opentrafficsim.core.network.OTSNetwork network)
Construct a panel that looks like the DSOLPanel for quick building of OTS applications.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
actionPerformed(ActionEvent actionEvent)
void
addAllToggleGISButtonText(String header, GisRenderable2D gisMap, String toolTipText)
Add buttons for toggling all GIS layers on or off.void
addToggleAnimationButtonIcon(String name, Class<? extends Locatable> locatableClass, String iconPath, String toolTipText, boolean initiallyVisible, boolean idButton)
Add a button for toggling an animatable class on or off.void
addToggleAnimationButtonText(String name, Class<? extends Locatable> locatableClass, String toolTipText, boolean initiallyVisible)
Add a button for toggling an animatable class on or off.void
addToggleGISButtonText(String layerName, String displayName, GisRenderable2D gisMap, String toolTipText)
Add a button to toggle a GIS Layer on or off.void
addToggleText(String text)
Add a text to explain animatable classes.void
createDemoPanel(OTSAnimationPanel.DemoPanelPosition position)
Creates a demo panel within the animation area.AnimationPanel
getAnimationPanel()
Easy access to the AnimationPanel.ColorControlPanel
getColorControlPanel()
Access the ColorControlPanel of this ControlPanel.JPanel
getDemoPanel()
Return a panel for on-screen demo controls.org.opentrafficsim.core.animation.gtu.colorer.GTUColorer
getGTUColorer()
Access the GTUColorer of this animation ControlPanel.void
hideGISLayer(String layerName)
Set a GIS layer to be hidden in the animation to true.void
installWindowCloseHandler()
Install a handler for the window closed event that stops the simulator (if it is running).void
notify(EventInterface event)
void
setAutoPan(String newAutoPanId, OTSSearchPanel.ObjectKind<?> newAutoPanKind, boolean newAutoPanTrack)
Change auto pan target.void
showGISLayer(String layerName)
Set a GIS layer to be shown in the animation to true.void
toggleGISLayer(String layerName)
Toggle a GIS layer to be displayed in the animation to its reverse value.void
updateAnimationClassCheckBox(Class<? extends Locatable> locatableClass)
Update the checkmark related to a programmatically changed animation state.protected void
updateWorldCoordinate()
Display the latest world coordinate based on the mouse position on the screen.void
windowActivated(WindowEvent e)
void
windowClosed(WindowEvent e)
void
windowClosing(WindowEvent e)
void
windowDeactivated(WindowEvent e)
void
windowDeiconified(WindowEvent e)
void
windowIconified(WindowEvent e)
void
windowOpened(WindowEvent e)
-
Methods inherited from class org.opentrafficsim.swing.gui.OTSSimulationPanel
addConsoleTab, addPropertiesTab, disableSimulationControlButtons, enableSimulationControlButtons, getConsole, getOtsControlPanel, getOtsModel, getSimulator, getTabbedPane, toString
-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
Methods 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, update
-
Methods 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, validateTree
-
Methods 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, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Constructor Detail
-
OTSAnimationPanel
public OTSAnimationPanel(Rectangle2D extent, Dimension size, org.opentrafficsim.core.dsol.OTSAnimator simulator, org.opentrafficsim.core.dsol.OTSModelInterface otsModel, org.opentrafficsim.core.animation.gtu.colorer.GTUColorer gtuColorer, org.opentrafficsim.core.network.OTSNetwork network) throws RemoteException, DSOLException
Construct a panel that looks like the DSOLPanel for quick building of OTS applications.- Parameters:
extent
- Rectangle2D; bottom left corner, length and width of the area (world) to animate.size
- Dimension; the size to be used for the animation.simulator
- OTSAnimator; the simulator or animator of the model.otsModel
- OTSModelInterface; the builder and rebuilder of the simulation, based on properties.gtuColorer
- GTUColorer; the colorer to use for the GTUs.network
- OTSNetwork; network- Throws:
RemoteException
- when notification of the animation panel failsDSOLException
- when simulator does not implement AnimatorInterface
-
-
Method Detail
-
setAutoPan
public void setAutoPan(String newAutoPanId, OTSSearchPanel.ObjectKind<?> newAutoPanKind, boolean newAutoPanTrack)
Change auto pan target.- Parameters:
newAutoPanId
- String; id of object to track (ornewAutoPanKind
- String; kind of object to tracknewAutoPanTrack
- boolean; if true; tracking is continuously; if false; tracking is once
-
addToggleAnimationButtonIcon
public final void addToggleAnimationButtonIcon(String name, Class<? extends Locatable> locatableClass, String iconPath, String toolTipText, boolean initiallyVisible, boolean idButton)
Add a button for toggling an animatable class on or off. Button icons for which 'idButton' is true will be placed to the right of the previous button, which should be the corresponding button without the id. An example is an icon for showing/hiding the class 'Lane' followed by the button to show/hide the Lane ids.- Parameters:
name
- String; the name of the buttonlocatableClass
- Class<? extends Locatable>; the class for which the button holds (e.g., GTU.class)iconPath
- String; the path to the 24x24 icon to displaytoolTipText
- String; the tool tip text to show when hovering over the buttoninitiallyVisible
- boolean; whether the class is initially shown or notidButton
- boolean; id button that needs to be placed next to the previous button
-
addToggleAnimationButtonText
public final void addToggleAnimationButtonText(String name, Class<? extends Locatable> locatableClass, String toolTipText, boolean initiallyVisible)
Add a button for toggling an animatable class on or off.- Parameters:
name
- String; the name of the buttonlocatableClass
- Class<? extends Locatable>; the class for which the button holds (e.g., GTU.class)toolTipText
- String; the tool tip text to show when hovering over the buttoninitiallyVisible
- boolean; whether the class is initially shown or not
-
addToggleText
public final void addToggleText(String text)
Add a text to explain animatable classes.- Parameters:
text
- String; the text to show
-
addAllToggleGISButtonText
public final void addAllToggleGISButtonText(String header, GisRenderable2D gisMap, String toolTipText)
Add buttons for toggling all GIS layers on or off.- Parameters:
header
- String; the name of the group of layersgisMap
- GisRenderable2D; the GIS map for which the toggles have to be addedtoolTipText
- String; the tool tip text to show when hovering over the button
-
addToggleGISButtonText
public final void addToggleGISButtonText(String layerName, String displayName, GisRenderable2D gisMap, String toolTipText)
Add a button to toggle a GIS Layer on or off.- Parameters:
layerName
- String; the name of the layerdisplayName
- String; the name to display next to the tick boxgisMap
- GisRenderable2D; the maptoolTipText
- String; the tool tip text
-
showGISLayer
public final void showGISLayer(String layerName)
Set a GIS layer to be shown in the animation to true.- Parameters:
layerName
- String; the name of the GIS-layer that has to be shown.
-
hideGISLayer
public final void hideGISLayer(String layerName)
Set a GIS layer to be hidden in the animation to true.- Parameters:
layerName
- String; the name of the GIS-layer that has to be hidden.
-
toggleGISLayer
public final void toggleGISLayer(String layerName)
Toggle a GIS layer to be displayed in the animation to its reverse value.- Parameters:
layerName
- String; the name of the GIS-layer that has to be turned off or vice versa.
-
actionPerformed
public final void actionPerformed(ActionEvent actionEvent)
- Specified by:
actionPerformed
in interfaceActionListener
-
getAnimationPanel
public final AnimationPanel getAnimationPanel()
Easy access to the AnimationPanel.- Returns:
- AnimationPanel
-
createDemoPanel
public void createDemoPanel(OTSAnimationPanel.DemoPanelPosition position)
Creates a demo panel within the animation area.- Parameters:
position
- String; any string from BorderLayout indicating the position of the demo panel, except CENTER.- Throws:
IllegalStateException
- if the panel was already created
-
getDemoPanel
public JPanel getDemoPanel()
Return a panel for on-screen demo controls. The panel is create on first call.- Returns:
- JPanel; panel
-
updateAnimationClassCheckBox
public final void updateAnimationClassCheckBox(Class<? extends Locatable> locatableClass)
Update the checkmark related to a programmatically changed animation state.- Parameters:
locatableClass
- Class<? extends Locatable>; class to show the checkmark for
-
updateWorldCoordinate
protected final void updateWorldCoordinate()
Display the latest world coordinate based on the mouse position on the screen.
-
getGTUColorer
public final org.opentrafficsim.core.animation.gtu.colorer.GTUColorer getGTUColorer()
Access the GTUColorer of this animation ControlPanel.- Returns:
- GTUColorer the colorer used. If it is a SwitchableGTUColorer, the wrapper with the list will be returned, not the actual colorer in use.
-
getColorControlPanel
public final ColorControlPanel getColorControlPanel()
Access the ColorControlPanel of this ControlPanel. If the simulator is not a SimpleAnimator, no ColorControlPanel was constructed and this method will return null.- Returns:
- ColorControlPanel
-
installWindowCloseHandler
public final void installWindowCloseHandler()
Install a handler for the window closed event that stops the simulator (if it is running).
-
windowOpened
public void windowOpened(WindowEvent e)
- Specified by:
windowOpened
in interfaceWindowListener
-
windowClosing
public final void windowClosing(WindowEvent e)
- Specified by:
windowClosing
in interfaceWindowListener
-
windowClosed
public final void windowClosed(WindowEvent e)
- Specified by:
windowClosed
in interfaceWindowListener
-
windowIconified
public final void windowIconified(WindowEvent e)
- Specified by:
windowIconified
in interfaceWindowListener
-
windowDeiconified
public final void windowDeiconified(WindowEvent e)
- Specified by:
windowDeiconified
in interfaceWindowListener
-
windowActivated
public final void windowActivated(WindowEvent e)
- Specified by:
windowActivated
in interfaceWindowListener
-
windowDeactivated
public final void windowDeactivated(WindowEvent e)
- Specified by:
windowDeactivated
in interfaceWindowListener
-
notify
public void notify(EventInterface event) throws RemoteException
- Specified by:
notify
in interfaceEventListenerInterface
- Throws:
RemoteException
-
-