org.amanzi.awe.ui.preferences.dateformat.FormatTableViewer.java Source code

Java tutorial

Introduction

Here is the source code for org.amanzi.awe.ui.preferences.dateformat.FormatTableViewer.java

Source

/* 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);
    }

}