What are some SWT datagrids/tables? - eclipse

I need to be able to display some data in Eclipse in a grid/table control... I need things like paging, multiple column sorting, column choosing, etc. There is an SWT Table and the Nebula project has a grid in alpha.
Does what I need exist? 3rd party maybe? Doesn't have to be free, we can pay for the functionality.

I haven't seen those features implemented in a reusable widget that I can think of, they are more application-level features.
Paging:
If you were to use the JFace-type viewers (SWT Table or Nebula Grid both support this style of MVC architecture, as do some others mentioned in this question), it should be possible to implement paging in the content provider, just by setting some custom offset into your dataset and then refreshing the grid.
Multiple Column Sorting:
You can do this, it just needs an implementation of the correct table sorting interface. You get passed two rows to compare, and you can compare whichever columns you like in the sorting algorithm. Again though, the interface for actually choosing which columns to sort is down to you.
Column Choosing:
This requires a grid control with cell selection. Nebula is one, SWT Table isn't. If cell selection is available, this is just a matter of catching the correct selection event (clicking on a header probably) and iterating over your rows to select the correct cells.

There is also a new "rising star" on the widget sky called "nattable 2.0". It is an opensource project and the development team is very responsive. You should take a look at nattable.org ...

You could use the facilities of table presentation offered by the BIRT plugin, that is if you are really advance table layout needs.
(source: theserverside.com)
(otherwise the classic SWT TableViewer offers already some of the feature you are after
(source: richclient2.eu) )

Related

How to implement a image list control with SWT?

Does anybody have any idea on how to easily implement a image list(like the windows explorer with medium icons) control with swt? it seems like that it could be done easily with CListCtrl in c++ on windows, but does not seem to be easy with swt? any hints are appreciated!
Up to me, you need to create your own widget (check e.g. http://www.snip2code.com/Snippet/11489/Custom-SWT-List-Box) and add composite items to your custom list.
If vertical-only scrolling is enough, I suggest you rely on a single column TableViewer. This is what I did in a project where I needed a gallery-like window allowing the user to pick a graphical component based on displayed thumbnails.
You just need to implement the proper TableLabelProvider.getColumnImage and return the desired thumbnail corresponding to your list entry.
That gives a pretty decent list-like rendering.
In addition, TableViewer API is very well documented.

SWT Tree with columns - resizing columns by dragging line

I have a multi-column tree that I really don't want to show column headers (they provide no valuable information in my case and make the layout unnecessarily busy). Unfortunately, I really need to have resizable columns.
How can I make the columns resizable by dragging lines between them?
SWT uses native widgets and this isn't native behavior (at least on platforms that I am familiar with), so there is no built-in mechanism in SWT for doing what you are after. You should be able to simulate this yourself by tracking mouse events, managing the mouse cursor and calling TreeColumn.setWidth() when appropriate.

How to merge table cells in Eclipse RCP Table control?

My question is: I've an Eclipse RCP table in my view. The table has gridlines Visible and everything is fine. But I want all the cells of first row of the table to be merged as a single row in run-time GUI. How can I achieve this functionality ? Please, I don't expect something like adding a text over the first row obstructing it. If any API level functionality or any clues to do this are welcome.
The swt table is a native widget and does not allow you any span, neither in columns nor in rows. Even OwnerDraw (custom cell rendering) does not support this. The only way I see that could allow you to achieve this kind of hack is the swt table editor which allows you to place controls above cells:
http://www.eclipse.org/swt/snippets/#tableeditor
The table editor tracks the position of single cells and positions controls above them. It hides controls when a cell is not in edit mode, show's them when the cell is in edit mode. You'd have to deactivate this default behavior and make sure the controls are always shown - this should be fairly easy.
The more challenging part would be that you'd have to find out how to place the controls above 2 or more (and not a single) cells.
The only swt control I know to support span is the nebula grid. Grid is a custom control (no native widget) and therefore offers far more possibilites.
http://eclipse.org/nebula/widgets/grid/grid.php
http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.swt.nebula/org.eclipse.swt.nebula.snippets/src/org/eclipse/swt/nebula/snippets/grid/GridSnippet2.java?root=Technology_Project&view=co
u can use GC api to do the needs in table. u can span between two columns.
http://www.java2s.com/Tutorial/Java/0280__SWT/Maketextspanmultiplecolumns.htm

GWT implementing-- Sophistication of CellTable behavior, flexibility of CellList look

With a GWT CellTable its possible to add different columns that handle the click event in different ways.
For example lets say we have 3 columns:
an Avatar Image (ImageCell),
a name (TextCell),
checkbox (Checkbox
cell).
Then image adding these events:
When the ImageCell is clicked we can open a popup.
When the checkbox is clicked select the row.
When the name is clicked open the users profile.
With a CellTable it's straight forward to accomplish this.
However what if we wanted a view that doesn't look like a table. The CellTable is tied to a HTML Table for its implementation. Why not allow for a general HTML implementation of the CellTable (behavioral) API.
Using a CellList we can accomplish any view. But the API isn't as sophisticated as the CellTable. It would be cool if we could add something analogs to CellTable 'Columns' to a CellList.
Is there anyway to accomplish this with the current Cell Widgets? I might have over looked something.
Thanks!
I think there are two solutions:
Use a CellTable and style it so that it looks like a CellList. This should be quite straightforward and possible. However you would have to play with the CSS styles a little bit. Best approach would be to use Firebug to change the styles on the fly and see the results instantly
Use a CellList and create a custom cell which renders and handles events for your use case (Avatar, Name and Checkbox). This is more involved but there is a tutorial on the GWT page.
I would probably try to go with solution 2 because it also teaches you how to create custom Cells which might come in handy later on.
Update:
As Thomas suggested in the comments you can use a CompositeCell which wraps 3 different cells. That's probably the easiest way to implement it.

eclipse rcp : more powerful table widget?

It seems swt table does't allow us to operate on multiple cells ?My application need a feature like this "select a range of cells, then copy cell text to excel, or paste text into cells".I think this will be a handy feature.
Any solution on this ?
best regards
Take a look at the nat table component, see http://www.nattable.org/drupal/
This component has many features that are not covered by the basic SWT table widget
For people reaching this, NatTable has been moved to Eclipse Nebula.
https://eclipse.org/nebula
It also contains Grid and XViewer as table alternatives.