Java tutorial
/******************************************************************************* * Copyright (c) 2013 EclipseSource and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * EclipseSource - initial API and implementation ******************************************************************************/ package org.eclipse.rap.examples.pages; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.jface.viewers.ViewerColumn; import org.eclipse.rap.examples.ExampleUtil; import org.eclipse.rap.examples.IExamplePage; import org.eclipse.rap.examples.pages.internal.Person; import org.eclipse.rap.examples.pages.internal.Persons; import org.eclipse.rap.examples.pages.internal.PersonsTemplate; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.client.service.UrlLauncher; import org.eclipse.rap.rwt.widgets.DialogUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; public class RowTemplateExample implements IExamplePage { private final class SelectionListener extends SelectionAdapter { private final Composite parent; private SelectionListener(Composite parent) { this.parent = parent; } @Override public void widgetSelected(SelectionEvent e) { if ("phone".equals(e.text)) { TableItem item = (TableItem) e.item; alert("Dialing...", "Calling " + item.getText(2) + "!"); } else if ("mail".equals(e.text)) { String mail = ((TableItem) e.item).getText(3); String firstName = ((TableItem) e.item).getText(0); UrlLauncher launcher = RWT.getClient().getService(UrlLauncher.class); if (launcher != null) { launcher.openURL("mailto:" + mail + "?subject=RAP%20Rocks!&body=Hello%20" + firstName); } else { alert("Now mailing to...", mail); } } else if ("arrow".equals(e.text)) { TableItem item = (TableItem) e.item; String firstName = item.getText(0); alert("Nothing here", "Lets edit " + firstName + "!"); } } private void alert(String title, String message) { MessageBox messageBox = new MessageBox(parent.getShell(), SWT.ICON_INFORMATION); messageBox.setText(title); messageBox.setMessage(message); DialogUtil.open(messageBox, null); } } public void createControl(Composite parent) { parent.setLayout(ExampleUtil.createMainLayout(1)); parent.setLayout(ExampleUtil.createGridLayout(1, true, true, true)); parent.setLayoutData(ExampleUtil.createFillData()); createTable(parent); } private void createTable(Composite comp) { TableViewer tableViewer = new TableViewer(comp, SWT.FULL_SELECTION | SWT.BORDER); tableViewer.setContentProvider(new ArrayContentProvider()); configColumnViewer(tableViewer); Table table = tableViewer.getTable(); table.addSelectionListener(new SelectionListener(comp)); table.setData(RWT.CUSTOM_ITEM_HEIGHT, Integer.valueOf(56)); GridData tableLayoutData = ExampleUtil.createFillData(); tableLayoutData.verticalIndent = 10; table.setLayoutData(tableLayoutData); table.setData(RWT.ROW_TEMPLATE, new PersonsTemplate()); } private void configColumnViewer(TableViewer viewer) { addFirstNameColumn(viewer); addLastNameColumn(viewer); addPhoneColumn(viewer); addMailColumn(viewer); viewer.setInput(Persons.get(viewer.getControl().getDisplay())); } private void addFirstNameColumn(final ColumnViewer viewer) { ViewerColumn firstNameColumn = createViewerColumn(viewer, "First Name", 200); firstNameColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { Person p = (Person) element; return p.getFirstName(); } @Override public Image getImage(Object element) { Person p = (Person) element; return p.getImage(); } }); } private void addLastNameColumn(ColumnViewer viewer) { ViewerColumn lastNameColumn = createViewerColumn(viewer, "Last Name", 200); lastNameColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { Person p = (Person) element; return p.getLastName(); } }); } private void addPhoneColumn(ColumnViewer viewer) { ViewerColumn pohoneColumn = createViewerColumn(viewer, "Phone", 130); pohoneColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { Person p = (Person) element; return p.getPhone(); } }); } private void addMailColumn(ColumnViewer viewer) { ViewerColumn pohoneColumn = createViewerColumn(viewer, "E-Mail", 180); pohoneColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { Person p = (Person) element; return p.getMail(); } }); } private ViewerColumn createViewerColumn(final ColumnViewer viewer, String name, int width) { ViewerColumn viewerColumn = null; if (viewer instanceof TableViewer) { TableViewer tableViewer = (TableViewer) viewer; TableViewerColumn tableColumn = new TableViewerColumn(tableViewer, SWT.NONE); tableColumn.getColumn().setWidth(width); tableColumn.getColumn().setText(name); viewerColumn = tableColumn; } else if (viewer instanceof TreeViewer) { TreeViewer treeViewer = (TreeViewer) viewer; TreeViewerColumn treeColumn = new TreeViewerColumn(treeViewer, SWT.NONE); treeColumn.getColumn().setWidth(width); treeColumn.getColumn().setText(name); viewerColumn = treeColumn; } return viewerColumn; } }