/******************************************************************************* * Copyright (c) 2009, 2010 Progress Software Corporation. * 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 org.fusesource.tools.messaging.ui; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.fusesource.tools.messaging.IConstants; public class DefaultMessageTableViewer extends TableViewer implements TableModel { private String prefKey; protected String columnString = IConstants.EMPTY_STRING; public DefaultMessageTableViewer(Composite parent, String prefKey) { this(parent, SWT.FULL_SELECTION | SWT.MULTI, prefKey); } public DefaultMessageTableViewer(Composite parent, int style, String prefKey) { super(parent, style); addListeners(); this.prefKey = prefKey; } public DefaultMessageTableViewer(Table table) { super(table); } private void addListeners() { getTable().addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { onDispose(); } }); } protected int getDefaultWidth() { return 1000; } public String getDefaultPreferenceValue() { return IConstants.EMPTY_STRING; } public String getPreferenceKey() { return prefKey; } public void setPreferenceKey(String prefKey) { this.prefKey = prefKey; } public void removeAll() { TableColumn[] tableColumns = this.getTable().getColumns(); for (TableColumn tableColumn : tableColumns) { tableColumn.dispose(); } } public void addColumns() { String[] columns = columnString.split(IConstants.COLUMN_DELIM); for (String column2 : columns) { Column column = new Column(column2, 0.11f); TableColumn c = new TableColumn(this.getTable(), SWT.FULL_SELECTION); c.setText(column.getColumnName()); c.setWidth((int) (getDefaultWidth() * column.getWidthValue())); c.setResizable(true); c.setMoveable(true); } } public String getColumnString() { return columnString; } public void refreshTable(String columnString) { getTable().setHeaderVisible(true); if (columnString == null || columnString.equals(IConstants.EMPTY_STRING)) { columnString = getDefaultPreferenceValue(); } this.columnString = columnString; removeAll(); addColumns(); saveModel(); refresh(); } protected void onDispose() { saveModel(); } public void saveModel() { } }