/******************************************************************************* * Copyright (c) 2007 Jeff Mesnil * 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 *******************************************************************************/ package net.jmesnil.jmx.ui.internal.controls; import net.jmesnil.jmx.ui.extensions.IAttributeControlFactory; import net.jmesnil.jmx.ui.extensions.IWritableAttributeHandler; import net.jmesnil.jmx.ui.internal.StringUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.forms.widgets.FormToolkit; public abstract class AbstractTabularControlFactory implements IAttributeControlFactory { public Control createControl(final Composite parent, final FormToolkit toolkit, final boolean writable, final String type, final Object value, final IWritableAttributeHandler handler) { int style = SWT.SINGLE | SWT.FULL_SELECTION; Table table = null; if (toolkit != null) { table = toolkit.createTable(parent, style); toolkit.paintBordersFor(parent); } else { table = new Table(parent, style | SWT.BORDER); } GridData gd = new GridData(GridData.FILL_BOTH); gd.heightHint = 20; gd.widthHint = 100; table.setLayoutData(gd); if (value == null) { TableColumn column = new TableColumn(table, SWT.LEFT); column.setWidth(200); column.setMoveable(false); column.setResizable(true); table.setHeaderVisible(false); table.setLinesVisible(getVisibleLines()); TableItem item = new TableItem(table, SWT.NONE); item.setText(StringUtils.NULL); } else { fillTable(table, value); table.setHeaderVisible(getVisibleHeader()); table.setLinesVisible(getVisibleLines()); } return table; } protected abstract void fillTable(Table table, Object value); protected abstract boolean getVisibleHeader(); protected abstract boolean getVisibleLines(); }