Package uk.ac.starlink.topcat.plot2

## Class BlobPanel2

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - uk.ac.starlink.topcat.plot2.BlobPanel2

- All Implemented Interfaces:
    `java.awt.image.ImageObserver`, `java.awt.MenuContainer`, `java.io.Serializable`

      public abstract class BlobPanel2
      extends javax.swing.JComponent

  Component which allows the user to draw a blob using the mouse. You drag the mouse around to cover patches of the component; you can create several separate or overlapping blobs by doing several click-drag sequences. If you drag off the window the currently-dragged region will be ditched. Clicking with the right button removes the most recently-added blob. Resizing the window clears any existing blobs (since it's not obvious how or if to resize the blobs). Try it, it's easy.
  Since:
    8 Jul 2004
  Author:
    Mark Taylor (Starlink)
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class java.awt.Component

      `java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

    - ### Nested classes/interfaces inherited from class java.awt.Container

      `java.awt.Container.AccessibleAWTContainer`

    - ### Nested classes/interfaces inherited from class javax.swing.JComponent

      `javax.swing.JComponent.AccessibleJComponent`

  - ### Field Summary

    - ### Fields inherited from class java.awt.Component

      `accessibleContext, 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`

    - ### Fields inherited from class javax.swing.JComponent

      `listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `BlobPanel2()` | Constructor.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected abstract void` | `blobCompleted​(java.awt.Shape blob)` | Invoked when this component's action is invoked to terminate a blob drawing session.
    `void` | `clear()` | Resets the current blob to an empty shape.
    `java.awt.Shape` | `getBlob()` | Returns the currently-defined blob.
    `javax.swing.Action` | `getBlobAction()` | Returns the action which is used to start and stop blob drawing.
    `boolean` | `isActive()` | Indicates whether this blob is currently active.
    `protected void` | `paintComponent​(java.awt.Graphics g)` |
    `void` | `setActive​(boolean active)` | Sets whether this panel is active (visible, accepting mouse gestures, drawing shapes) or inactive (invisible).
    `void` | `setBlob​(java.awt.Shape blob)` | Sets the currently-defined blob.
    `void` | `setColors​(java.awt.Color fillColor, java.awt.Color pathColor)` | Sets the colours which will be used for drawing the blob.
    `void` | `setListening​(boolean isListening)` | Changes whether this component is listening to mouse gestures to modify the shape.

    - ### 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, 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, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### 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, transferFocusDownCycle, validate, validateTree`

    - ### 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, 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, 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, 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, updateUI`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### BlobPanel2

          public BlobPanel2()

      Constructor.

  - ### Method Detail

    - #### getBlob

          public java.awt.Shape getBlob()

      Returns the currently-defined blob.
      Returns:
        shape drawn

    - #### setBlob

          public void setBlob​(java.awt.Shape blob)

      Sets the currently-defined blob.
      Parameters:
        `blob` - shape to be displayed and played around with by the user

    - #### clear

          public void clear()

      Resets the current blob to an empty shape.

    - #### getBlobAction

          public javax.swing.Action getBlobAction()

      Returns the action which is used to start and stop blob drawing. Invoking the action toggles the activity status of this panel, and when invoked for deactivation (that is after a blob has been drawn) then `blobCompleted(java.awt.Shape)` is called.
      Returns:
        activation toggle action

    - #### setActive

          public void setActive​(boolean active)

      Sets whether this panel is active (visible, accepting mouse gestures, drawing shapes) or inactive (invisible).
      Parameters:
        `active` - true to select activeness

    - #### setListening

          public void setListening​(boolean isListening)

      Changes whether this component is listening to mouse gestures to modify the shape. This method is called by `setActive`, but may be called independently of it as well.
      Parameters:
        `isListening` - whether mouse gestures can affect current shape

    - #### isActive

          public boolean isActive()

      Indicates whether this blob is currently active.
      Returns:
        true iff this blob is active (visible and drawing)

    - #### blobCompleted

          protected abstract void blobCompleted​(java.awt.Shape blob)

      Invoked when this component's action is invoked to terminate a blob drawing session. Implementations of this method are expected to clear up by calling `setActive(false)` when the blob representation is no longer required.
      Parameters:
        `blob` - completed shape

    - #### setColors

          public void setColors​(java.awt.Color fillColor,
                                java.awt.Color pathColor)

      Sets the colours which will be used for drawing the blob.
      Parameters:
        `fillColor` - colour which fills the blob area
        `pathColor` - colour which delineates the blob region

    - #### paintComponent

          protected void paintComponent​(java.awt.Graphics g)

      Overrides:
        `paintComponent` in class `javax.swing.JComponent`

Copyright © 2003-2018 CCLRC: Council for the Central Laboratory of the Research Councils. All Rights Reserved.