Package com.inductiveautomation.rm.tool
Class RMTrackballControl
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
com.inductiveautomation.rm.viewer.RMViewer
com.inductiveautomation.rm.tool.RMTrackballControl
- All Implemented Interfaces:
- ImageObserver,- MenuContainer,- PropertyChangeListener,- Serializable,- EventListener,- Scrollable
This class implements the trackball widget.  It is an optional replacement for the Scene3DControl.
 
Trackball inherits the RMScene3D's behavior, which is that mouse motion in the x direction changes the pitch, and mouse motion in the y direction changes the yaw. The controll adds rotation about the z axis (roll) by clicking on a ring outside the trackball.
Note that this particular behavior quickly goes wrong, since Rotate(y,x,z) * Rotate(dy,dx,dz) != Rotate (y+dy, x+dx, z+dz)
To make the behavior more reasonable, we could try any of : 1. Make Scene3D keep a matrix,instead of the euler angles and just keep rotating that by dx,dy,dz 2. Get the matrix, rotate by dx,dy,dz, decompose into new euler angles and set those 3. Use quaternions (gasp)
- See Also:
- 
Nested Class SummaryNested classes/interfaces inherited from class com.inductiveautomation.rm.viewer.RMViewerRMViewer.PhantomPane, RMViewer.RMVPrintable, RMViewer.ZoomModeNested classes/interfaces inherited from class javax.swing.JComponentJComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.ContainerContainer.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.ComponentComponent.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
- 
Field SummaryFields inherited from class com.inductiveautomation.rm.viewer.RMViewerContent_Prop, PRINT_MODE_RASTER, PRINT_MODE_VECTOR, ZOOM_CHANGEFields inherited from class javax.swing.JComponentlistenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.ComponentaccessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserverABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidReconfigure scene.booleanTell RM not to erase the background.doubleReturns the angle from the mousePoint to the center of the control, in radians.voidmouseDragged(MouseEvent anEvent) Handle mouse dragged event.voidmousePressed(MouseEvent anEvent) Handle mouse pressed event.voidmouseReleased(MouseEvent anEvent) Handle mouse released event.voidMove the collar knob to the correct location for the given mouse point.voidsetBounds(int x, int y, int width, int height) Overrides to update ZoomFactor if dynamic.voidSync from given scene to this scene control.voidSync to a given scene from this scene control.Methods inherited from class com.inductiveautomation.rm.viewer.RMViewerconvertPointFromShape, convertPointToShape, convertRectFromShape, convertRectToShape, createInputAdapter, createShapePainter, createViewerShape, docShapeRepaint, firstPage, flushShapeRepaints, getBook, getContent, getContentX, getContentY, getCopies, getDocument, getDocumentBounds, getHoverShape, getInputAdapter, getlastZoomFactor, getPageBounds, getPageCount, getPageOrientation, getPaintFrameRate, getPhantomPane, getPreferredScrollableViewportSize, getPreferredSize, getPrefSize, getPrefSize, getPrintingDPI, getPrintingMode, getRepaintBoundsForShape, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedPage, getSelectedPageIndex, getShape, getShapeAtPoint, getShapePainter, getShapeRepaintEnabled, getShown, getSourceURL, getTransformFromShape, getUndoer, getViewerShape, getZoomFactor, getZoomFactor, getZoomFocusRect, getZoomMode, getZoomToActualSizeFactor, isCollate, isEditing, isPreview, isPrintBothSides, isUseAutoLandscape, isZoomToFactor, lastPage, mouseMoved, pageBack, pageForward, paintBackground, paintComponent, performActionURLClick, play, print, print, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, propertyChange, repaint, runZoomPanel, setCollate, setContent, setContent, setCopies, setInputAdapter, setPageOrientation, setPaintFrameRate, setPrintBothSides, setPrintingDPI, setPrintingMode, setSelectedPageIndex, setShapeRepaintEnabled, setShown, setUseAutoLandscape, setZoomFactor, setZoomFactorImpl, setZoomMode, setZoomToFitFactor, stop, undoerHasUndos, undoerSetUndoTitle, viewerHidden, viewerShown, zoomToggleLastMethods inherited from class javax.swing.JComponentaddAncestorListener, 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, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, 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, updateUIMethods inherited from class java.awt.Containeradd, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeMethods inherited from class java.awt.Componentaction, 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, getAccessibleContext, 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, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
- 
Constructor Details- 
RMTrackballControlpublic RMTrackballControl()Creates a new trackball control
 
- 
- 
Method Details- 
setBoundspublic void setBounds(int x, int y, int width, int height) Description copied from class:RMViewerOverrides to update ZoomFactor if dynamic.
- 
configureScenepublic void configureScene()Reconfigure scene.
- 
getDrawsBackgroundpublic boolean getDrawsBackground()Tell RM not to erase the background.- Overrides:
- getDrawsBackgroundin class- RMViewer
 
- 
mousePressedHandle mouse pressed event.- Overrides:
- mousePressedin class- RMViewer
 
- 
mouseDraggedHandle mouse dragged event.- Overrides:
- mouseDraggedin class- RMViewer
 
- 
mouseReleasedHandle mouse released event.- Overrides:
- mouseReleasedin class- RMViewer
 
- 
getMouseAngleReturns the angle from the mousePoint to the center of the control, in radians.
- 
positionKnobMove the collar knob to the correct location for the given mouse point.
- 
syncFromSync from given scene to this scene control.
- 
syncToSync to a given scene from this scene control.
 
-