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 Summary
Nested classes/interfaces inherited from class com.inductiveautomation.rm.viewer.RMViewer
RMViewer.PhantomPane, RMViewer.RMVPrintable, RMViewer.ZoomModeNested 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
Fields inherited from class com.inductiveautomation.rm.viewer.RMViewer
Content_Prop, PRINT_MODE_RASTER, PRINT_MODE_VECTOR, ZOOM_CHANGEFields 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, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier 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.RMViewer
convertPointFromShape, 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.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, 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.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, 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, 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
-
RMTrackballControl
public RMTrackballControl()Creates a new trackball control
-
-
Method Details
-
setBounds
public void setBounds(int x, int y, int width, int height) Description copied from class:RMViewerOverrides to update ZoomFactor if dynamic. -
configureScene
public void configureScene()Reconfigure scene. -
getDrawsBackground
public boolean getDrawsBackground()Tell RM not to erase the background.- Overrides:
getDrawsBackgroundin classRMViewer
-
mousePressed
Handle mouse pressed event.- Overrides:
mousePressedin classRMViewer
-
mouseDragged
Handle mouse dragged event.- Overrides:
mouseDraggedin classRMViewer
-
mouseReleased
Handle mouse released event.- Overrides:
mouseReleasedin classRMViewer
-
getMouseAngle
Returns the angle from the mousePoint to the center of the control, in radians. -
positionKnob
Move the collar knob to the correct location for the given mouse point. -
syncFrom
Sync from given scene to this scene control. -
syncTo
Sync to a given scene from this scene control.
-