Class JPanelMouse
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- gov.nih.mipav.view.renderer.JPanelRendererBase
-
- gov.nih.mipav.view.renderer.J3D.JPanelRendererJ3D
-
- gov.nih.mipav.view.renderer.J3D.surfaceview.JPanelMouse
-
- All Implemented Interfaces:
com.sun.j3d.utils.behaviors.mouse.MouseBehaviorCallback
,java.awt.event.ActionListener
,java.awt.event.FocusListener
,java.awt.event.ItemListener
,java.awt.event.KeyListener
,java.awt.event.MouseListener
,java.awt.event.MouseMotionListener
,java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,java.util.EventListener
,javax.accessibility.Accessible
,javax.swing.event.ChangeListener
public class JPanelMouse extends JPanelRendererJ3D implements java.awt.event.MouseListener, java.awt.event.MouseMotionListener, javax.swing.event.ChangeListener, com.sun.j3d.utils.behaviors.mouse.MouseBehaviorCallback
Mouse recorded dialog. Has the ability to load and save "mouse action files", which contain the information necessary to reconstruct a series of mouse actions that took place on the canvas of the Triplanar/Surface render viewer. The user can also record mouse actions, pause, stop, and play back. Play back can be done one step at a time, for the whole list, or continuously until the stop button is hit. The mouse events show up in a list. The user can also add or remove different views to this list, by pressing the "Add current" button when at a view he/she wants to save. When the "Save file" menu option is chosen, everything in the list is saved, including the different views.- Author:
- Ruida Cheng
- See Also:
ViewJFrameSurfaceRenderer
,ViewJFrameSurfacePlotter
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
JPanelMouse.ChangeNameDialog
Change the name of the selected item in the item list.(package private) class
JPanelMouse.DrawingPanel
Wrapper in order to hold the control panel layout in the JScrollPane.(package private) class
JPanelMouse.PlayMouse
* Thread that plays.(package private) class
JPanelMouse.RecordMouse
Thread that records screen capture.-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
changedMode
flag to indicate current mode being changed.private javax.swing.JToggleButton
contButton
Continue play button.private MouseEventVector
currentEventVector
Current event vector used by the save AVI.private java.lang.Object
currentObject
current SceneState object being recorded by SaveAVI.private javax.media.j3d.Transform3D
currentTransform
Current transform3D object used in Save AVI.java.util.Vector
events
Vector that holds mouse or change events.private MouseEventVector
eventVector
Global mouse event vector.boolean
first
Flag to indicate first event.private javax.swing.JButton
goButton
Go to button.private boolean
isArbitraryRotation
Flag indicates that arbitrary clipping plane is triggered or not.private boolean
isPlaying
Flag to indicating play mouse is running or not.javax.swing.DefaultListModel
listModel
List to record info for each mouse, change events.private javax.swing.JPanel
mainPanel
The main control panel.private float
mjpegQuality
Param to save AVI.int
mode
Current mode, init to stop.int
mouseCount
Mouse event counter.private javax.swing.JButton
movieButton
Save AVI button .private SurfaceRender
myParent
Reference to ViewJFrameSurfaceRenderer.private MouseEventVector
nameChangeVector
Used by name change dialog to change name of the selected item.private javax.swing.JButton
newButton
This button add at head of the list.private RenderViewBase
parentScene
Parent scene.static int
PAUSE_MODE
Recorder/Player is paused.private javax.swing.JToggleButton
pauseButton
Pause button.static int
PLAY_MODE
Recorder/Player is playing.private javax.swing.JToggleButton
playButton
Display button.private JPanelMouse.PlayMouse
playMouse
Reference to PlayMouse class object.private int
process
Process id used by the save AVI.static int
RECORD_MODE
Recorder/Player is recording.private javax.swing.JToggleButton
recordButton
Recorder button.private JPanelMouse.RecordMouse
recorderToAVI
Reference to RecordMouse object class.private javax.swing.JButton
removeAllButton
Remove all items in the item list.private javax.swing.JButton
removeButton
Remove the selected item in the item list.private javax.media.j3d.Transform3D
resetTransform
Current transform3D object.private javax.swing.JScrollPane
scroller
The scroll pane holding the panel content.private JPanelMouse.DrawingPanel
scrollPanel
Scroll panel that holding the all the control components.private static long
serialVersionUID
Use serialVersionUID for interoperability.private boolean
setMouseVectorFlag
flag to indicate the first time mouse tranform event happpened.private JPanelSlices
sliceDialog
Dialog to turn the slices control box on and off.int
sliderCount
Slider moves event counter.private javax.swing.JToggleButton
stepButton
Next step button.static int
STOP_MODE
Recorder/Player is stopped.private javax.swing.JToggleButton
stopButton
Stop button.private javax.swing.JToolBar
toolBar
Tool bar of the mouse recorder.private boolean
transformChange
Flag indicates that a transform changed event is invoked.private javax.swing.JList
viewList
View list of the mouse recorder display list.-
Fields inherited from class gov.nih.mipav.view.renderer.J3D.JPanelRendererJ3D
rayBasedRender, renderBase
-
Fields inherited from class gov.nih.mipav.view.renderer.JPanelRendererBase
applyButton, cancelButton, cancelFlag, closeButton, helpButton, isActiveImage, NEW, OKButton, REPLACE, runInSeparateThread, serif12, serif12B
-
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
-
-
Constructor Summary
Constructors Constructor Description JPanelMouse(RenderViewBase parent)
Constructs a new mouse recorder dialog.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
actionPerformed(java.awt.event.ActionEvent event)
Performs various actions depending on which event triggered this method.private javax.swing.JToolBar
buildToolBar()
Builds the toolbar for the mouse recorder.void
dispose()
Dispose memory.javax.swing.JPanel
getMainPanel()
Get the main control panel interface.void
init()
Initializes GUI components.boolean
isPaused()
Returns whether the mouse recorder is paused.boolean
isPlaying()
Returns whether the mouse recorder is playing saved events.boolean
isRecording()
Returns whether the mouse recorder is recording.boolean
isStopped()
Returns whether the mouse recorder is stopped.private void
load()
Loads the mouse actions as an object file.void
mouseClicked(java.awt.event.MouseEvent event)
Unchanged.void
mouseDragged(java.awt.event.MouseEvent event)
If recording, adds this mouse event to the mouseEvents vector found at locationcurrent
.void
mouseEntered(java.awt.event.MouseEvent event)
Unchanged.void
mouseExited(java.awt.event.MouseEvent event)
Unchanged.void
mouseMoved(java.awt.event.MouseEvent event)
Unchanged.void
mousePressed(java.awt.event.MouseEvent event)
If mode is RECORD_MODE, saves the current view and creates a new MouseEventVector.void
mouseReleased(java.awt.event.MouseEvent event)
If recording, adds this mouse event to the mouseEvents vector found at locationcurrent
.private void
play(boolean selectedToEnd, boolean forever)
If there is no other thread running, starts a new thread to play the mouse events.void
removeAllItems()
Removes all the items on the recording list.void
resizePanel(int panelWidth, int frameHeight)
Resizig the control panel with ViewJFrameVolumeView's frame width and height.private void
save()
Saves the mouse actions as an object file.private void
saveAVI()
Saves the mouse actions as an AVI file.void
setup()
Sets up variables for recorder.void
setVisible(boolean status)
Makes the dialog visible next to the parent frame.void
stateChanged(javax.swing.event.ChangeEvent e)
Sets how the image plane should be displayed depending on value of slider.void
transformChanged(int type, javax.media.j3d.Transform3D transform)
Accessor that lets the dialog know that the canvas transform has changed.-
Methods inherited from class gov.nih.mipav.view.renderer.J3D.JPanelRendererJ3D
disposeLocal, getSurfaceRender, setRayBasedRender, setSurfaceRender
-
Methods inherited from class gov.nih.mipav.view.renderer.JPanelRendererBase
buildApplyButton, buildCancelButton, buildCloseButton, buildHelpButton, buildOKButton, buildTitledBorder, finalize, focusGained, focusLost, isCancelled, itemStateChanged, keyPressed, keyReleased, keyTyped, makeString, setLeftHandSystem, setVisibleStandard, setWCSystem, testParameter
-
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, 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, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
Use serialVersionUID for interoperability.- See Also:
- Constant Field Values
-
STOP_MODE
public static final int STOP_MODE
Recorder/Player is stopped.- See Also:
- Constant Field Values
-
RECORD_MODE
public static final int RECORD_MODE
Recorder/Player is recording.- See Also:
- Constant Field Values
-
PAUSE_MODE
public static final int PAUSE_MODE
Recorder/Player is paused.- See Also:
- Constant Field Values
-
PLAY_MODE
public static final int PLAY_MODE
Recorder/Player is playing.- See Also:
- Constant Field Values
-
events
public java.util.Vector events
Vector that holds mouse or change events.
-
first
public boolean first
Flag to indicate first event.
-
listModel
public javax.swing.DefaultListModel listModel
List to record info for each mouse, change events.
-
mode
public int mode
Current mode, init to stop.
-
mouseCount
public int mouseCount
Mouse event counter.
-
sliderCount
public int sliderCount
Slider moves event counter.
-
changedMode
private boolean changedMode
flag to indicate current mode being changed.
-
contButton
private javax.swing.JToggleButton contButton
Continue play button.
-
currentEventVector
private MouseEventVector currentEventVector
Current event vector used by the save AVI.
-
currentObject
private java.lang.Object currentObject
current SceneState object being recorded by SaveAVI.
-
currentTransform
private javax.media.j3d.Transform3D currentTransform
Current transform3D object used in Save AVI.
-
eventVector
private MouseEventVector eventVector
Global mouse event vector.
-
goButton
private javax.swing.JButton goButton
Go to button.
-
isArbitraryRotation
private boolean isArbitraryRotation
Flag indicates that arbitrary clipping plane is triggered or not.
-
isPlaying
private boolean isPlaying
Flag to indicating play mouse is running or not.
-
mainPanel
private javax.swing.JPanel mainPanel
The main control panel.
-
mjpegQuality
private float mjpegQuality
Param to save AVI.
-
movieButton
private javax.swing.JButton movieButton
Save AVI button .
-
myParent
private SurfaceRender myParent
Reference to ViewJFrameSurfaceRenderer.
-
nameChangeVector
private MouseEventVector nameChangeVector
Used by name change dialog to change name of the selected item.
-
newButton
private javax.swing.JButton newButton
This button add at head of the list.
-
parentScene
private RenderViewBase parentScene
Parent scene.
-
pauseButton
private javax.swing.JToggleButton pauseButton
Pause button.
-
playButton
private javax.swing.JToggleButton playButton
Display button.
-
playMouse
private JPanelMouse.PlayMouse playMouse
Reference to PlayMouse class object.
-
process
private int process
Process id used by the save AVI.
-
recordButton
private javax.swing.JToggleButton recordButton
Recorder button.
-
recorderToAVI
private JPanelMouse.RecordMouse recorderToAVI
Reference to RecordMouse object class.
-
removeAllButton
private javax.swing.JButton removeAllButton
Remove all items in the item list.
-
removeButton
private javax.swing.JButton removeButton
Remove the selected item in the item list.
-
resetTransform
private javax.media.j3d.Transform3D resetTransform
Current transform3D object.
-
scroller
private javax.swing.JScrollPane scroller
The scroll pane holding the panel content. Useful when the screen is small.
-
scrollPanel
private JPanelMouse.DrawingPanel scrollPanel
Scroll panel that holding the all the control components.
-
setMouseVectorFlag
private boolean setMouseVectorFlag
flag to indicate the first time mouse tranform event happpened.
-
sliceDialog
private JPanelSlices sliceDialog
Dialog to turn the slices control box on and off.
-
stepButton
private javax.swing.JToggleButton stepButton
Next step button.
-
stopButton
private javax.swing.JToggleButton stopButton
Stop button.
-
toolBar
private javax.swing.JToolBar toolBar
Tool bar of the mouse recorder.
-
transformChange
private boolean transformChange
Flag indicates that a transform changed event is invoked.
-
viewList
private javax.swing.JList viewList
View list of the mouse recorder display list.
-
-
Constructor Detail
-
JPanelMouse
public JPanelMouse(RenderViewBase parent)
Constructs a new mouse recorder dialog. Makes the GUI components and ties them to the parent scene.- Parameters:
parent
- Parent scene to tie actions to.
-
-
Method Detail
-
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent event)
Performs various actions depending on which event triggered this method.Playback toolbar buttons:
- Record button - changes the mode to RECORD_MODE.
- Play button - changes the mode to PLAY_MODE and calls play(boolean, boolean), which plays all the mouse events started at the selected one in a separate thread.
- Play once button - changes the mode to PLAY_MODE and calls play(boolean, boolean), which plays one mouse event (the selected mouse event) in a separate thread.
- Play continuously button - changes the mode to PLAY_MODE and calls play(boolean, boolean), which plays all the mouse events started at the selected one in a separate thread, until the stop button or pause button is pressed.
- Pause button - changes the mode to PAUSE_MODE and causes the thread running in play(boolean, boolean) to sleep.
- Stop button - changes the mode to STOP_MODE and causes play(boolean, boolean) to return.
List buttons:
- Add current - brings up a dialog asking the user for a name for the view, then adds it to the list and the vector.
- Go - goes to the view associated with the name selected in the list.
- Remove - removes the view associated with the name selected in the list. Disables playback if there are no views left in the list.
Menu events:
- Load mouse file - loads in an object file previously saved with the "Save mouse file" command. Displays the views in the list.
- Save mouse file - uses the serialized writeObject method to save the vector of views/mouse events to a file.
- Exit - disposes of this dialog.
- Specified by:
actionPerformed
in interfacejava.awt.event.ActionListener
- Specified by:
actionPerformed
in classJPanelRendererBase
- Parameters:
event
- Event that triggered this method.
-
dispose
public void dispose()
Dispose memory.
-
getMainPanel
public javax.swing.JPanel getMainPanel()
Get the main control panel interface.- Specified by:
getMainPanel
in classJPanelRendererBase
- Returns:
- mainPanel the main control panel.
-
init
public void init()
Initializes GUI components.
-
isPaused
public boolean isPaused()
Returns whether the mouse recorder is paused.- Returns:
- whether the mouse recorder is paused
-
isPlaying
public boolean isPlaying()
Returns whether the mouse recorder is playing saved events.- Returns:
- whether the panel is playing a set of saved events
-
isRecording
public boolean isRecording()
Returns whether the mouse recorder is recording.- Returns:
- whether the panel is recording
-
isStopped
public boolean isStopped()
Returns whether the mouse recorder is stopped.- Returns:
- whether the mouse recorder is stopped
-
mouseClicked
public void mouseClicked(java.awt.event.MouseEvent event)
Unchanged.- Specified by:
mouseClicked
in interfacejava.awt.event.MouseListener
- Parameters:
event
- Original mouse event.
-
mouseDragged
public void mouseDragged(java.awt.event.MouseEvent event)
If recording, adds this mouse event to the mouseEvents vector found at locationcurrent
.- Specified by:
mouseDragged
in interfacejava.awt.event.MouseMotionListener
- Parameters:
event
- Original mouse event.
-
mouseEntered
public void mouseEntered(java.awt.event.MouseEvent event)
Unchanged.- Specified by:
mouseEntered
in interfacejava.awt.event.MouseListener
- Parameters:
event
- Original mouse event.
-
mouseExited
public void mouseExited(java.awt.event.MouseEvent event)
Unchanged.- Specified by:
mouseExited
in interfacejava.awt.event.MouseListener
- Parameters:
event
- Original mouse event.
-
mouseMoved
public void mouseMoved(java.awt.event.MouseEvent event)
Unchanged.- Specified by:
mouseMoved
in interfacejava.awt.event.MouseMotionListener
- Parameters:
event
- Original mouse event.
-
mousePressed
public void mousePressed(java.awt.event.MouseEvent event)
If mode is RECORD_MODE, saves the current view and creates a new MouseEventVector. That object holds the name, the view, and a vector with the subsequent mouse events. This is so the size of the list that the user sees stays small. If all mouse events were displayed in the list, the list would soon reach into the thousands. This way, the user sees only the "beginning" of the mouse event. When playback happens, all the mouse events stored in the vector within MouseEventVector are played. For more information, see MouseEventVector.- Specified by:
mousePressed
in interfacejava.awt.event.MouseListener
- Parameters:
event
- Original mouse event.
-
mouseReleased
public void mouseReleased(java.awt.event.MouseEvent event)
If recording, adds this mouse event to the mouseEvents vector found at locationcurrent
.- Specified by:
mouseReleased
in interfacejava.awt.event.MouseListener
- Parameters:
event
- Original mouse event.
-
removeAllItems
public void removeAllItems()
Removes all the items on the recording list.
-
resizePanel
public void resizePanel(int panelWidth, int frameHeight)
Resizig the control panel with ViewJFrameVolumeView's frame width and height.- Overrides:
resizePanel
in classJPanelRendererBase
- Parameters:
panelWidth
- int widthframeHeight
- int height
-
setup
public void setup()
Sets up variables for recorder.
-
setVisible
public void setVisible(boolean status)
Makes the dialog visible next to the parent frame. If this makes it go off the screen, puts the dialog in the center of the screen.- Overrides:
setVisible
in classJPanelRendererBase
- Parameters:
status
- Flag indicating if the dialog should be visible.
-
stateChanged
public void stateChanged(javax.swing.event.ChangeEvent e)
Sets how the image plane should be displayed depending on value of slider.- Specified by:
stateChanged
in interfacejavax.swing.event.ChangeListener
- Parameters:
e
- Event that triggered this function.
-
transformChanged
public void transformChanged(int type, javax.media.j3d.Transform3D transform)
Accessor that lets the dialog know that the canvas transform has changed.- Specified by:
transformChanged
in interfacecom.sun.j3d.utils.behaviors.mouse.MouseBehaviorCallback
- Parameters:
type
- mouse behavior call back typetransform
- transformation matrix
-
buildToolBar
private javax.swing.JToolBar buildToolBar()
Builds the toolbar for the mouse recorder.- Returns:
- DOCUMENT ME!
-
load
private void load() throws java.io.IOException
Loads the mouse actions as an object file. Clears out the old list and vector, brings up a dialog for the user to choose a file name and directory, then reads in each MouseEventVector and puts it in the events vector (and puts the name in the list).**************************** Not used, might be needed for future use ********************* ******- Throws:
java.io.IOException
- DOCUMENT ME!
-
play
private void play(boolean selectedToEnd, boolean forever)
If there is no other thread running, starts a new thread to play the mouse events.- Parameters:
selectedToEnd
- Iftrue
, the mouse events are played from the selected one to the end of the list. Iffalse
only the selected one is played.forever
- Iftrue
, the mouse events list is played until the stop button or pause button is pressed.
-
save
private void save() throws java.io.IOException
Saves the mouse actions as an object file. Brings up a dialog for the user to choose a file name and directory, then writes out the events vector using an ObjectOutputStream.*********************** Not used, might be needed for future use ******************************- Throws:
java.io.IOException
- DOCUMENT ME!
-
saveAVI
private void saveAVI() throws java.io.IOException
Saves the mouse actions as an AVI file. Brings up a dialog for the user to choose a file name and directory, then writes out the AVI file.The AVI file will be large, so it is opened and sent the data in pieces. In order to mimic the time delay that can occur between mouse events, blank frames are sent. To make this precise, and also to save space, frames are only written once every 143 milliseconds. This translates into a frame rate of approximately 7 frames per second.
Here is how it works:
- As in play(), we cycle through each mouse event by going through each MouseEventVector and looking at each mouse event stored in the hidden vector within each MouseEventVector.
- There is also a counter that keeps track of how many milliseconds have elapsed by looking at the event.getWhen() variable in a MouseEvent.
- Once every 143 milliseconds, a frame is recorded. If the image that is currently on the canvas has not been recorded, it is captured and processed, and a data frame is sent to FileAvi. If it has already been recorded, a blank frame is sent to FileAvi. So for example, if the user paused for 500 milliseconds between mouse events, one data frame would be sent, followed by two blank frames. Then when someone played back the AVI file, it would look like the user paused for that amount of time.
- The AVI file knows how many frames should be sent and once they've all been sent, it writes out the end signature and closes the file.
User may control size of AVI by changing the frame rate in the dialog or the size of the image stored. The frame rate is defined as something like 7 frames per second, which for our purposes means 7 frames per 1000 milliseconds. Therefore the interval at which frames are saved would be the inverse of the frame rate - in this example, once every (1000/7) milliseconds ~ 143 milliseconds.
- Throws:
java.io.IOException
- DOCUMENT ME!
-
-