Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Remote Application Platform (RAP) » How to Display Image in SWT TableColumn Sortable Column(SWT Windows 10 Pro)
How to Display Image in SWT TableColumn Sortable Column [message #1798177] Tue, 13 November 2018 16:16 Go to next message
Robin Clark is currently offline Robin ClarkFriend
Messages: 5
Registered: November 2017
Junior Member
I want to display an image in a table column header. The problem that I have is that the image disappears when the column is sorted. I am working in a Windows 10 Pro. I am using the following version of eclipse:
Eclipse for RCP and RAP Developers

Version: Oxygen.3a Release (4.7.3a)
Build id: 20180405-1200

I am having troubles finding examples of implementing a custom drawn tablecolumn header that allows for images to be displayed along with the sorting icon.

Ideally I would like to display the image on the right side of the column instead of on the left.

Any help would be appreciated.


import java.text.Collator;
import java.util.Locale;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;

public class RobinTest2 {

    public static void main(String[] args) {
	Display display = new Display();
	Shell shell = new Shell(display);
	shell.setLayout(new FillLayout());
	final Table table = new Table(shell, SWT.BORDER);
	table.setHeaderVisible(true);
	final TableColumn column1 = new TableColumn(table, SWT.NONE);
	column1.setText("Column 1");
	final Image image = display.getSystemImage(SWT.ICON_QUESTION);
	column1.setImage(image);
	final TableColumn column2 = new TableColumn(table, SWT.NONE);
	column2.setImage(image);
	column2.setText("Column 2");
	TableItem item = new TableItem(table, SWT.NONE);
	item.setText(new String[] { "a", "3" });
	item = new TableItem(table, SWT.NONE);
	item.setText(new String[] { "b", "2" });
	item = new TableItem(table, SWT.NONE);
	item.setText(new String[] { "c", "1" });
	column1.setWidth(100);
	column2.setWidth(100);
	Listener sortListener = e -> {
	    TableItem[] items = table.getItems();
	    Collator collator = Collator.getInstance(Locale.getDefault());
	    TableColumn column = (TableColumn) e.widget;
	    int index = column == column1 ? 0 : 1;
	    for (int i = 1; i < items.length; i++) {
		String value1 = items[i].getText(index);
		for (int j = 0; j < i; j++) {
		    String value2 = items[j].getText(index);
		    if (collator.compare(value1, value2) < 0) {
			String[] values = { items[i].getText(0), items[i].getText(1) };
			items[i].dispose();
			TableItem item1 = new TableItem(table, SWT.NONE, j);
			item1.setText(values);
			items = table.getItems();
			break;
		    }
		}
	    }
	    table.setSortColumn(column);
	};
	column1.addListener(SWT.Selection, sortListener);
	column2.addListener(SWT.Selection, sortListener);
	table.setSortColumn(column1);
	table.setSortDirection(SWT.UP);
	shell.setSize(shell.computeSize(SWT.DEFAULT, SWT.DEFAULT).x, 300);
	shell.open();
	while (!shell.isDisposed()) {
	    if (!display.readAndDispatch())
		display.sleep();
	}
	display.dispose();
    }

}

[Updated on: Tue, 13 November 2018 16:40]

Report message to a moderator

Re: How to Display Image in SWT TableColumn Sortable Column [message #1800266 is a reply to message #1798177] Sat, 22 December 2018 10:24 Go to previous message
Linuxhippy Mising name is currently offline Linuxhippy Mising nameFriend
Messages: 36
Registered: July 2009
Member
wrong forum - this one is specific to RAP (SWT port for the web).
Previous Topic:Are VIRTUAL GridTableViewer supposed to work?
Next Topic:Problems to build working war file
Goto Forum:
  


Current Time: Mon Dec 09 02:39:29 GMT 2019

Powered by FUDForum. Page generated in 0.02110 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top