/******************************************************************************* * Copyright (c) 2011 Luis Carlos Moreira da Costa. * 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: * Luis Carlos Moreira da Costa (tcljava at gmail dot com) - initial API and implementation *******************************************************************************/ package org.mihalis.opal.dynamictablecolumns; import java.util.Random; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TableItem; /** * * DynamicColumnsSnippet. * */ public final class DynamicTableColumnsSnippet { private static int idCount = 1; private static String[] firstNameSet = { "Luis Carlos", "Laurent", "Getulio", "Nicholas" }; private static String[] lastNameSet = { "Moreira da Costa", "Caron", "Moreira da Costa", "Rocha da Costa" }; private static String[] birthDateSet = { "1967", "1974", "1939", "2001" }; private static Shell shell; private static DynamicTable tblDyn; private static DynamicTableColumn tblcId; private static DynamicTableColumn tblcFirstName; private static DynamicTableColumn tblcLastName; private static DynamicTableColumn tblcAge; private static Composite pnlButtons; private static Button btnAdd; /** * @param args */ public static void main(final String[] args) { final Display display = new Display(); shell = new Shell(display); shell.setText("DynamicColumns SWT Usage Snippet"); final GridLayout layout = new GridLayout(2, false); layout.marginWidth = 0; layout.marginHeight = 0; shell.setLayout(layout); createContents(); // Initial Content createPerson(0); createPerson(1); createPerson(2); createPerson(3); createPerson(3); createPerson(3); shell.open(); shell.pack(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } /** * Create contents */ private static void createContents() { // Create a Dynamic Table tblDyn = new DynamicTable(shell, SWT.BORDER | SWT.FULL_SELECTION); tblDyn.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); tblDyn.setHeaderVisible(true); tblDyn.setLinesVisible(true); { tblcId = new DynamicTableColumn(tblDyn, SWT.NONE); tblcId.setText("Id"); tblcId.setWidth("25px"); tblcFirstName = new DynamicTableColumn(tblDyn, SWT.NONE); tblcFirstName.setText("First Name"); tblcFirstName.setWidth("50%", "100px"); tblcLastName = new DynamicTableColumn(tblDyn, SWT.NONE); tblcLastName.setText("Last Name"); tblcLastName.setWidth("50%", "100px"); tblcAge = new DynamicTableColumn(tblDyn, SWT.NONE); tblcAge.setText("Age"); tblcAge.setWidth("60px"); } pnlButtons = new Composite(shell, SWT.NONE); pnlButtons.setLayout(new GridLayout(1, false)); pnlButtons.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true, 1, 1)); { btnAdd = new Button(pnlButtons, SWT.NONE); btnAdd.setText("Add"); btnAdd.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent e) { final TableItem tbli = new TableItem(tblDyn, SWT.NONE); tbli.setText(0, Integer.toString(idCount++)); tbli.setText(1, firstNameSet[new Random().nextInt(4)]); tbli.setText(2, lastNameSet[new Random().nextInt(4)]); tbli.setText(3, birthDateSet[new Random().nextInt(4)]); tblDyn.layout(); } }); } } /** * Create person * * @param i int */ private static void createPerson(final int i) { final TableItem tbli = new TableItem(tblDyn, SWT.NONE); tbli.setText(0, Integer.toString(idCount++)); tbli.setText(1, firstNameSet[i]); tbli.setText(2, lastNameSet[i]); tbli.setText(3, birthDateSet[i]); } }