java.lang.Object
org.eclipse.jface.viewers.Viewer
org.eclipse.jface.viewers.ContentViewer
org.eclipse.jface.viewers.StructuredViewer
org.eclipse.jface.viewers.ColumnViewer
org.eclipse.jface.viewers.AbstractTableViewer
org.eclipse.jface.viewers.TableViewer
com.amalgamasimulation.desktop.ui.tables.Table<T>
All Implemented Interfaces:
com.amalgamasimulation.viewupdater.SimulationView, org.eclipse.jface.viewers.IInputProvider, org.eclipse.jface.viewers.IInputSelectionProvider, org.eclipse.jface.viewers.IPostSelectionProvider, org.eclipse.jface.viewers.ISelectionProvider
Direct Known Subclasses:
EditableTable, EMFTable, TableView

public class Table<T> extends org.eclipse.jface.viewers.TableViewer implements com.amalgamasimulation.viewupdater.SimulationView
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.eclipse.jface.viewers.StructuredViewer

    org.eclipse.jface.viewers.StructuredViewer.ColorAndFontCollector, org.eclipse.jface.viewers.StructuredViewer.ColorAndFontCollectorWithProviders
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected ColumnViewAdapter<T>
     
    protected static int
     
    protected org.eclipse.swt.widgets.Composite
     
    protected Consumer<org.eclipse.jface.viewers.SelectionChangedEvent>
     

    Fields inherited from class org.eclipse.jface.viewers.Viewer

    WIDGET_DATA_KEY
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Table(org.eclipse.swt.widgets.Composite parent, boolean virtual, List<T> data, int style, boolean checkboxes, boolean syncUpdate, boolean showRowHeader)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addCheckedItemsChangedHandler(Consumer<List<T>> checkedItemsChangedHandler)
    Registers a handler for checked items change events.
    void
    Registers a handler for context menu events.
    void
    addDoubleClickHandler(BiConsumer<T,org.eclipse.jface.viewers.DoubleClickEvent> doubleClickHandler)
    Registers a handler for double-click events on table rows.
    void
    addFilter(org.eclipse.jface.viewers.ViewerFilter filter)
     
    void
    addSelectedItemChangedHandler(Consumer<T> selectedItemChangedHandler)
    Registers a handler for selected item change events.
    void
    checkAllItems(boolean callHandlers)
    Checks all items in the table.
    void
    checkItems(List<T> items)
    Checks the specified items, no triggering change handlers.
    void
    checkItems(List<T> items, boolean callHandlers)
    Checks the specified items, optionally triggering change handlers.
    <E> IColumn<T,E,?>
    column(Function<T,E> extractor)
    Creates a new column with the specified value extractor function.
    <E> IColumn<T,E,?>
    column(Function<T,E> extractor, int index)
    Creates a new column with the specified value extractor function at the given index.
    void
    Copies the visible rows to the system clipboard.
    protected void
    createCheckboxColumn(String name, int width, ColumnViewAdapter<T> columnViewAdapter)
     
    protected void
    createRowHeaderColumn(org.eclipse.swt.graphics.Image imageHeader, int width, ColumnViewAdapter<T> columnViewAdapter)
     
    protected void
    fireSelectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent event)
     
    Returns the list of currently checked items.
    getData(int itemIndex)
    Returns the data object at the specified row index.
    getEditingMenuItems(IColumn<T,?,?> column, T clickedElement)
     
    int
    Returns the index of the first selected row.
    getItem(int rowIndex)
    Returns the item at the specified row index.
    getTypeCheckBox(boolean checkbox)
     
    List<? extends IColumn<T,?,?>>
     
    org.eclipse.jface.viewers.ViewerRow
    getViewerRow(org.eclipse.swt.widgets.Widget item)
     
    protected void
    inputChanged(Object input, Object oldInput)
     
    protected void
    internalRefresh(Object element, boolean updateLabels)
     
    protected void
     
    boolean
     
    boolean
    Returns whether quick filtering is allowed for this table.
    boolean
     
    void
    removeCheckedItemsChangedHandler(Consumer<List<T>> checkedItemsChangedHandler)
    Unregisters a previously registered checked items change handler.
    void
    removeColumn(int index)
    Removes the column at the specified index.
    <R extends IColumn<T, ?, R>>
    void
    removeColumn(R viewerColumnDescriptor)
    Removes the specified column from the table.
    void
    Unregisters a previously registered context menu handler.
    void
    removeDoubleClickHandler(BiConsumer<T,org.eclipse.jface.viewers.DoubleClickEvent> doubleClickHandler)
    Unregisters a previously registered double-click handler.
    void
    removeFilter(org.eclipse.jface.viewers.ViewerFilter filter)
     
    void
    removeSelectedItemChangedHandler(Consumer<T> selectedItemChangedHandler)
    Unregisters a previously registered selected item change handler.
    void
    setData(List<T> data)
     
    void
    setMaxCheckedItemsCount(int maxCheckedItemsCount)
    Sets the maximum number of items that can be checked simultaneously.
    void
    setQuickFilterAllowed(boolean isQuickFilterAllowed)
    Enables or disables quick filtering for the table.
    void
    setSelectedRowIndex(int rowIndex)
    Selects the row at the specified index.
    void
    setSelectionChangedConsumer(Consumer<org.eclipse.jface.viewers.SelectionChangedEvent> selectionChangedConsumer)
     
    void
    setSortingAllowed(boolean isSortingAllowed)
    Enables or disables column sorting for the table.
    void
    showDefaultContextMenu(boolean showDefaultContextMenu)
    Controls whether the default context menu is shown.
    static org.eclipse.swt.graphics.Color
    swtColor(Color color)
     
    void
    uncheckAllItems(boolean callHandlers)
    Unchecks all items in the table.
    void
     
    void
     

    Methods inherited from class org.eclipse.jface.viewers.TableViewer

    createViewerEditor, doClear, doClearAll, doDeselectAll, doFindItem, doGetColumn, doGetColumnCount, doGetItem, doGetItemCount, doGetItems, doGetSelection, doGetSelectionIndices, doIndexOf, doRemove, doRemove, doRemoveAll, doResetItem, doSelect, doSetItemCount, doSetSelection, doSetSelection, doShowItem, doShowSelection, getControl, getItemAt, getTable, getViewerRowFromItem, internalCreateNewRowPart, refresh, refresh, remove, setSelection

    Methods inherited from class org.eclipse.jface.viewers.AbstractTableViewer

    add, add, assertContentProviderType, clear, contains, doFindInputItem, doUpdateItem, getColumnViewerOwner, getElementAt, getLabelProvider, getRawChildren, getSelectionFromWidget, handleDispose, hookControl, indexForElement, insert, internalRefresh, remove, replace, reveal, setContentProvider, setItemCount, setSelectionToWidget

    Methods inherited from class org.eclipse.jface.viewers.ColumnViewer

    applyEditorValue, cancelEditing, checkBusy, disassociate, editElement, firePostSelectionChanged, getCell, getCellEditors, getCellModifier, getColumnProperties, getColumnViewerEditor, getItem, getLabelProvider, getSortedChildren, getViewerRow, handleDoubleSelect, hookEditingSupport, isBusy, isCellEditorActive, isExpandableNode, refresh, refresh, setBusy, setCellEditors, setCellModifier, setColumnProperties, setColumnViewerEditor, setDisplayIncrementally, setLabelProvider, triggerEditorActivationEvent, update, updateSelection

    Methods inherited from class org.eclipse.jface.viewers.StructuredViewer

    addDoubleClickListener, addDragSupport, addDropSupport, addOpenListener, addPostSelectionChangedListener, assertElementsNotNull, associate, buildLabel, equals, filter, findItem, findItems, fireDoubleClick, fireOpen, getColorAndFontCollector, getComparator, getComparer, getFilteredChildren, getFilters, getRoot, getSelection, getSorter, getStructuredSelection, handleInvalidSelection, handleLabelProviderChanged, handleOpen, handlePostSelect, handleSelect, hasFilters, internalUpdate, mapElement, needsRefilter, preservingSelection, refresh, refresh, refreshItem, removeDoubleClickListener, removeOpenListener, removePostSelectionChangedListener, resetFilters, setComparator, setComparer, setFilters, setInput, setSelectionToWidget, setSorter, setUseHashlookup, testFindItem, testFindItems, unmapAllElements, unmapElement, unmapElement, update, updateItem, usingElementMap

    Methods inherited from class org.eclipse.jface.viewers.ContentViewer

    getContentProvider, getInput, labelProviderChanged

    Methods inherited from class org.eclipse.jface.viewers.Viewer

    addHelpListener, addSelectionChangedListener, fireHelpRequested, getData, handleHelpRequest, removeHelpListener, removeSelectionChangedListener, scrollDown, scrollUp, setData, setSelection

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface org.eclipse.jface.viewers.ISelectionProvider

    addSelectionChangedListener, removeSelectionChangedListener, setSelection
  • Field Details

    • DEFAULT_TABLE_COLUMN_WIDTH

      protected static int DEFAULT_TABLE_COLUMN_WIDTH
    • parent

      protected org.eclipse.swt.widgets.Composite parent
    • columnViewAdapter

      protected ColumnViewAdapter<T> columnViewAdapter
    • selectionChangedConsumer

      protected Consumer<org.eclipse.jface.viewers.SelectionChangedEvent> selectionChangedConsumer
  • Constructor Details

    • Table

      protected Table(org.eclipse.swt.widgets.Composite parent, boolean virtual, List<T> data, int style, boolean checkboxes, boolean syncUpdate, boolean showRowHeader)
  • Method Details

    • getTypeCheckBox

      protected ColumnViewAdapter.TypeCheckBox getTypeCheckBox(boolean checkbox)
    • createRowHeaderColumn

      protected void createRowHeaderColumn(org.eclipse.swt.graphics.Image imageHeader, int width, ColumnViewAdapter<T> columnViewAdapter)
    • createCheckboxColumn

      protected void createCheckboxColumn(String name, int width, ColumnViewAdapter<T> columnViewAdapter)
    • getEditingMenuItems

      protected List<ColumnViewAdapter.MenuItemDescriptor> getEditingMenuItems(IColumn<T,?,?> column, T clickedElement)
    • getViewerRow

      public org.eclipse.jface.viewers.ViewerRow getViewerRow(org.eclipse.swt.widgets.Widget item)
    • getData

      public T getData(int itemIndex)
      Returns the data object at the specified row index.
      Parameters:
      itemIndex - the row index in the table (considering filtering)
      Returns:
      the data object, or null if the index is invalid
    • fireSelectionChanged

      protected void fireSelectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent event)
      Overrides:
      fireSelectionChanged in class org.eclipse.jface.viewers.Viewer
    • addFilter

      public void addFilter(org.eclipse.jface.viewers.ViewerFilter filter)
      Overrides:
      addFilter in class org.eclipse.jface.viewers.StructuredViewer
    • removeFilter

      public void removeFilter(org.eclipse.jface.viewers.ViewerFilter filter)
      Overrides:
      removeFilter in class org.eclipse.jface.viewers.StructuredViewer
    • inputChanged

      protected void inputChanged(Object input, Object oldInput)
      Overrides:
      inputChanged in class org.eclipse.jface.viewers.AbstractTableViewer
    • column

      public <E> IColumn<T,E,?> column(Function<T,E> extractor, int index)
      Creates a new column with the specified value extractor function at the given index.
      Type Parameters:
      E - the type of the column value
      Parameters:
      extractor - function that extracts the column value from a row object
      index - the position to insert the column (-1 for adding to the first position)
      Returns:
      the created column descriptor for further configuration
    • column

      public <E> IColumn<T,E,?> column(Function<T,E> extractor)
      Creates a new column with the specified value extractor function. The column is added to the first position
      Type Parameters:
      E - the type of the column value
      Parameters:
      extractor - function that extracts the column value from a row object
      Returns:
      the created column descriptor for further configuration
    • invalidateEditors

      protected void invalidateEditors()
    • setSelectionChangedConsumer

      public void setSelectionChangedConsumer(Consumer<org.eclipse.jface.viewers.SelectionChangedEvent> selectionChangedConsumer)
    • removeColumn

      public void removeColumn(int index)
      Removes the column at the specified index.
      Parameters:
      index - the index of the column to remove
    • removeColumn

      public <R extends IColumn<T, ?, R>> void removeColumn(R viewerColumnDescriptor)
      Removes the specified column from the table.
      Type Parameters:
      R - the column type to remove
      Parameters:
      viewerColumnDescriptor - the column descriptor to remove
    • swtColor

      public static org.eclipse.swt.graphics.Color swtColor(Color color)
    • addCheckedItemsChangedHandler

      public void addCheckedItemsChangedHandler(Consumer<List<T>> checkedItemsChangedHandler)
      Registers a handler for checked items change events. The handler is invoked whenever the set of checked items changes.
      Parameters:
      checkedItemsChangedHandler - the consumer accepting the list of checked items
    • removeCheckedItemsChangedHandler

      public void removeCheckedItemsChangedHandler(Consumer<List<T>> checkedItemsChangedHandler)
      Unregisters a previously registered checked items change handler.
      Parameters:
      checkedItemsChangedHandler - the handler to remove
    • addContextMenuHandler

      public void addContextMenuHandler(Consumer<ColumnViewAdapter.ContextMenuArgs<T>> contextMenuHandler)
      Registers a handler for context menu events. The handler will be invoked when a context menu is requested on a table cell.
      Parameters:
      contextMenuHandler - the consumer to handle ColumnViewAdapter.ContextMenuArgs events
    • removeContextMenuHandler

      public void removeContextMenuHandler(Consumer<ColumnViewAdapter.ContextMenuArgs<T>> contextMenuHandler)
      Unregisters a previously registered context menu handler.
      Parameters:
      contextMenuHandler - the consumer to remove from the event handlers list
    • addSelectedItemChangedHandler

      public void addSelectedItemChangedHandler(Consumer<T> selectedItemChangedHandler)
      Registers a handler for selected item change events.
      Parameters:
      selectedItemChangedHandler - the consumer accepting the newly selected item
    • removeSelectedItemChangedHandler

      public void removeSelectedItemChangedHandler(Consumer<T> selectedItemChangedHandler)
      Unregisters a previously registered selected item change handler.
      Parameters:
      selectedItemChangedHandler - the handler to remove
    • addDoubleClickHandler

      public void addDoubleClickHandler(BiConsumer<T,org.eclipse.jface.viewers.DoubleClickEvent> doubleClickHandler)
      Registers a handler for double-click events on table rows.
      Parameters:
      doubleClickHandler - the handler accepting the clicked element and the event
    • removeDoubleClickHandler

      public void removeDoubleClickHandler(BiConsumer<T,org.eclipse.jface.viewers.DoubleClickEvent> doubleClickHandler)
      Unregisters a previously registered double-click handler.
      Parameters:
      doubleClickHandler - the handler to remove
    • setSortingAllowed

      public void setSortingAllowed(boolean isSortingAllowed)
      Enables or disables column sorting for the table.
      Parameters:
      isSortingAllowed - true to allow sorting, false to disable it
    • setData

      public void setData(List<T> data)
    • getFirstSelectedRowIndex

      public int getFirstSelectedRowIndex()
      Returns the index of the first selected row.
      Returns:
      the row index, or -1 if no row is selected
    • setSelectedRowIndex

      public void setSelectedRowIndex(int rowIndex)
      Selects the row at the specified index.
      Parameters:
      rowIndex - the index of the row to select
    • getCheckedItems

      public List<T> getCheckedItems()
      Returns the list of currently checked items.
      Returns:
      an immutable list of checked items (empty list if none)
    • checkItems

      public void checkItems(List<T> items)
      Checks the specified items, no triggering change handlers.
      Parameters:
      items - the list of items to check
    • checkItems

      public void checkItems(List<T> items, boolean callHandlers)
      Checks the specified items, optionally triggering change handlers.
      Parameters:
      items - the list of items to check
      callHandlers - true to trigger change handlers, false otherwise
    • checkAllItems

      public void checkAllItems(boolean callHandlers)
      Checks all items in the table.
      Parameters:
      callHandlers - true to trigger change handlers, false otherwise
    • uncheckAllItems

      public void uncheckAllItems(boolean callHandlers)
      Unchecks all items in the table.
      Parameters:
      callHandlers - true to trigger change handlers, false otherwise
    • isQuickFilterAllowed

      public boolean isQuickFilterAllowed()
      Returns whether quick filtering is allowed for this table.
      Returns:
      true if quick filtering is allowed, false otherwise
    • setQuickFilterAllowed

      public void setQuickFilterAllowed(boolean isQuickFilterAllowed)
      Enables or disables quick filtering for the table.
      Parameters:
      isQuickFilterAllowed - true to allow quick filtering, false to disable it
    • setMaxCheckedItemsCount

      public void setMaxCheckedItemsCount(int maxCheckedItemsCount)
      Sets the maximum number of items that can be checked simultaneously.
      Parameters:
      maxCheckedItemsCount - the maximum allowed checked items count
    • getViewerColumnDescriptors

      public List<? extends IColumn<T,?,?>> getViewerColumnDescriptors()
    • isDisposed

      public boolean isDisposed()
      Specified by:
      isDisposed in interface com.amalgamasimulation.viewupdater.SimulationView
    • isShown

      public boolean isShown()
      Specified by:
      isShown in interface com.amalgamasimulation.viewupdater.SimulationView
    • copyToClipboard

      public void copyToClipboard()
      Copies the visible rows to the system clipboard.
    • updateContent

      public void updateContent()
      Specified by:
      updateContent in interface com.amalgamasimulation.viewupdater.SimulationView
    • updateView

      public void updateView()
      Specified by:
      updateView in interface com.amalgamasimulation.viewupdater.SimulationView
    • getItem

      public T getItem(int rowIndex)
      Returns the item at the specified row index. Does not work for VIRTUAL table
      Parameters:
      rowIndex - the row index
      Returns:
      the item at that row, or null if index is invalid
    • internalRefresh

      protected void internalRefresh(Object element, boolean updateLabels)
      Overrides:
      internalRefresh in class org.eclipse.jface.viewers.AbstractTableViewer
    • showDefaultContextMenu

      public void showDefaultContextMenu(boolean showDefaultContextMenu)
      Controls whether the default context menu is shown.
      Parameters:
      showDefaultContextMenu - true to show the default context menu, false to hide it