com.seisw.util.geom.demo
Class PolyCanvas

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended bycom.seisw.util.geom.demo.PolyCanvas
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class PolyCanvas
extends javax.swing.JComponent

PolyCanvas is the central UI object of the PolyDemo application. It allows the user to put points on the canvas to define a complex polygon of a single contour. The clipper algorithm supports more complex polygons, but the polygons created by the user are still complex enough to show the capabilities of the algorithm.

PolyCanvas can be in one of the of states specified in CanvasState. It supports the Observer/Listener pattern by accepting StateChangedListener objects and then telling these objects when a state change has been completed.

Refactoring: There is plenty of opportunity for refactoring within this class, but I'm out of time. It would be nice to create an inner class that contained a polygon and its associated list of points. It could possibly be the StatePoly class.

Author:
Dan Bridenbecker, Solution Engineering, Inc.
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes 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
PolyCanvas()
          Creates a new instance of PolyCanvas
 
Method Summary
 void addStateChangedListener(StateChangedListener listener)
          Add a listener for changes in state of the canvas.
 boolean canPerformOperations()
          Return true if the set operations can be performed.
 void clear()
          Clear the points and polygons of the canvas and reset the state to entering points for polygon 1.
 double getPolyArea1()
          Return the area of the polygon number 1.
 double getPolyArea2()
          Return the area of the polygon number 2.
 double getPolyAreaOp()
          Return the area of the resulting polygon of the selected set operation.
 void intersection()
          Change the state of the canvas to intersection.
 boolean isEnteringData()
          Return true if data points can be added.
 boolean isIntersectionState()
          Return true if the current state is intersection.
 boolean isUnionState()
          Return true if the current state is union.
 boolean isXorState()
          Return true if the current state is xor.
 void paint(java.awt.Graphics g)
          Draw the points and polygons.
 void startEnteringPoly1()
          Change the state of the canvas to entering points for Polygon 1.
 void startEnteringPoly2()
          Change the state of the canvas to entering points for Polygon 2.
 void stopEntering()
          Change the state of the canvas to stop/done.
 void union()
          Change the state of the canvas to union.
 void xor()
          Change the state of the canvas to xor.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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

PolyCanvas

public PolyCanvas()
Creates a new instance of PolyCanvas

Method Detail

paint

public void paint(java.awt.Graphics g)
Draw the points and polygons. Also display what to do message when nothing else displayed and we're in a state to add points.


canPerformOperations

public boolean canPerformOperations()
Return true if the set operations can be performed.


isEnteringData

public boolean isEnteringData()
Return true if data points can be added.


isIntersectionState

public boolean isIntersectionState()
Return true if the current state is intersection.


isUnionState

public boolean isUnionState()
Return true if the current state is union.


isXorState

public boolean isXorState()
Return true if the current state is xor.


getPolyArea1

public double getPolyArea1()
Return the area of the polygon number 1. It returns -1 if data is currently being accepted for the polygon.


getPolyArea2

public double getPolyArea2()
Return the area of the polygon number 2. It returns -1 if data is currently being accepted for the polygon.


getPolyAreaOp

public double getPolyAreaOp()
Return the area of the resulting polygon of the selected set operation. It returns -1 if the canvas is not in a set operation state.


startEnteringPoly1

public void startEnteringPoly1()
Change the state of the canvas to entering points for Polygon 1.


startEnteringPoly2

public void startEnteringPoly2()
Change the state of the canvas to entering points for Polygon 2.


stopEntering

public void stopEntering()
Change the state of the canvas to stop/done.


intersection

public void intersection()
Change the state of the canvas to intersection.


union

public void union()
Change the state of the canvas to union.


xor

public void xor()
Change the state of the canvas to xor.


clear

public void clear()
Clear the points and polygons of the canvas and reset the state to entering points for polygon 1.


addStateChangedListener

public void addStateChangedListener(StateChangedListener listener)
Add a listener for changes in state of the canvas.



Copyright © 2004 Solution Engineering, Inc. All Rights Reserved.