public class DOTNeedlePainter extends javax.swing.JPanel implements DisplayObjectPainter
Der Painter für Linienobjekte.
javax.swing.JPanel.AccessibleJPaneljavax.swing.JComponent.AccessibleJComponentlistenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW| Constructor and Description |
|---|
DOTNeedlePainter() |
| Modifier and Type | Method and Description |
|---|---|
private java.util.List<java.awt.geom.Path2D.Double> |
cutPathToRectangle(java.awt.geom.Path2D path2D,
java.awt.Rectangle bounds) |
private void |
drawPoint(java.awt.Graphics2D g2D,
java.awt.geom.Point2D point,
MapPane mapPane,
DisplayObject displayObject,
boolean selected) |
java.awt.Rectangle |
getBoundingRectangle(DisplayObject displayObject,
int type)
Diese Methode gibt das umgebende Rechteck des DisplayObjects für den angebenen Typen zurück.
|
java.util.List<java.lang.Object> |
getCoordinates(java.util.List<java.lang.Object> coordinates,
int type)
Diese Methode berechnet aus den übergebenen Koordinaten die Koordinaten zu dem übergebenen Typ.
|
private java.awt.geom.Point2D.Double |
getIntersectionPoint(java.awt.geom.Point2D.Double pointInRect,
java.awt.geom.Point2D.Double pointOutsideRect,
java.awt.Rectangle rect) |
private java.util.List<java.awt.geom.Point2D.Double> |
getIntersectionPoints(java.awt.Rectangle bounds,
java.awt.geom.Point2D.Double point0,
java.awt.geom.Point2D.Double point1) |
private double |
getPathLength(java.awt.geom.Path2D.Double path) |
private java.awt.geom.Point2D.Double |
getPathMidPoint(java.awt.geom.Path2D.Double path) |
private java.util.Collection<java.awt.geom.Point2D> |
getPointLocations(MapPane mapPane,
DisplayObject displayObject) |
private java.util.Collection<java.awt.geom.Point2D> |
getPointLocations(MapPane mapPane,
java.lang.Object o) |
private double |
getScale(MapPane mapPane) |
private double |
n(java.awt.geom.Point2D.Double p1,
java.awt.geom.Point2D.Double p2,
java.awt.geom.Point2D.Double p3,
java.awt.geom.Point2D.Double p4) |
private java.awt.geom.Point2D.Double |
nearestPointOnLine(java.awt.geom.Point2D point0,
java.awt.geom.Point2D point1,
java.awt.geom.Point2D centerPoint) |
void |
paintDisplayObject(MapPane mapPane,
java.awt.Graphics2D g2D,
DisplayObject displayObject,
boolean selected)
Implementationen dieser Methode werden aufgerufen, wenn das DisplayObject gezeichnet werden soll.
|
private double |
s(java.awt.geom.Point2D.Double p1,
java.awt.geom.Point2D.Double p2,
java.awt.geom.Point2D.Double p3,
java.awt.geom.Point2D.Double p4) |
private double |
t(java.awt.geom.Point2D.Double p1,
java.awt.geom.Point2D.Double p2,
java.awt.geom.Point2D.Double p3,
java.awt.geom.Point2D.Double p4) |
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIaddAncestorListener, 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, updateadd, 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, validateTreeaction, 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, getPeer, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCyclepublic void paintDisplayObject(MapPane mapPane, java.awt.Graphics2D g2D, DisplayObject displayObject, boolean selected)
DisplayObjectPainterImplementationen dieser Methode werden aufgerufen, wenn das DisplayObject gezeichnet werden soll. Innerhalb seiner Implemantation sollte für displayObject die Methode DisplayObject.getCoordinates(int type) aufgerufen werden. Diese bewerkstelligt einen lazy Cache; sind die Daten nicht vorhanden, so wird die Erzeugung an die Methode DisplayObjectPainter.getCoordinates(java.util.List<java.lang.Object>, int) delegiert, wo auch die Auswertung des Integer-Wertes stattfindet.
paintDisplayObject in interface DisplayObjectPaintermapPane - die Kartenansichtg2D - ein Graphics2D-Objekt zum ZeichnendisplayObject - das DisplayObjectselected - true genau dann, wenn das DisplayObject selektiert istprivate java.util.Collection<java.awt.geom.Point2D> getPointLocations(MapPane mapPane, DisplayObject displayObject)
private java.util.Collection<java.awt.geom.Point2D> getPointLocations(MapPane mapPane, java.lang.Object o)
private java.awt.geom.Point2D.Double getPathMidPoint(java.awt.geom.Path2D.Double path)
private double getPathLength(java.awt.geom.Path2D.Double path)
private java.util.List<java.awt.geom.Path2D.Double> cutPathToRectangle(java.awt.geom.Path2D path2D,
java.awt.Rectangle bounds)
private java.util.List<java.awt.geom.Point2D.Double> getIntersectionPoints(java.awt.Rectangle bounds,
java.awt.geom.Point2D.Double point0,
java.awt.geom.Point2D.Double point1)
private java.awt.geom.Point2D.Double getIntersectionPoint(java.awt.geom.Point2D.Double pointInRect,
java.awt.geom.Point2D.Double pointOutsideRect,
java.awt.Rectangle rect)
private double t(java.awt.geom.Point2D.Double p1,
java.awt.geom.Point2D.Double p2,
java.awt.geom.Point2D.Double p3,
java.awt.geom.Point2D.Double p4)
private double s(java.awt.geom.Point2D.Double p1,
java.awt.geom.Point2D.Double p2,
java.awt.geom.Point2D.Double p3,
java.awt.geom.Point2D.Double p4)
private double n(java.awt.geom.Point2D.Double p1,
java.awt.geom.Point2D.Double p2,
java.awt.geom.Point2D.Double p3,
java.awt.geom.Point2D.Double p4)
private java.awt.geom.Point2D.Double nearestPointOnLine(java.awt.geom.Point2D point0,
java.awt.geom.Point2D point1,
java.awt.geom.Point2D centerPoint)
private void drawPoint(java.awt.Graphics2D g2D,
java.awt.geom.Point2D point,
MapPane mapPane,
DisplayObject displayObject,
boolean selected)
private double getScale(MapPane mapPane)
public java.util.List<java.lang.Object> getCoordinates(java.util.List<java.lang.Object> coordinates,
int type)
DisplayObjectPainterDiese Methode berechnet aus den übergebenen Koordinaten die Koordinaten zu dem übergebenen Typ. Dieser Typ erlaubt es dem Programmierer unterschiedliche Koordinaten für das Objekt zu bekommen. Diese Methode wird nur in DisplayObject.getCoordinates( int type) aufgerufen, und die Ergebnisse werden dort gecached. Damit ergeben sich folgende Randbedingungen für den Plugin-Programmierer: einerseits muss er keinen eigenen Cache implementieren und andererseits kann er selber entscheiden, wofür die unterschiedlichen Integer-Werte stehen. Eine denkbare Anwendung wären unterschiedlich genaue Koordinaten für verschiedene Zoom-Stufen zwecks Optimierung der Zeichengeschwindigkeit.
In der 4 Standard-Plugins wird nur bei Linien von verschiedenen Typen Gebrauch gemacht: der Typ stellt hier die Verschiebung der Koordinaten dar. Alle anderen Implementation rufen die Methode nur mit dem Wert 0 auf.
getCoordinates in interface DisplayObjectPaintercoordinates - die Originalkoordinatentype - der gewünschte Koordinatentyppublic java.awt.Rectangle getBoundingRectangle(DisplayObject displayObject, int type)
DisplayObjectPainterDiese Methode gibt das umgebende Rechteck des DisplayObjects für den angebenen Typen zurück. Über die Bedeutung des Integer-Wertes type wird in DisplayObjectPainter.getCoordinates(java.util.List<java.lang.Object>, int) informiert. Diese Methode wird nur aus DisplayObject.getBoundingRectangle( int type) heraus aufgerufen, wo bereits ein lazy Cache für die Rückgabewerte installiert ist.
getBoundingRectangle in interface DisplayObjectPainterdisplayObject - das DisplayObject