Class TableCellSWTBase

    • Field Detail

      • LOGID

        private static final LogIDs LOGID
      • this_mon

        private static AEMonitor this_mon
      • FLAG_VALID

        protected static final int FLAG_VALID
        Plugins read this to see if their datasource has changed. invalidate() will clear this flag, causing the cell to set its ui again
        See Also:
        Constant Field Values
      • FLAG_SORTVALUEISTEXT

        protected static final int FLAG_SORTVALUEISTEXT
        Indicates if the sort value is also the text displayed. We can optimize.
        See Also:
        Constant Field Values
      • FLAG_TOOLTIPISAUTO

        protected static final int FLAG_TOOLTIPISAUTO
        Indicates if the tooltip is autogenerated
        See Also:
        Constant Field Values
      • FLAG_UPTODATE

        protected static final int FLAG_UPTODATE
        For refreshing, this flag manages whether the row is actually up to date. We don't update any visuals while the row isn't visible. But, validility does get set to true so that the cell isn't forced to refresh every cycle when not visible. (We can't just never call refresh when the row is not visible, as refresh also sets the sort value) When the row does become visible, we have to invalidate the row so that the row will set its visuals again (this time, actually updating a viewable object).
        See Also:
        Constant Field Values
      • FLAG_MUSTREFRESH

        protected static final int FLAG_MUSTREFRESH
        Cell has been invalidated, it must refresh on next cycle
        See Also:
        Constant Field Values
      • FLAG_VISUALLY_CHANGED_SINCE_REFRESH

        public static final int FLAG_VISUALLY_CHANGED_SINCE_REFRESH
        If any visuals change between 2 refreshes, this flag gets set
        See Also:
        Constant Field Values
      • flags

        private int flags
      • tooltipErrLoopCount

        private byte tooltipErrLoopCount
      • bDebug

        public boolean bDebug
      • sortValue

        protected java.lang.Comparable sortValue
      • restartRefresh

        private byte restartRefresh
      • bInRefreshAsync

        private boolean bInRefreshAsync
      • refreshErrLoopCount

        private byte refreshErrLoopCount
      • loopFactor

        private byte loopFactor
      • MAX_REFRESHES

        protected static int MAX_REFRESHES
      • MAX_REFRESHES_WITHIN_MS

        private static int MAX_REFRESHES_WITHIN_MS
      • bInRefresh

        private boolean bInRefresh
      • lastRefresh

        private long lastRefresh
      • numFastRefreshes

        protected int numFastRefreshes
      • oToolTip

        private java.lang.Object oToolTip
      • defaultToolTip

        private java.lang.Object defaultToolTip
      • textAlpha

        private int textAlpha
      • doFillCell

        private boolean doFillCell
      • iCursorID

        private int iCursorID
      • mouseOver

        private boolean mouseOver
      • icon

        private org.eclipse.swt.graphics.Image icon
      • userData

        private java.util.Map<java.lang.Object,​java.lang.Object> userData
    • Method Detail

      • constructionComplete

        protected void constructionComplete()
      • constructionCompleter

        protected abstract void constructionCompleter()
      • addRefreshListener

        public void addRefreshListener​(TableCellRefreshListener listener)
        Description copied from interface: TableCell
        Adds a listener that triggers when the TableCell needs refreshing
        Specified by:
        addRefreshListener in interface TableCell
        Parameters:
        listener - Listener Object to be called when refresh is needed.
      • addDisposeListener

        public void addDisposeListener​(TableCellDisposeListener listener)
        Description copied from interface: TableCell
        Adds a listener that triggers when the TableCell has been disposed
        Specified by:
        addDisposeListener in interface TableCell
        Parameters:
        listener - listener object to be called
      • addMouseListener

        public void addMouseListener​(TableCellMouseListener listener)
        Description copied from interface: TableCell
        Adds a listener that triggers when a TableCell that belongs to this column has a mouse event.
        Specified by:
        addMouseListener in interface TableCell
      • removeMouseListener

        public void removeMouseListener​(TableCellMouseListener listener)
        Description copied from interface: TableCell
        Remove a previously added TableCellMouseListener
        Specified by:
        removeMouseListener in interface TableCell
        Parameters:
        listener - Previously added listener
      • addSWTPaintListener

        private void addSWTPaintListener​(TableCellSWTPaintListener listener)
        Parameters:
        listenerObject -
        Since:
        3.1.1.1
      • invokeSWTPaintListeners

        public void invokeSWTPaintListeners​(org.eclipse.swt.graphics.GC gc)
      • getClipboardText

        public java.lang.String getClipboardText()
        Description copied from interface: TableCell
        Returns text that's meant for the clipboard
        Specified by:
        getClipboardText in interface TableCell
      • addListeners

        public void addListeners​(java.lang.Object listenerObject)
        Description copied from interface: TableCell
        A listener is added for every type of cell listener the supplied object implements
        Specified by:
        addListeners in interface TableCell
        Parameters:
        listenerObject - Object implementing some cell listeneters
      • invokeVisibilityListeners

        public void invokeVisibilityListeners​(int visibility,
                                              boolean invokeColumnListeners)
        Description copied from interface: TableCellCore
        Trigger all the visibility listeners that have been added to this cell.
        Specified by:
        invokeVisibilityListeners in interface TableCellCore
        Parameters:
        visibility - See TableCellVisibilityListener.VISIBILITY_* constants
      • debug

        public void debug​(java.lang.String s)
      • pluginError

        protected void pluginError​(java.lang.Throwable e)
      • pluginError

        protected void pluginError​(java.lang.String s)
      • refresh

        public boolean refresh()
        Description copied from interface: TableCellCore
        Refresh the cell, including graphic types
        Specified by:
        refresh in interface TableCellCore
      • refresh

        public boolean refresh​(boolean bDoGraphics)
        Description copied from interface: TableCellCore
        Refresh the cell
        Specified by:
        refresh in interface TableCellCore
        Parameters:
        bDoGraphics - Whether to update graphic cells
      • refresh

        public boolean refresh​(boolean bDoGraphics,
                               boolean bRowVisible)
        Description copied from interface: TableCellCore
        Refresh the cell. This method override takes a bRowVisible parameter in order to reduce the number of calls to TableRow.isVisible() in cases where multiple cells on the same row are being refreshed.
        Specified by:
        refresh in interface TableCellCore
        Parameters:
        bDoGraphics - Whether to update graphic cells
        bRowVisible - Visibility state of row
      • refresh

        public boolean refresh​(boolean bDoGraphics,
                               boolean bRowVisible,
                               boolean bCellVisible)
        Description copied from interface: TableCellCore
        Refresh the cell. This method overide takes a bRowVisible paramater and a bCellVisible parameter in order to reduce the number of calls to TableRow.isVisible() and calculations of cell visibility.
        Specified by:
        refresh in interface TableCellCore
        Parameters:
        bDoGraphics - Whether to update graphic cells
        bRowVisible - Assumed visibility state of row
        bCellVisible - Assumed visibility state of the cell
      • setSortValue

        public boolean setSortValue​(java.lang.Comparable valueToSort)
        Description copied from interface: TableCell
        Sets a Comparable object that column sorting will act on. If you never call setSortValue, your column will be sorted by the cell's text.
        Specified by:
        setSortValue in interface TableCell
        Parameters:
        valueToSort - the object that will be used when the column cell's are compared to each other
        Returns:
        True - Sort Value changed.
        False - Sort Value was already set to object supplied.
      • _setSortValue

        private boolean _setSortValue​(java.lang.Comparable valueToSort)
      • setSortValue

        public boolean setSortValue​(long valueToSort)
        Description copied from interface: TableCell
        Sets a long value that the column sorting will act on.
        Specified by:
        setSortValue in interface TableCell
        Parameters:
        valueToSort - sorting value.
        Returns:
        True - Sort Value changed.
        False - Sort Value was already set to value supplied.
      • setSortValue

        public boolean setSortValue​(float valueToSort)
        Description copied from interface: TableCell
        Sets a float value that the column sorting will act upon.
        Specified by:
        setSortValue in interface TableCell
        Parameters:
        valueToSort - float sort value
        Returns:
        true if sort value changed, or false if sort value already set to value supplied
      • getSortValue

        public java.lang.Comparable getSortValue()
        Description copied from interface: TableCell
        Retrieves the sorting value
        Specified by:
        getSortValue in interface TableCell
        Returns:
        Object that will be sorted on
      • isValid

        public boolean isValid()
        Description copied from interface: TableCell
        Validility of the cell's text.
        Specified by:
        isValid in interface TableCell
        Returns:
        True - Text is the same as last call. You do not need to update unless you have new text to display.
        False - Cell-to-Datasource link has changed, and the text is definitely not valid.
      • isDisposed

        public boolean isDisposed()
        Description copied from interface: TableCell
        Retrieve whether the cell has been disposed. This will return true after the TableCellDisposeListener is triggered.
        Specified by:
        isDisposed in interface TableCell
        Returns:
        disposal state
      • hasFlag

        public boolean hasFlag​(int flag)
      • setFlag

        public void setFlag​(int flag)
      • clearFlag

        public void clearFlag​(int flag)
      • invalidate

        public void invalidate()
        If a plugin in trying to invalidate a cell, then clear the sort value too.
        Specified by:
        invalidate in interface TableCell
      • invalidate

        public void invalidate​(boolean bMustRefresh)
        Specified by:
        invalidate in interface TableCellCore
      • setUpToDate

        public void setUpToDate​(boolean upToDate)
        Description copied from interface: TableCellCore
        Sets whether the cell will need updating when it's visible again
        Specified by:
        setUpToDate in interface TableCellCore
      • isUpToDate

        public boolean isUpToDate()
        Description copied from interface: TableCellCore
        Returns whether the cell will need updating when it's visible again
        Specified by:
        isUpToDate in interface TableCellCore
        Returns:
      • getVisuallyChangedSinceRefresh

        public boolean getVisuallyChangedSinceRefresh()
        Description copied from interface: TableCellCore
        Returns whether the cell has visually changed since the last refresh call. Could be used to prevent a refresh, or refresh early.
        Specified by:
        getVisuallyChangedSinceRefresh in interface TableCellCore
        Returns:
        visually changed since refresh state
      • clearVisuallyChangedSinceRefresh

        public void clearVisuallyChangedSinceRefresh()
      • compareTo

        public int compareTo​(java.lang.Object o)
        Compare our sortValue to the specified object. Assumes the object is TableCellSWTBase (safe assumption)
        Specified by:
        compareTo in interface java.lang.Comparable
      • needsPainting

        public boolean needsPainting()
        Description copied from interface: TableCellCore
        Retrieve whether the cell need any paint calls (graphic)
        Specified by:
        needsPainting in interface TableCellCore
        Returns:
        whether the cell needs painting
      • setText

        public boolean setText​(java.lang.String text)
        Description copied from interface: TableCell
        This method is called to set the cell's text. Caching is done, so that if same text is used several times, there won't be any 'flickering' effect. Ie the text is only updated if it's different from current value.

        This function must be called from the same thread that the GUI is running under. Listeners like TableCellAddedListener do not always get called on the GUI thread.

        If you wish to set the text and not worry about changing to the GUI thread, use TableCell.invalidate(), and set the text in the TableCellRefreshListener

        Specified by:
        setText in interface TableCell
        Parameters:
        text - the text to be set
        Returns:
        True - the text was updated.
        False - the text was the same and not modified.
      • setDefaultToolTip

        public void setDefaultToolTip​(java.lang.Object tt)
        Description copied from interface: TableCellCore
        Sets tooltip to be shown in absence of an explicit one
        Specified by:
        setDefaultToolTip in interface TableCellCore
      • uiSetText

        public abstract boolean uiSetText​(java.lang.String text)
      • doPaint

        public void doPaint​(org.eclipse.swt.graphics.GC gc)
        Description copied from interface: TableCellSWT
        Paint the cell (for graphics)
        Specified by:
        doPaint in interface TableCellSWT
        Parameters:
        gc - GC object to be used for painting
      • flagToText

        private java.lang.String flagToText​(int flag,
                                            boolean onlySet)
      • getWidthRaw

        public abstract int getWidthRaw()
      • setFillCell

        public void setFillCell​(boolean doFillCell)
        Description copied from interface: TableCell
        Sets whether the graphic fills the whole cell for TableColumn objects of TYPE_GRAPHIC only. This may effect how often a refresh of the cell is needed, and effects alignment.
        Specified by:
        setFillCell in interface TableCell
        Parameters:
        doFillCell - true - the whole cell is filled by the graphic
      • getFillCell

        public boolean getFillCell()
      • setCursorID

        public boolean setCursorID​(int cursorID)
        Description copied from interface: TableCellCore
        Set the cursor ID that should be used for the cell
        Specified by:
        setCursorID in interface TableCellCore
        Returns:
        changed
      • getCursorID

        public int getCursorID()
        Description copied from interface: TableCellCore
        Get the cursor ID we are currently using XXX Should NOT be SWT.CURSOR_ constants!
        Specified by:
        getCursorID in interface TableCellCore
        Returns:
      • setIcon

        public boolean setIcon​(org.eclipse.swt.graphics.Image img)
        Description copied from interface: TableCellSWT
        Set the cell's icon
        Specified by:
        setIcon in interface TableCellSWT
        Parameters:
        img - Cell's new icon
        Returns:
        true if the icon will be used
      • getIcon

        public org.eclipse.swt.graphics.Image getIcon()
        Specified by:
        getIcon in interface TableCellSWT
        Returns:
      • setGraphic

        public boolean setGraphic​(org.eclipse.swt.graphics.Image img)
        Specified by:
        setGraphic in interface TableCellSWT
      • setGraphic

        public boolean setGraphic​(Graphic img)
        Description copied from interface: TableCell
        Sets the image to be drawn.

        From 3.0.1.1, setting the graphic to the same Graphic object will not redraw the image. You need to TableCell.invalidate() the cell if you know the image bits have changed (or you could pass a new Graphic object in each time a new image is generated)

        Previously, setting the graphic to the same object resulted in a repaint. Plugins were naughty and would do this on every refresh, causing horrible repaint slowdowns.

        Specified by:
        setGraphic in interface TableCell
        Parameters:
        img - image to be stored & drawn
        Returns:
        true - image was changed.
        false = image was the same
      • getGraphic

        public Graphic getGraphic()
        Description copied from interface: TableCell
        Retrieve the SWT graphic related to this table item for TableColumn objects of TYPE_GRAPHIC only.
        Specified by:
        getGraphic in interface TableCell
        Returns:
        the Image that is draw in the cell, or null if there is none.
      • getGraphicSWT

        public org.eclipse.swt.graphics.Image getGraphicSWT()
        Specified by:
        getGraphicSWT in interface TableCellSWT
      • isInvisibleAndCanRefresh

        public boolean isInvisibleAndCanRefresh()
      • getBackground

        public int[] getBackground()
        Description copied from interface: TableCell
        Get the background color of the cell
        Specified by:
        getBackground in interface TableCell
        Returns:
        array containing red, green, and blue color. Might be null
      • getForeground

        public int[] getForeground()
        Description copied from interface: TableCell
        Get the foreground color of the cell
        Specified by:
        getForeground in interface TableCell
        Returns:
        array containing red, green, and blue color
      • setForeground

        public boolean setForeground​(int red,
                                     int green,
                                     int blue)
        Description copied from interface: TableCell
        Change the cell's foreground color.

        pass -1 to return color back to default

        Specified by:
        setForeground in interface TableCell
        Parameters:
        red - red value (0 - 255)
        green - green value (0 - 255)
        blue - blue value (0 - 255)
        Returns:
        True - Color changed.
        False - Color was already set.
      • setForeground

        private boolean setForeground​(org.eclipse.swt.graphics.RGB rgb)
      • setForeground

        public boolean setForeground​(int[] rgb)
        Description copied from interface: TableCell
        Change the cell's foreground color
        Specified by:
        setForeground in interface TableCell
        Parameters:
        rgb - int array containing red, green, and blue values, respectively. null to return color back to default
        Returns:
      • setForegroundToErrorColor

        public boolean setForegroundToErrorColor()
        Description copied from interface: TableCell
        Change the cell's foreground color to the user's defined "error" color.
        Specified by:
        setForegroundToErrorColor in interface TableCell
        Returns:
        True - Color changed.
        False - Color was already set.
      • getMouseOffset

        public int[] getMouseOffset()
        Description copied from interface: TableCell
        Return the position of the mouse relative to the cell.
        Specified by:
        getMouseOffset in interface TableCell
        Returns:
        array of 2 containing x and y position position relative to cell. null if cell doesn't have mouse.
      • getObfuscatedText

        public java.lang.String getObfuscatedText()
        Description copied from interface: TableCellCore
        Return the text used when generating diagnostics
        Specified by:
        getObfuscatedText in interface TableCellCore
        Returns:
      • useSimpleSortValue

        public boolean useSimpleSortValue()
        Description copied from interface: TableCell
        When true, the user is sorting by multiple columns, and you should set the cell's sort value based solely on your column's data.
        Specified by:
        useSimpleSortValue in interface TableCell
      • getData

        public java.lang.Object getData​(java.lang.Object key)
        Specified by:
        getData in interface TableCellCore
      • setData

        public void setData​(java.lang.Object key,
                            java.lang.Object data)
        Specified by:
        setData in interface TableCellCore