Java tutorial
/******************************************************************************* * Copyright (C) 2005 - 2014 TIBCO Software Inc. All rights reserved. * http://www.jaspersoft.com. * * Unless you have purchased a commercial license agreement from Jaspersoft, * the following license terms apply: * * 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 ******************************************************************************/ package com.jaspersoft.studio.server.properties; import java.util.List; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.ICellModifier; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TableLayout; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.ListItem; import com.jaspersoft.studio.properties.view.TabbedPropertySheetPage; import com.jaspersoft.studio.swt.widgets.table.DeleteButton; import com.jaspersoft.studio.swt.widgets.table.INewElement; import com.jaspersoft.studio.swt.widgets.table.ListContentProvider; import com.jaspersoft.studio.swt.widgets.table.ListOrderButtons; import com.jaspersoft.studio.swt.widgets.table.NewButton; import com.jaspersoft.studio.utils.Misc; public class ListOfValuesSection extends ASection { private final class TLabelProvider extends LabelProvider implements ITableLabelProvider { public String getColumnText(Object element, int columnIndex) { ListItem dto = (ListItem) element; if (dto != null) switch (columnIndex) { case 0: return dto.getLabel(); case 1: if (dto.getValue() != null) return dto.getValue().toString(); } return ""; //$NON-NLS-1$ } public Image getColumnImage(Object element, int columnIndex) { return null; } } private Table table; private TableViewer tableViewer; private NewButton bnew; private DeleteButton bdel; private ListOrderButtons border; @Override protected void createSectionControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) { buildTable(parent); Composite bGroup = new Composite(parent, SWT.NONE); bGroup.setLayout(new GridLayout(1, false)); bGroup.setLayoutData(new GridData(GridData.FILL_VERTICAL)); bGroup.setBackground(parent.getBackground()); bnew = new NewButton(); bnew.createNewButtons(bGroup, tableViewer, new INewElement() { public Object newElement(List<?> input, int pos) { return new ListItem(); } }); bdel = new DeleteButton(); bdel.createDeleteButton(bGroup, tableViewer); border = new ListOrderButtons(); border.createOrderButtons(bGroup, tableViewer); } private void buildTable(Composite composite) { table = new Table(composite, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION); GridData gd = new GridData(GridData.FILL_BOTH); gd.minimumHeight = 200; table.setLayoutData(gd); table.setHeaderVisible(true); table.setLinesVisible(true); tableViewer = new TableViewer(table); attachContentProvider(tableViewer); attachLabelProvider(tableViewer); attachCellEditors(tableViewer, table); TableLayout tlayout = new TableLayout(); tlayout.addColumnData(new ColumnWeightData(50)); tlayout.addColumnData(new ColumnWeightData(50)); table.setLayout(tlayout); TableColumn[] column = new TableColumn[2]; column[0] = new TableColumn(table, SWT.NONE); column[0].setText("Name"); column[1] = new TableColumn(table, SWT.NONE); column[1].setText("Value"); for (int i = 0, n = column.length; i < n; i++) column[i].pack(); } private void attachLabelProvider(TableViewer viewer) { viewer.setLabelProvider(new TLabelProvider()); } private void attachContentProvider(TableViewer viewer) { viewer.setContentProvider(new ListContentProvider()); } private void attachCellEditors(final TableViewer viewer, Composite parent) { viewer.setCellModifier(new ICellModifier() { public boolean canModify(Object element, String property) { if (property.equals("KEY")) //$NON-NLS-1$ return true; if (property.equals("VALUE")) //$NON-NLS-1$ return true; return false; } public Object getValue(Object element, String property) { ListItem mi = (ListItem) element; if (property.equals("KEY"))//$NON-NLS-1$ return Misc.nvl(mi.getLabel()); if (property.equals("VALUE"))//$NON-NLS-1$ return Misc.nvl(mi.getValue(), ""); return null; } public void modify(Object element, String property, Object value) { TableItem ti = (TableItem) element; ListItem mi = (ListItem) ti.getData(); if (property.equals("KEY")) //$NON-NLS-1$ mi.setLabel((String) value); if (property.equals("VALUE")) //$NON-NLS-1$ mi.setValue((String) value); tableViewer.update(element, new String[] { property }); tableViewer.refresh(); } }); viewer.setCellEditors(new CellEditor[] { new TextCellEditor(parent), new TextCellEditor(parent) }); viewer.setColumnProperties(new String[] { "KEY", "VALUE" }); //$NON-NLS-1$ } @Override public void enableFields(boolean enable) { table.setEnabled(enable); bnew.setEnabled(enable); border.setEnabled(enable); bdel.setEnabled(enable); } @Override protected void bind() { // IObservableList observableList = Observables.staticObservableList(res // .getValue().getListOfValues()); // ObservableListContentProvider contentProvider = new // ObservableListContentProvider(); // // tableViewer.setContentProvider(contentProvider); tableViewer.setInput(res.getValue().getListOfValues()); } }