rkm
Class RKDrawing

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by rkm.RKDrawing
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.ChangeListener
Direct Known Subclasses:
RKAnimationPanel, RKDerivPanel

public abstract class RKDrawing
extends javax.swing.JPanel
implements javax.swing.event.ChangeListener

Superclass for panels that provide a geometrical view. This class provides drawing and plotting functions, manages transformations and colors and handles mouse events.

See Also:
Serialized Form

Nested Class Summary
 
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
 
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.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class javax.swing.JComponent
accessibleContext, 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
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
RKDrawing(RKModel rkm)
          Create a new drawing for the given model.
 
Method Summary
 void drawIntervals(double minX, double maxX, double minY, double maxY, java.awt.Graphics2D g2)
          Draw axes intervals from minX to maxX and minY to maxY (all true coordinates), with tickmarks at the end points.
 void drawTitle(java.lang.String title, java.awt.Graphics2D g2)
          Draw the given string in the top left corner.
 float dx(double x)
           
 float dy(double y)
           
 java.awt.Color getCoordinateColor()
           
 java.awt.Color getInnerStagesColor()
           
 RKModel getModel()
           
 java.awt.Color getOuterStageColor()
           
 java.awt.Color getPlotColor()
           
 double getResolutionX()
           
 double getResolutionY()
           
 java.awt.Color getSecondaryPlotColor()
           
 int getTranslationX()
           
 int getTranslationY()
           
 void moveToIntervals(double minX, double maxX, double minY, double maxY)
          Scale and translate the view so the given intervals use 70% of the width and height of the panel and are centered.
protected  void paintComponent(java.awt.Graphics g)
           
 void plotFunction(double x0, double y0, boolean deriv, java.awt.Graphics2D g2, java.awt.Color c, java.awt.Stroke s)
          Plot the solution through (x0, y0) (true coordinates) using the given color and stroke.
 double rx(int x)
           
 double ry(int y)
           
 void setCoordinateColor(java.awt.Color coColor)
          Set the color to use for coordinates and axes.
 void setInnerStagesColor(java.awt.Color isColor)
          Set the color to use for inner stages.
 void setOuterStageColor(java.awt.Color osColor)
          Set the color to use for the outer stage.
 void setPlotColor(java.awt.Color plotColor)
          Set the color to use for the main solution.
 void setResolution(double xres, double yres)
          Set the resolutions to use.
 void setSecondaryPlotColor(java.awt.Color secPlotColor)
          Set the color to use for secondary solutions.
 void setTranslation(int tx, int ty)
          Set the translations to use.
abstract  void stateChanged(javax.swing.event.ChangeEvent e)
          Subclasses are required to implement this method.
 void tick(double x, double y, java.awt.Graphics2D g2)
          Put tickmarks on the axes for the point (x, y) (true coordinates).
 void tickX(double x, java.awt.Graphics2D g2, java.awt.Color c)
          Tick the X-axis at point x (true coordinate) using the given color.
 void tickY(double y, java.awt.Graphics2D g2, java.awt.Color c)
          Tick the Y-axis at point y (true coordinate) using the given color.
 
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, 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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, 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, 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, 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, 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, hide, 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, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RKDrawing

public RKDrawing(RKModel rkm)
Create a new drawing for the given model.

Method Detail

getModel

public RKModel getModel()
Returns:
the model used.

getTranslationX

public int getTranslationX()
Returns:
the translation used along the X-axis.

getTranslationY

public int getTranslationY()
Returns:
the translation used along the Y-axis.

setTranslation

public void setTranslation(int tx,
                           int ty)
Set the translations to use.


getResolutionX

public double getResolutionX()
Returns:
the resolution used for the X-axis.

getResolutionY

public double getResolutionY()
Returns:
the resolution used for the Y-axis.

setResolution

public void setResolution(double xres,
                          double yres)
Set the resolutions to use.


getCoordinateColor

public java.awt.Color getCoordinateColor()
Returns:
the color used for coordinates and axes.

setCoordinateColor

public void setCoordinateColor(java.awt.Color coColor)
Set the color to use for coordinates and axes.


getPlotColor

public java.awt.Color getPlotColor()
Returns:
the color used for the main solution.

setPlotColor

public void setPlotColor(java.awt.Color plotColor)
Set the color to use for the main solution.


getSecondaryPlotColor

public java.awt.Color getSecondaryPlotColor()
Returns:
the color used for secondary solutions.

setSecondaryPlotColor

public void setSecondaryPlotColor(java.awt.Color secPlotColor)
Set the color to use for secondary solutions.


getInnerStagesColor

public java.awt.Color getInnerStagesColor()
Returns:
the color used for inner stages.

setInnerStagesColor

public void setInnerStagesColor(java.awt.Color isColor)
Set the color to use for inner stages.


getOuterStageColor

public java.awt.Color getOuterStageColor()
Returns:
the color used for the outer stage.

setOuterStageColor

public void setOuterStageColor(java.awt.Color osColor)
Set the color to use for the outer stage.


paintComponent

protected void paintComponent(java.awt.Graphics g)
Overrides:
paintComponent in class javax.swing.JComponent

rx

public double rx(int x)
Returns:
the true abscissa for the pixel with screen abscissa x.

dx

public float dx(double x)
Returns:
the screen abscissa for the point with true abscissa x.

ry

public double ry(int y)
Returns:
the true ordinate for the pixel with screen ordinate y.

dy

public float dy(double y)
Returns:
the screen ordinate for the point with true ordinate y.

drawTitle

public void drawTitle(java.lang.String title,
                      java.awt.Graphics2D g2)
Draw the given string in the top left corner. The coordinate color is used for this.


drawIntervals

public void drawIntervals(double minX,
                          double maxX,
                          double minY,
                          double maxY,
                          java.awt.Graphics2D g2)
Draw axes intervals from minX to maxX and minY to maxY (all true coordinates), with tickmarks at the end points. The coordinate color is used for this.


tick

public void tick(double x,
                 double y,
                 java.awt.Graphics2D g2)
Put tickmarks on the axes for the point (x, y) (true coordinates). The coordinate color is used for this.


tickX

public void tickX(double x,
                  java.awt.Graphics2D g2,
                  java.awt.Color c)
Tick the X-axis at point x (true coordinate) using the given color.


tickY

public void tickY(double y,
                  java.awt.Graphics2D g2,
                  java.awt.Color c)
Tick the Y-axis at point y (true coordinate) using the given color.


plotFunction

public void plotFunction(double x0,
                         double y0,
                         boolean deriv,
                         java.awt.Graphics2D g2,
                         java.awt.Color c,
                         java.awt.Stroke s)
Plot the solution through (x0, y0) (true coordinates) using the given color and stroke. If deriv is true, the derivate of the solution will be plotted instead of the solution itself.


stateChanged

public abstract void stateChanged(javax.swing.event.ChangeEvent e)
Subclasses are required to implement this method.

Specified by:
stateChanged in interface javax.swing.event.ChangeListener

moveToIntervals

public void moveToIntervals(double minX,
                            double maxX,
                            double minY,
                            double maxY)
Scale and translate the view so the given intervals use 70% of the width and height of the panel and are centered.