Class PShelf

  • All Implemented Interfaces:
    org.eclipse.swt.graphics.Drawable

    public class PShelf
    extends org.eclipse.swt.widgets.Canvas

    NOTE: THIS WIDGET AND ITS API ARE STILL UNDER DEVELOPMENT. THIS IS A PRE-RELEASE ALPHA VERSION. USERS SHOULD EXPECT API CHANGES IN FUTURE VERSIONS.

    Instances of this class implement a selectable accordion metaphor, where each shelf contains a client area.

    The item children that may be added to instances of this class must be of type PShelfItem. Control children are created on the body composite of each items accessed via PShelfItem#getBody.

    Styles:
    BORDER, SIMPLE
    Events:
    Selection

    IMPORTANT: This class is not intended to be subclassed.

    • Constructor Summary

      Constructors 
      Constructor Description
      PShelf​(org.eclipse.swt.widgets.Composite parent, int style)
      Constructs a new instance of this class given its parent and a style value describing its behavior and appearance.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addSelectionListener​(org.eclipse.swt.events.SelectionListener listener)
      Adds the listener to the collection of listeners who will be notified when the receiver's selection changes, by sending it one of the messages defined in the SelectionListener interface.
      private void animateOpen​(PShelfItem previousItem, PShelfItem newItem, boolean openFromBottom)  
      private static int checkStyle​(int style)  
      (package private) void computeItemHeight()  
      private void computeItemYCoordinates()  
      org.eclipse.swt.graphics.Point computeSize​(int wHint, int hHint, boolean changed)
      (package private) void createItem​(PShelfItem item, int index)  
      PShelfItem getItem​(org.eclipse.swt.graphics.Point point)
      Returns the item at the given location.
      PShelfItem[] getItems()
      Returns an array of PShelfItems which are the items in the receiver.
      AbstractRenderer getRenderer()
      Returns the renderer.
      PShelfItem getSelection()
      Returns the PShelfItem that is currently selected in the receiver.
      private void onDispose()  
      private void onPaint​(org.eclipse.swt.graphics.GC gc)  
      (package private) void onResize()  
      private void openItem​(PShelfItem item, boolean animation)  
      void removeAll()
      Removes all PShelfItems.
      (package private) void removeItem​(PShelfItem item)  
      void removeSelectionListener​(org.eclipse.swt.events.SelectionListener listener)
      Removes the listener from the collection of listeners who will be notified when the receiver's selection changes.
      void setAnimationSpeed​(double animationSpeed)
      Sets the speed of animation.
      void setRedrawOnAmination​(boolean redrawOnAnimation)
      Sets whether to redraw the items (previous and next item) when the open animation occours.
      void setRenderer​(AbstractRenderer renderer)
      Sets the renderer.
      void setSelection​(PShelfItem item)
      Sets the receiver's selection to the given item.
      private void sizeClients()  
      • Methods inherited from class org.eclipse.swt.widgets.Canvas

        drawBackground, getCaret, getIME, scroll, setCaret, setFont, setIME
      • Methods inherited from class org.eclipse.swt.widgets.Composite

        changed, checkSubclass, drawBackground, getBackgroundMode, getChildren, getLayout, getLayoutDeferred, getTabList, isLayoutDeferred, layout, layout, layout, layout, layout, setBackgroundMode, setFocus, setLayout, setLayoutDeferred, setTabList
      • Methods inherited from class org.eclipse.swt.widgets.Scrollable

        computeTrim, getClientArea, getHorizontalBar, getScrollbarsMode, getVerticalBar
      • Methods inherited from class org.eclipse.swt.widgets.Control

        addControlListener, addDragDetectListener, addFocusListener, addGestureListener, addHelpListener, addKeyListener, addMenuDetectListener, addMouseListener, addMouseMoveListener, addMouseTrackListener, addMouseWheelListener, addPaintListener, addTouchListener, addTraverseListener, computeSize, dragDetect, dragDetect, forceFocus, getAccessible, getBackground, getBackgroundImage, getBorderWidth, getBounds, getCursor, getDragDetect, getEnabled, getFont, getForeground, getLayoutData, getLocation, getMenu, getMonitor, getOrientation, getParent, getRegion, getShell, getSize, getTextDirection, getToolTipText, getTouchEnabled, getVisible, internal_dispose_GC, internal_new_GC, isAutoScalable, isEnabled, isFocusControl, isReparentable, isVisible, moveAbove, moveBelow, pack, pack, print, redraw, redraw, removeControlListener, removeDragDetectListener, removeFocusListener, removeGestureListener, removeHelpListener, removeKeyListener, removeMenuDetectListener, removeMouseListener, removeMouseMoveListener, removeMouseTrackListener, removeMouseWheelListener, removePaintListener, removeTouchListener, removeTraverseListener, requestLayout, setBackground, setBackgroundImage, setBounds, setBounds, setCapture, setCursor, setDragDetect, setEnabled, setForeground, setLayoutData, setLocation, setLocation, setMenu, setOrientation, setParent, setRedraw, setRegion, setSize, setSize, setTextDirection, setToolTipText, setTouchEnabled, setVisible, toControl, toControl, toDisplay, toDisplay, traverse, traverse, traverse, update
      • Methods inherited from class org.eclipse.swt.widgets.Widget

        addDisposeListener, addListener, checkWidget, dispose, getData, getData, getDisplay, getListeners, getStyle, isAutoDirection, isDisposed, isListening, notifyListeners, removeDisposeListener, removeListener, removeListener, reskin, setData, setData, toString
      • Methods inherited from class java.lang.Object

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

      • items

        private java.util.ArrayList<PShelfItem> items
      • itemHeight

        private int itemHeight
      • yCoordinates

        private java.util.ArrayList<java.lang.Integer> yCoordinates
      • animationSpeed

        private double animationSpeed
      • redrawOnAnimation

        private boolean redrawOnAnimation
    • Constructor Detail

      • PShelf

        public PShelf​(org.eclipse.swt.widgets.Composite parent,
                      int style)
        Constructs a new instance of this class given its parent and a style value describing its behavior and appearance.

        The style value is either one of the style constants defined in class SWT which is applicable to instances of this class, or must be built by bitwise OR'ing together (that is, using the int "|" operator) two or more of those SWT style constants. The class description lists the style constants that are applicable to the class. Style bits are also inherited from superclasses.

        Parameters:
        parent - a composite control which will be the parent of the new instance (cannot be null)
        style - the style of control to construct
        Throws:
        java.lang.IllegalArgumentException -
        • ERROR_NULL_ARGUMENT - if the parent is null
        org.eclipse.swt.SWTException -
        • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent
        • ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass
    • Method Detail

      • checkStyle

        private static int checkStyle​(int style)
      • setRenderer

        public void setRenderer​(AbstractRenderer renderer)
        Sets the renderer.
        Parameters:
        renderer - the new renderer
        Throws:
        java.lang.IllegalArgumentException -
        • ERROR_NULL_ARGUMENT - if the renderer is null
        org.eclipse.swt.SWTException -
        • ERROR_WIDGET_DISPOSED - if the receiver or the renderer has been disposed
        • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
      • getRenderer

        public AbstractRenderer getRenderer()
        Returns the renderer.
        Returns:
        the renderer
        Throws:
        org.eclipse.swt.SWTException -
        • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
        • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
      • computeSize

        public org.eclipse.swt.graphics.Point computeSize​(int wHint,
                                                          int hHint,
                                                          boolean changed)
        Overrides:
        computeSize in class org.eclipse.swt.widgets.Control
      • onDispose

        private void onDispose()
      • onPaint

        private void onPaint​(org.eclipse.swt.graphics.GC gc)
      • computeItemYCoordinates

        private void computeItemYCoordinates()
      • createItem

        void createItem​(PShelfItem item,
                        int index)
      • removeItem

        void removeItem​(PShelfItem item)
      • openItem

        private void openItem​(PShelfItem item,
                              boolean animation)
      • animateOpen

        private void animateOpen​(PShelfItem previousItem,
                                 PShelfItem newItem,
                                 boolean openFromBottom)
      • onResize

        void onResize()
      • sizeClients

        private void sizeClients()
      • computeItemHeight

        void computeItemHeight()
      • getItem

        public PShelfItem getItem​(org.eclipse.swt.graphics.Point point)
        Returns the item at the given location.
        Parameters:
        point - location
        Throws:
        java.lang.IllegalArgumentException -
        • ERROR_NULL_ARGUMENT - if the point is null
        org.eclipse.swt.SWTException -
        • ERROR_WIDGET_DISPOSED - if the receiver or the renderer has been disposed
        • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
      • setSelection

        public void setSelection​(PShelfItem item)
        Sets the receiver's selection to the given item.
        Parameters:
        item - the item to select
        Throws:
        java.lang.IllegalArgumentException -
        • ERROR_NULL_ARGUMENT - if the item is null
        org.eclipse.swt.SWTException -
        • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
        • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
      • getSelection

        public PShelfItem getSelection()
        Returns the PShelfItem that is currently selected in the receiver.
        Returns:
        the currently selected item
        Throws:
        org.eclipse.swt.SWTException -
        • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
        • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
      • getItems

        public PShelfItem[] getItems()
        Returns an array of PShelfItems which are the items in the receiver.

        Note: This is not the actual structure used by the receiver to maintain its list of items, so modifying the array will not affect the receiver.

        Returns:
        the items in the receiver
        Throws:
        org.eclipse.swt.SWTException -
        • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
        • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
      • addSelectionListener

        public void addSelectionListener​(org.eclipse.swt.events.SelectionListener listener)
        Adds the listener to the collection of listeners who will be notified when the receiver's selection changes, by sending it one of the messages defined in the SelectionListener interface.

        When widgetSelected is called, the item field of the event object is valid. widgetDefaultSelected is not called.

        Parameters:
        listener - the listener which should be notified
        Throws:
        java.lang.IllegalArgumentException -
        • ERROR_NULL_ARGUMENT - if the listener is null
        org.eclipse.swt.SWTException -
        • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
        • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
        See Also:
        SelectionListener, removeSelectionListener(org.eclipse.swt.events.SelectionListener), SelectionEvent
      • removeSelectionListener

        public void removeSelectionListener​(org.eclipse.swt.events.SelectionListener listener)
        Removes the listener from the collection of listeners who will be notified when the receiver's selection changes.
        Parameters:
        listener - the listener which should no longer be notified
        Throws:
        java.lang.IllegalArgumentException -
        • ERROR_NULL_ARGUMENT - if the listener is null
        org.eclipse.swt.SWTException -
        • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
        • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
        See Also:
        SelectionListener, addSelectionListener(org.eclipse.swt.events.SelectionListener)
      • removeAll

        public void removeAll()
        Removes all PShelfItems.
      • setAnimationSpeed

        public void setAnimationSpeed​(double animationSpeed)
        Sets the speed of animation. This value indicates the relative growing/shrinking value for one step. Values between 0.0 and 1.0 are allowed.
        Parameters:
        animationSpeed -
        Since:
        05.02.2016
      • setRedrawOnAmination

        public void setRedrawOnAmination​(boolean redrawOnAnimation)
        Sets whether to redraw the items (previous and next item) when the open animation occours.
        Parameters:
        redrawOnAnimation -
        Since:
        05.02.2016