Package name.abuchen.portfolio.ui.wizards.client

Source Code of name.abuchen.portfolio.ui.wizards.client.AddTaxonomyPage

package name.abuchen.portfolio.ui.wizards.client;

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

import name.abuchen.portfolio.model.Client;
import name.abuchen.portfolio.model.TaxonomyTemplate;
import name.abuchen.portfolio.ui.Messages;
import name.abuchen.portfolio.ui.PortfolioPlugin;
import name.abuchen.portfolio.ui.wizards.AbstractWizardPage;

import org.eclipse.jface.layout.TableColumnLayout;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;

public class AddTaxonomyPage extends AbstractWizardPage
{
    private Client client;

    private Set<String> taxonomiesAdded = new HashSet<String>();

    public AddTaxonomyPage(Client client)
    {
        super(AddTaxonomyPage.class.getSimpleName());
        this.client = client;
        setTitle(Messages.NewFileWizardTaxonomyTitle);
        setDescription(Messages.NewFileWizardTaxonomyDescription);
    }

    @Override
    public void createControl(Composite parent)
    {
        Composite container = new Composite(parent, SWT.NONE);
        setControl(container);

        TableColumnLayout layout = new TableColumnLayout();
        container.setLayout(layout);

        final TableViewer viewer = new TableViewer(container);

        TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
        layout.setColumnData(column.getColumn(), new ColumnWeightData(90));
        column.getColumn().setText(Messages.ColumnTaxonomy);
        column.setLabelProvider(new ColumnLabelProvider()
        {
            @Override
            public String getText(Object element)
            {
                return ((TaxonomyTemplate) element).getName();
            }
        });

        column = new TableViewerColumn(viewer, SWT.NONE);
        layout.setColumnData(column.getColumn(), new ColumnWeightData(10));
        column.setLabelProvider(new ColumnLabelProvider()
        {
            @Override
            public String getText(Object element)
            {
                return null;
            }

            @Override
            public Image getImage(Object element)
            {
                TaxonomyTemplate t = (TaxonomyTemplate) element;

                if (taxonomiesAdded.contains(t.getId()))
                    return PortfolioPlugin.image(PortfolioPlugin.IMG_CHECK);
                else
                    return null;
            }
        });

        viewer.addDoubleClickListener(new IDoubleClickListener()
        {
            @Override
            public void doubleClick(DoubleClickEvent event)
            {
                TaxonomyTemplate template = (TaxonomyTemplate) ((IStructuredSelection) event.getSelection())
                                .getFirstElement();

                if (template != null && !taxonomiesAdded.contains(template.getId()))
                {
                    taxonomiesAdded.add(template.getId());
                    client.addTaxonomy(template.build());
                    viewer.refresh(template);
                }
            }
        });

        viewer.getTable().setHeaderVisible(true);
        viewer.setContentProvider(ArrayContentProvider.getInstance());
        viewer.setInput(TaxonomyTemplate.list());

        setPageComplete(true);
    }

}
TOP

Related Classes of name.abuchen.portfolio.ui.wizards.client.AddTaxonomyPage

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.