/* AWE - Amanzi Wireless Explorer
* http://awe.amanzi.org
* (C) 2008-2009, AmanziTel AB
*
* This library is provided under the terms of the Eclipse Public License
* as described at http://www.eclipse.org/legal/epl-v10.html. Any use,
* reproduction or distribution of the library constitutes recipient's
* acceptance of this agreement.
*
* This library is distributed WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
package org.amanzi.awe.ui.preferences.dateformat;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
/**
* <p>
* format table viewer
* </p>
*
* @author Vladislav_Kondratenko
* @since 1.0.0
*/
public class FormatTableViewer extends TableViewer {
private static final int EXAMPLE_COLUMN_WIDTH = 300;
private static final int FORMAT_COLUMN_WIDTH = 200;
private static final int IS_DEFAULT_TABLE_WIDTH = 60;
private static final IContentProvider CONTENT_PROVIDER = new DateFormatTableContentProvider();
private static final DateFormatTableLabelProvider EXAMPLE_COLUMN_LABEL_PROVIDER = new DateFormatTableLabelProvider(
DateFormatPreferencePageTableColumns.EXAMPLE_COLUMN);
private static final DateFormatTableLabelProvider IS_DEFAULT_COLUMN_LABEL_PROVIDER = new DateFormatTableLabelProvider(
DateFormatPreferencePageTableColumns.IS_DEFAULT_COLUMN);
private static final DateFormatTableLabelProvider FORMAT_COLUMN_LABEL_PROVIDER = new DateFormatTableLabelProvider(
DateFormatPreferencePageTableColumns.FORMAT_COLUMN);
private final Collection<String> addedFormats;
private String defaultFormat;
/**
* @param parent
* @param style
*/
public FormatTableViewer(final Composite parent, final int style) {
super(parent, style);
addedFormats = new ArrayList<String>();
}
/**
*
*/
protected void setInput(final Collection<String> input) {
addedFormats.addAll(input);
super.setInput(addedFormats);
}
@Override
public void add(final Object element) {
assert !StringUtils.isEmpty((String)element);
addedFormats.add((String)element);
super.add(element);
}
/**
* @return Returns the addedFormats.
*/
protected Collection<String> getAddedFormats() {
return addedFormats;
}
/**
* @return Returns the defaultFormat.
*/
protected String getDefaultFormat() {
return defaultFormat;
}
public void create() {
Table table = getTable();
table.setLayoutData(createGridData());
table.setLinesVisible(true);
TableViewerColumn isDefaultColumn = createTableColumn(IS_DEFAULT_TABLE_WIDTH, IS_DEFAULT_COLUMN_LABEL_PROVIDER);
isDefaultColumn.setEditingSupport(new IsDefaultEditor(this));
createTableColumn(EXAMPLE_COLUMN_WIDTH, EXAMPLE_COLUMN_LABEL_PROVIDER);
createTableColumn(FORMAT_COLUMN_WIDTH, FORMAT_COLUMN_LABEL_PROVIDER);
table.setHeaderVisible(true);
setContentProvider(CONTENT_PROVIDER);
}
/**
* @param columnName
* @param columnWidth
* @param tableViewer2
* @return
*/
private TableViewerColumn createTableColumn(final int columnWidth, final DateFormatTableLabelProvider provider) {
TableViewerColumn viewerColumn = new TableViewerColumn(this, SWT.LEFT);
TableColumn column = viewerColumn.getColumn();
column.setText(provider.getColumnName());
column.setWidth(columnWidth);
column.setResizable(true);
provider.initViewer(this);
viewerColumn.setLabelProvider(provider);
return viewerColumn;
}
/**
* set default format
*
* @param value
*/
protected void setDefaultFormat(final String value) {
defaultFormat = value;
}
/**
* @return
*/
private GridData createGridData() {
return new GridData(SWT.FILL, SWT.FILL, true, true);
}
}