Class Contour

  • All Implemented Interfaces:
    IContour, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

    public class Contour
    extends javax.swing.JComponent
    implements IContour
    A Contour is a lightweight component which only paints the outline of component when dragged. It is also used as a placeholder for some information during dragging.

    Notes: this class has to be public so that JIDE can use it in different packages, not meant to release to end user as a public API. JIDE will not guarantee the class will remain as it is.

    See Also:
    Serialized Form
    • Nested Class Summary

      • 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.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int FULL_OUTLINE_MODE  
      static int MIX_OUTLINE_MODE  
      static int PARTIAL_OUTLINE_MODE  
      • 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
      • 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
    • Constructor Summary

      Constructors 
      Constructor Description
      Contour()
      Default Constructor.
      Contour​(int tabHeight)
      Constructor with tab height.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void cleanup()  
      java.awt.Component getAttachedComponent()
      Gets the attached component of this contour.
      int getAttachedSide()
      Gets the side of the attached component which the contour is attached to.
      java.awt.Component getGlassPane()  
      int getOutlineMode()  
      java.awt.Container getRelativeContainer()  
      javax.swing.JComponent getSaveDraggedComponent()
      Gets saved dragged component before the contour is hidden.
      int getSaveMouseModifier()
      Gets saved mouse modifier before the contour is hidden.
      int getSaveX()
      Gets saved X position of contour before it's hidden.
      int getSaveY()
      Gets saved Y position of contour before it's hidden.
      int getTabHeight()
      Gets tab height.
      int getTabSide()
      Gets the side of the tab.
      boolean isAllowDocking()
      Checks if docking is allowed.
      boolean isChangeCursor()  
      boolean isDoubleBuffered()
      Returns whether this component should use a buffer to paint.
      boolean isFloating()
      Returns true if the contour is in floating mode.
      boolean isSingle()
      When you dragged a component, several other components could be dragged.
      boolean isTabDocking()
      Returns true if the contour is in tab-dock mode.
      boolean isVisible()
      Determines whether this component should be visible when its parent is visible.
      void paint​(java.awt.Graphics g)
      Paint a rectangle or tab-shape using DOTTED_STROKE with width of WIDTH.
      void setAllowDocking​(boolean allowDocking)
      Sets the value of docking.
      void setAttachedComponent​(java.awt.Component attachedComponent)
      Sets the attached components.
      void setAttachedSide​(int attachedSide)
      Sets the side of the attached component which the contour is attached to.
      void setBounds​(int x, int y, int width, int height)
      Overwrite setBounds so that width and height are always even.
      void setBounds​(java.awt.Rectangle r)
      Overwrite setBounds so that width and height are always even.
      void setChangeCursor​(boolean changeCursor)  
      void setDraggingInformation​(javax.swing.JComponent comp, int saveX, int saveY, int saveMouseModifier)
      Stores information before the contour is hidden.
      void setFloating​(boolean floating)
      Sets the floating mode.
      void setGlassPane​(java.awt.Component glassPane)  
      void setOutlineMode​(int outlineMode)  
      void setRelativeContainer​(java.awt.Container relativeContainer)  
      void setSingle​(boolean single)
      Sets the value of single.
      void setTabDocking​(boolean tabDocking)
      Sets the tab-docking mode.
      void setTabHeight​(int tabHeight)
      Sets the tab height.
      void setTabSide​(int tabSide)
      Sets the side of the tab.
      void setVisible​(boolean aFlag)
      Makes the component visible or invisible.
      • 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, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, 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, unregisterKeyboardAction, update, updateUI
      • 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 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, 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, 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.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Contour

        public Contour()
        Default Constructor.
      • Contour

        public Contour​(int tabHeight)
        Constructor with tab height.
        Parameters:
        tabHeight - the tab height
    • Method Detail

      • isDoubleBuffered

        public boolean isDoubleBuffered()
        Returns whether this component should use a buffer to paint.
        Overrides:
        isDoubleBuffered in class javax.swing.JComponent
        Returns:
        true if this component is double buffered, otherwise false
      • paint

        public void paint​(java.awt.Graphics g)
        Paint a rectangle or tab-shape using DOTTED_STROKE with width of WIDTH.
        Overrides:
        paint in class javax.swing.JComponent
        Parameters:
        g -
      • setBounds

        public void setBounds​(java.awt.Rectangle r)
        Overwrite setBounds so that width and height are always even.
        Specified by:
        setBounds in interface IContour
        Overrides:
        setBounds in class java.awt.Component
        Parameters:
        r - the new bounding rectangle for this component
      • setBounds

        public void setBounds​(int x,
                              int y,
                              int width,
                              int height)
        Overwrite setBounds so that width and height are always even.

        It looks ugly for either dimension is odd when painting with DOTTED_STROKE

        Specified by:
        setBounds in interface IContour
        Overrides:
        setBounds in class java.awt.Component
        Parameters:
        x - the new x-coordinate of this component
        y - the new y-coordinate of this component
        width - the new width of this component
        height - the new height of this component
      • getTabHeight

        public int getTabHeight()
        Gets tab height.
        Specified by:
        getTabHeight in interface IContour
        Returns:
        tab height
      • setTabHeight

        public void setTabHeight​(int tabHeight)
        Sets the tab height.
        Specified by:
        setTabHeight in interface IContour
        Parameters:
        tabHeight -
      • isTabDocking

        public boolean isTabDocking()
        Returns true if the contour is in tab-dock mode.
        Specified by:
        isTabDocking in interface IContour
        Returns:
        true if tab-docking; false otherwise
      • setTabDocking

        public void setTabDocking​(boolean tabDocking)
        Sets the tab-docking mode.
        Specified by:
        setTabDocking in interface IContour
        Parameters:
        tabDocking - new mode
      • getTabSide

        public int getTabSide()
        Gets the side of the tab.
        Specified by:
        getTabSide in interface IContour
        Returns:
        the side of the tab
      • setTabSide

        public void setTabSide​(int tabSide)
        Sets the side of the tab.
        Specified by:
        setTabSide in interface IContour
        Parameters:
        tabSide -
      • isFloating

        public boolean isFloating()
        Returns true if the contour is in floating mode.
        Specified by:
        isFloating in interface IContour
        Returns:
        true if floating; false otherwise
      • setFloating

        public void setFloating​(boolean floating)
        Sets the floating mode.
        Specified by:
        setFloating in interface IContour
        Parameters:
        floating - new mode
      • getAttachedComponent

        public java.awt.Component getAttachedComponent()
        Gets the attached component of this contour.
        Specified by:
        getAttachedComponent in interface IContour
        Returns:
        the attached component
      • setAttachedComponent

        public void setAttachedComponent​(java.awt.Component attachedComponent)
        Sets the attached components.
        Specified by:
        setAttachedComponent in interface IContour
        Parameters:
        attachedComponent - attached component to be set
      • getAttachedSide

        public int getAttachedSide()
        Gets the side of the attached component which the contour is attached to.
        Specified by:
        getAttachedSide in interface IContour
        Returns:
        side the attached side
      • setAttachedSide

        public void setAttachedSide​(int attachedSide)
        Sets the side of the attached component which the contour is attached to.
        Specified by:
        setAttachedSide in interface IContour
        Parameters:
        attachedSide - the new attached side to be set
      • isSingle

        public boolean isSingle()
        When you dragged a component, several other components could be dragged. For example, if user drags on title bar of FrameContainer, all components in the FrameContainer are considered as dragged. If user drags on tab, only selected one is dragged.
        Specified by:
        isSingle in interface IContour
        Returns:
        true if all dragged components are affected; false otherwise.
      • setSingle

        public void setSingle​(boolean single)
        Sets the value of single.
        Specified by:
        setSingle in interface IContour
        Parameters:
        single - true if all dragged components are affected; false otherwise.
      • isAllowDocking

        public boolean isAllowDocking()
        Checks if docking is allowed.
        Specified by:
        isAllowDocking in interface IContour
        Returns:
        true if docking is allowed; false otherwise.
      • setAllowDocking

        public void setAllowDocking​(boolean allowDocking)
        Sets the value of docking.
        Specified by:
        setAllowDocking in interface IContour
        Parameters:
        allowDocking - true if docking is allowed; false otherwise.
      • setRelativeContainer

        public void setRelativeContainer​(java.awt.Container relativeContainer)
        Specified by:
        setRelativeContainer in interface IContour
      • getSaveX

        public int getSaveX()
        Gets saved X position of contour before it's hidden.
        Specified by:
        getSaveX in interface IContour
        Returns:
        saved X position
      • getSaveY

        public int getSaveY()
        Gets saved Y position of contour before it's hidden.
        Specified by:
        getSaveY in interface IContour
        Returns:
        saved Y position
      • getSaveMouseModifier

        public int getSaveMouseModifier()
        Gets saved mouse modifier before the contour is hidden.
        Specified by:
        getSaveMouseModifier in interface IContour
        Returns:
        saved mouse modifier
      • getSaveDraggedComponent

        public javax.swing.JComponent getSaveDraggedComponent()
        Gets saved dragged component before the contour is hidden.
        Specified by:
        getSaveDraggedComponent in interface IContour
        Returns:
        saved dragged component
      • setDraggingInformation

        public void setDraggingInformation​(javax.swing.JComponent comp,
                                           int saveX,
                                           int saveY,
                                           int saveMouseModifier)
        Stores information before the contour is hidden. Those information will be used to restore when the contour is set visible again.
        Specified by:
        setDraggingInformation in interface IContour
        Parameters:
        comp - the dragged component
        saveX - X position of the contour
        saveY - Y position of the contour
        saveMouseModifier - mouse modifier in the MouseEvent
      • cleanup

        public void cleanup()
        Specified by:
        cleanup in interface IContour
      • setVisible

        public void setVisible​(boolean aFlag)
        Makes the component visible or invisible. Overrides Component.setVisible.
        Specified by:
        setVisible in interface IContour
        Overrides:
        setVisible in class javax.swing.JComponent
        Parameters:
        aFlag - true to make the component visible; false to make it invisible
      • isVisible

        public boolean isVisible()
        Determines whether this component should be visible when its parent is visible. Components are initially visible, with the exception of top level components such as Frame objects.
        Specified by:
        isVisible in interface IContour
        Overrides:
        isVisible in class java.awt.Component
        Returns:
        true if the component is visible, false otherwise
        Since:
        JDK1.0
        See Also:
        setVisible(boolean)
      • getOutlineMode

        public int getOutlineMode()
      • setOutlineMode

        public void setOutlineMode​(int outlineMode)
      • getGlassPane

        public java.awt.Component getGlassPane()
        Specified by:
        getGlassPane in interface IContour
      • setGlassPane

        public void setGlassPane​(java.awt.Component glassPane)
        Specified by:
        setGlassPane in interface IContour
      • isChangeCursor

        public boolean isChangeCursor()
      • setChangeCursor

        public void setChangeCursor​(boolean changeCursor)
        Specified by:
        setChangeCursor in interface IContour