Package org.asem.eclipse.mii.model.shapes.wizards.model

Source Code of org.asem.eclipse.mii.model.shapes.wizards.model.ColumnsPage

package org.asem.eclipse.mii.model.shapes.wizards.model;

import java.util.HashSet;
import java.util.Set;

import org.asem.eclipse.mii.model.shapes.COLUMN;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;


public class ColumnsPage extends WizardPage {
    private Text columnName;
    private Text columnType;
    private TableViewer viewer;
    private Set<COLUMN> columns = new HashSet<COLUMN>();
    private Listener listener;
    private Button set, delete;

    protected ColumnsPage(String pageName) {
        super(pageName);
        setTitle(pageName);
    }

    @Override
    public void createControl(Composite parent) {
        Composite composite = new Composite(parent, SWT.NONE);
        GridLayout layout = new GridLayout();
        layout.numColumns = 2;
        composite.setLayout(layout);

        viewer = new TableViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
        viewer.setContentProvider(ArrayContentProvider.getInstance());

        TableViewerColumn col = new TableViewerColumn(viewer, SWT.NONE);
        col.getColumn().setWidth(200);
        col.getColumn().setText("Name");
        col.setLabelProvider(new ColumnLabelProvider() {
            @Override
            public String getText(Object element) {
                COLUMN col = (COLUMN) element;
                return col.name;
            }
        });

        col = new TableViewerColumn(viewer, SWT.NONE);
        col.getColumn().setWidth(200);
        col.getColumn().setText("Type");
        col.setLabelProvider(new ColumnLabelProvider() {
            @Override
            public String getText(Object element) {
                COLUMN col = (COLUMN) element;
                return col.type;
            }
        });

        viewer.setInput(columns);

        Table table = viewer.getTable();
        table.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL));
        table.addListener(SWT.Selection, getListener());

        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        addRightPanel(composite);

        setControl(composite);
    }

    private void addRightPanel(Composite parent) {
        Composite composite = new Composite(parent, SWT.NONE);
        GridLayout layout = new GridLayout();
        layout.numColumns = 2;
        composite.setLayout(layout);
        composite.setLayoutData(new GridData(GridData.FILL_VERTICAL));

        Label label = new Label(composite, SWT.NONE);
        label.setText("Name:");

        GridData gd  = new GridData(GridData.FILL_HORIZONTAL);
        gd.widthHint = 150;

        columnName = new Text(composite, SWT.SINGLE | SWT.BORDER);
        columnName.setLayoutData(gd);

        label = new Label(composite, SWT.NONE);
        label.setText("Type:");

        columnType = new Text(composite, SWT.SINGLE | SWT.BORDER);
        columnType.setLayoutData(gd);

        set = new Button(composite, SWT.PUSH);
        set.setText("Add/Update");
        set.addListener(SWT.Selection, getListener());
       
        delete = new Button(composite, SWT.PUSH);
        delete.setText("Delete");
        delete.addListener(SWT.Selection, getListener());
    }

    private Listener getListener() {
        if (listener != null)
            return listener;
       
        listener = new Listener() {
            @SuppressWarnings("unchecked")
            public void handleEvent(Event event) {
                if (event.widget.equals(set)) {
                    String name = columnName.getText();
                    String type = columnType.getText();
                    Set<COLUMN> cols = (Set<COLUMN>) viewer.getInput();
                    COLUMN col = new COLUMN(name, type);
                    cols.remove(col);
                    cols.add(col);
                    viewer.setInput(cols);
                }
                else if (event.widget.equals(delete)) {
                    TableItem[] items = viewer.getTable().getSelection();
                    if (items.length > 0) {
                        Set<COLUMN> cols = (Set<COLUMN>) viewer.getInput();
                        COLUMN col = (COLUMN)items[0].getData();
                        cols.remove(col);
                        viewer.setInput(cols);
                    }
                }
                else if (event.widget instanceof Table) {
                    TableItem[] items = ((Table)event.widget).getSelection();
                    if (items.length > 0) {
                        COLUMN col = (COLUMN)items[0].getData();
                        columnName.setText(col.name);
                        columnType.setText(col.type);
                    }
                }
            }
        };
       
        return listener;
    }

    @SuppressWarnings("unchecked")
    public Set<COLUMN> getColumns() {
        return (Set<COLUMN>) viewer.getInput();
    }

    public void setColumns(Set<COLUMN> columns) {
        this.columns = columns;

        if (viewer != null) {
            viewer.setInput(columns);
        }
    }
}
TOP

Related Classes of org.asem.eclipse.mii.model.shapes.wizards.model.ColumnsPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.