jAER project on SourceForge

net.sf.jaer.graphics
Class AEViewer

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by net.sf.jaer.graphics.AEViewer
All Implemented Interfaces:
java.awt.dnd.DropTargetListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants, ExceptionListener

public class AEViewer
extends javax.swing.JFrame
implements java.beans.PropertyChangeListener, java.awt.dnd.DropTargetListener, ExceptionListener

This is the main jAER interface to the user. The main event loop "ViewLoop" is here; see ViewLoop.run(). AEViewer shows AE chip live view and allows for controlling view and recording and playing back events from files and network connections.

AEViewer supports PropertyChangeListener's and fires PropertyChangeEvents on the following events:

In addition, when A5EViewer is in PLAYBACK PlayMode, users can register as PropertyChangeListeners on the AEFileInputStream for rewind events, etc.

Author:
tobi
See Also:
Serialized Form

Nested Class Summary
 class AEViewer.AEPlayer
          Handles file input of AEs to control the number of events/sample or period of time in the sample, etc.
static class AEViewer.PlayMode
          Modes of viewing: WAITING means waiting for device or for playback or remote, LIVE means showing a hardware interface, PLAYBACK means playing back a recorded file, SEQUENCING means sequencing a file out on a sequencer device, REMOTE means playing a remote stream of AEs
 
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 AEViewer.AEPlayer aePlayer
           
static java.lang.String DEFAULT_CHIP_CLASS
          The default AEChip class.
static java.lang.String HELP_URL_JAVADOC
           
static java.lang.String HELP_URL_JAVADOC_WEB
           
static java.lang.String HELP_URL_RETINA
           
static java.lang.String HELP_URL_USER_GUIDE
           
static java.lang.String HELP_URL_USER_GUIDE_AER_CABLING
           
static java.lang.String HELP_URL_USER_GUIDE_USB2_MINI
           
 java.io.File lastLoggingFolder
           
 long STATUS_DURATION
          length of exception highlighting in status bar in ms
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
AEViewer(JAERViewer jaerViewer)
          construct new instance and then set classname of device to show in it
 
Method Summary
 void doSingleStep()
           
 void dragEnter(java.awt.dnd.DropTargetDragEvent dtde)
           
 void dragExit(java.awt.dnd.DropTargetEvent dte)
           
 void dragOver(java.awt.dnd.DropTargetDragEvent dtde)
           
 void drop(java.awt.dnd.DropTargetDropEvent dtde)
           
 void dropActionChanged(java.awt.dnd.DropTargetDragEvent dtde)
           
 void exceptionOccurred(java.lang.Exception x, java.lang.Object source)
           
 java.lang.Class getAeChipClass()
          Gets the AEchip class from the internal aeChipClassName
 AEPlayerInterface getAePlayer()
           
 AEServerSocket getAeServerSocket()
          AEViewer makes a ServerSocket that accepts incoming connections.
 AESocket getAeSocket()
          If we have opened a socket to a server of events, then this is it
 BiasgenFrame getBiasgenFrame()
          Returns the frame for configurating chip.
 AEChip getChip()
           
 java.io.File getCurrentFile()
          If the AEViewer is playing (or has played) a file, then this method returns it.
 javax.swing.JMenu getFileMenu()
           
 FilterFrame getFilterFrame()
          Returns the frame holding the event filters.
 int getFrameRate()
           
 JAERViewer getJaerViewer()
           
 javax.swing.JToggleButton getLoggingButton()
          this toggle button is used in CaviarViewer to assign an action to start and stop logging for (possibly) all viewers
 javax.swing.JMenuItem getLoggingMenuItem()
          used in CaviarViewer to control sync'ed logging
 AEViewer.PlayMode getPlayMode()
          returns the playing mode
 RecentFiles getRecentFiles()
          gets the RecentFiles handler for use, e.g.
 java.beans.PropertyChangeSupport getSupport()
          AEViewer supports property change events.
 javax.swing.JCheckBoxMenuItem getSyncEnabledCheckBoxMenuItem()
           
 boolean isActiveRenderingEnabled()
           
 boolean isLogFilteredEventsEnabled()
           
 boolean isLoggingPlaybackImmediatelyEnabled()
           
 boolean isOpenGLRenderingEnabled()
           
 boolean isPaused()
           
 boolean isRenderBlankFramesEnabled()
           
 boolean isSingleStep()
           
 void openLoggingFolderWindow()
           
 void propertyChange(java.beans.PropertyChangeEvent evt)
          messages come back here from e.g.
 void reopenSocketInputStream()
           
 void setActiveRenderingEnabled(boolean activeRenderingEnabled)
           
 void setAeChipClass(java.lang.Class deviceClass)
          sets the device class, e.g.
 void setChip(AEChip chip)
           
protected  void setCurrentFile(java.io.File f)
          This method sets the "current file" which sets the field, the preferences of the last file, and the window title.
 void setDoSingleStepEnabled(boolean yes)
           
 void setFrameRate(int renderDesiredFrameRateHz)
           
 void setJaerViewer(JAERViewer jaerViewer)
           
 void setLogFilteredEventsEnabled(boolean logFilteredEventsEnabled)
           
 void setLoggingButton(javax.swing.JToggleButton b)
           
 void setLoggingMenuItem(javax.swing.JMenuItem loggingMenuItem)
           
 void setLoggingPlaybackImmediatelyEnabled(boolean loggingPlaybackImmediatelyEnabled)
           
 void setOpenGLRenderingEnabled(boolean openGLRenderingEnabled)
           
 void setPaused(boolean paused)
          sets paused.
 void setPlayMode(AEViewer.PlayMode playMode)
          Sets mode, LIVE, PLAYBACK, WAITING, etc, sets window title, and fires property change event
 void setPreferredAEChipClass(java.lang.Class clazz)
          Stores the preferred (startup) AEChip class for the viewer.
 void setRenderBlankFramesEnabled(boolean renderBlankFramesEnabled)
           
 void setStatusColor(java.awt.Color c)
          Sets the color of the status field text - e.g.
 void setStatusMessage(java.lang.String s)
          Sets the viewer's status message at the bottom of the window.
 void setSyncEnabledCheckBoxMenuItem(javax.swing.JCheckBoxMenuItem syncEnabledCheckBoxMenuItem)
           
 void setTitleAccordingToState()
          this sets window title according to actual state
 void singleStepDone()
           
 java.io.File startLogging()
           
 java.io.File stopLogging()
          Stops logging and opens file dialog for where to save file.
 void stopMe()
          Fires a property change "stopme", and then stops playback or closes device
 void toggleLogging()
           
 java.lang.String toString()
           
 void zeroTimestamps()
           
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, 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, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

HELP_URL_USER_GUIDE

public static java.lang.String HELP_URL_USER_GUIDE

HELP_URL_RETINA

public static java.lang.String HELP_URL_RETINA

HELP_URL_JAVADOC_WEB

public static java.lang.String HELP_URL_JAVADOC_WEB

HELP_URL_JAVADOC

public static java.lang.String HELP_URL_JAVADOC

HELP_URL_USER_GUIDE_USB2_MINI

public static java.lang.String HELP_URL_USER_GUIDE_USB2_MINI

HELP_URL_USER_GUIDE_AER_CABLING

public static java.lang.String HELP_URL_USER_GUIDE_AER_CABLING

lastLoggingFolder

public java.io.File lastLoggingFolder

DEFAULT_CHIP_CLASS

public static java.lang.String DEFAULT_CHIP_CLASS
The default AEChip class.


aePlayer

public AEViewer.AEPlayer aePlayer

STATUS_DURATION

public final long STATUS_DURATION
length of exception highlighting in status bar in ms

See Also:
Constant Field Values
Constructor Detail

AEViewer

public AEViewer(JAERViewer jaerViewer)
construct new instance and then set classname of device to show in it

Parameters:
jaerViewer - the manager of all viewers
Method Detail

getBiasgenFrame

public BiasgenFrame getBiasgenFrame()
Returns the frame for configurating chip. Could be null until user chooses to build it.

Returns:
the frame.

getFilterFrame

public FilterFrame getFilterFrame()
Returns the frame holding the event filters. Could be null until user builds it.

Returns:
the frame.

reopenSocketInputStream

public void reopenSocketInputStream()
                             throws java.awt.HeadlessException
Throws:
java.awt.HeadlessException

setPreferredAEChipClass

public void setPreferredAEChipClass(java.lang.Class clazz)
Stores the preferred (startup) AEChip class for the viewer.

Parameters:
clazz - the class.

zeroTimestamps

public void zeroTimestamps()

getAeChipClass

public java.lang.Class getAeChipClass()
Gets the AEchip class from the internal aeChipClassName

Returns:
the AEChip subclass. DEFAULT_CHIP_CLASS is returned if there is no stored preference.

setTitleAccordingToState

public void setTitleAccordingToState()
this sets window title according to actual state


setAeChipClass

public void setAeChipClass(java.lang.Class deviceClass)
sets the device class, e.g. Tmpdiff128, from the fully qual classname provided by the menu item itself.

Parameters:
deviceClass - the Class of the AEChip to add to the AEChip menu

setCurrentFile

protected void setCurrentFile(java.io.File f)
This method sets the "current file" which sets the field, the preferences of the last file, and the window title. It does not actually start playing the file.

See Also:
AEViewer.AEPlayer

getCurrentFile

public java.io.File getCurrentFile()
If the AEViewer is playing (or has played) a file, then this method returns it.

Returns:
the File
See Also:
AEViewer.PlayMode

setStatusMessage

public void setStatusMessage(java.lang.String s)
Sets the viewer's status message at the bottom of the window.

Parameters:
s - the string
See Also:
setStatusMessage(String)

setStatusColor

public void setStatusColor(java.awt.Color c)
Sets the color of the status field text - e.g. to highlight it.

Parameters:
c -

exceptionOccurred

public void exceptionOccurred(java.lang.Exception x,
                              java.lang.Object source)
Specified by:
exceptionOccurred in interface ExceptionListener

stopMe

public void stopMe()
Fires a property change "stopme", and then stops playback or closes device


doSingleStep

public void doSingleStep()

setDoSingleStepEnabled

public void setDoSingleStepEnabled(boolean yes)

isSingleStep

public boolean isSingleStep()

singleStepDone

public void singleStepDone()

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent evt)
messages come back here from e.g. programmatic state changes, like a new aePlayer file posiiton. This methods sets the GUI components to a consistent state, using a flag to tell the slider that it has not been set by a user mouse action

Specified by:
propertyChange in interface java.beans.PropertyChangeListener

toggleLogging

public void toggleLogging()

openLoggingFolderWindow

public void openLoggingFolderWindow()

startLogging

public java.io.File startLogging()

stopLogging

public java.io.File stopLogging()
Stops logging and opens file dialog for where to save file.


toString

public java.lang.String toString()
Overrides:
toString in class java.awt.Component

getFrameRate

public int getFrameRate()

setFrameRate

public void setFrameRate(int renderDesiredFrameRateHz)

isPaused

public boolean isPaused()

setPaused

public void setPaused(boolean paused)
sets paused. If viewing is synchronized, then all viwewers will be paused.

Parameters:
paused - true to pause

isActiveRenderingEnabled

public boolean isActiveRenderingEnabled()

setActiveRenderingEnabled

public void setActiveRenderingEnabled(boolean activeRenderingEnabled)

isOpenGLRenderingEnabled

public boolean isOpenGLRenderingEnabled()

setOpenGLRenderingEnabled

public void setOpenGLRenderingEnabled(boolean openGLRenderingEnabled)

dragEnter

public void dragEnter(java.awt.dnd.DropTargetDragEvent dtde)
Specified by:
dragEnter in interface java.awt.dnd.DropTargetListener

dragExit

public void dragExit(java.awt.dnd.DropTargetEvent dte)
Specified by:
dragExit in interface java.awt.dnd.DropTargetListener

dragOver

public void dragOver(java.awt.dnd.DropTargetDragEvent dtde)
Specified by:
dragOver in interface java.awt.dnd.DropTargetListener

drop

public void drop(java.awt.dnd.DropTargetDropEvent dtde)
Specified by:
drop in interface java.awt.dnd.DropTargetListener

dropActionChanged

public void dropActionChanged(java.awt.dnd.DropTargetDragEvent dtde)
Specified by:
dropActionChanged in interface java.awt.dnd.DropTargetListener

isLoggingPlaybackImmediatelyEnabled

public boolean isLoggingPlaybackImmediatelyEnabled()

setLoggingPlaybackImmediatelyEnabled

public void setLoggingPlaybackImmediatelyEnabled(boolean loggingPlaybackImmediatelyEnabled)

getChip

public AEChip getChip()
Returns:
the chip we are displaying

setChip

public void setChip(AEChip chip)

isRenderBlankFramesEnabled

public boolean isRenderBlankFramesEnabled()

setRenderBlankFramesEnabled

public void setRenderBlankFramesEnabled(boolean renderBlankFramesEnabled)

getFileMenu

public javax.swing.JMenu getFileMenu()

getLoggingMenuItem

public javax.swing.JMenuItem getLoggingMenuItem()
used in CaviarViewer to control sync'ed logging


setLoggingMenuItem

public void setLoggingMenuItem(javax.swing.JMenuItem loggingMenuItem)

getLoggingButton

public javax.swing.JToggleButton getLoggingButton()
this toggle button is used in CaviarViewer to assign an action to start and stop logging for (possibly) all viewers


setLoggingButton

public void setLoggingButton(javax.swing.JToggleButton b)

getSyncEnabledCheckBoxMenuItem

public javax.swing.JCheckBoxMenuItem getSyncEnabledCheckBoxMenuItem()

setSyncEnabledCheckBoxMenuItem

public void setSyncEnabledCheckBoxMenuItem(javax.swing.JCheckBoxMenuItem syncEnabledCheckBoxMenuItem)

getAePlayer

public AEPlayerInterface getAePlayer()
Returns:
the local player, unless we are part of a synchronized playback gruop

getPlayMode

public AEViewer.PlayMode getPlayMode()
returns the playing mode

Returns:
the mode

setPlayMode

public void setPlayMode(AEViewer.PlayMode playMode)
Sets mode, LIVE, PLAYBACK, WAITING, etc, sets window title, and fires property change event

Parameters:
playMode - the new play mode

isLogFilteredEventsEnabled

public boolean isLogFilteredEventsEnabled()

setLogFilteredEventsEnabled

public void setLogFilteredEventsEnabled(boolean logFilteredEventsEnabled)

getJaerViewer

public JAERViewer getJaerViewer()

setJaerViewer

public void setJaerViewer(JAERViewer jaerViewer)

getAeServerSocket

public AEServerSocket getAeServerSocket()
AEViewer makes a ServerSocket that accepts incoming connections. A connecting client gets served the events being rendered.

Returns:
the server socket. This holds the client socket.

getAeSocket

public AESocket getAeSocket()
If we have opened a socket to a server of events, then this is it

Returns:
the input socket

getRecentFiles

public RecentFiles getRecentFiles()
gets the RecentFiles handler for use, e.g. in storing sychronized logging index files

Returns:
refernce to RecentFiles object

getSupport

public java.beans.PropertyChangeSupport getSupport()
AEViewer supports property change events. See the class description for supported events

Returns:
the support

jAER project on SourceForge