com.softberries.klerk.gui.editors.CompaniesEditor.java Source code

Java tutorial

Introduction

Here is the source code for com.softberries.klerk.gui.editors.CompaniesEditor.java

Source

/*******************************************************************************
 * Copyright (c) 2011 Softberries Krzysztof Grajek.
 * 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
 * 
 * Contributors:
 *     Softberries Krzysztof Grajek - initial API and implementation
 ******************************************************************************/
package com.softberries.klerk.gui.editors;

import java.sql.SQLException;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.CellLabelProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;

import com.softberries.klerk.dao.CompanyDao;
import com.softberries.klerk.dao.ProductDao;
import com.softberries.klerk.dao.to.Company;
import com.softberries.klerk.gui.editors.input.CompanyEditorInput;
import com.softberries.klerk.gui.helpers.Messages;
import com.softberries.klerk.gui.helpers.table.CompaniesModelProvider;
import com.softberries.klerk.gui.helpers.table.CompanyComparator;
import com.softberries.klerk.gui.helpers.table.CompanyFilter;
import com.softberries.klerk.gui.helpers.table.ProductsModelProvider;
import com.softberries.klerk.gui.helpers.table.SimpleKlerkComparator;
import com.softberries.klerk.gui.helpers.table.SimpleKlerkFilter;

public class CompaniesEditor extends GenericKlerkEditor {

    private Company selectedCompany;

    public CompaniesEditor(SimpleKlerkComparator comp, SimpleKlerkFilter filter, Object input) {
        super(comp, filter, input);
    }

    public CompaniesEditor() {
        super(new CompanyComparator(), new CompanyFilter(), CompaniesModelProvider.INSTANCE.getCompanies());
    }

    public static final String ID = "com.softberries.klerk.gui.editors.CompaniesEditor"; //$NON-NLS-1$

    @Override
    protected void createColumns(Composite parent, TableViewer viewer) {
        String[] titles = { Messages.CompaniesEditor_name, Messages.CompaniesEditor_vatid,
                Messages.CompaniesEditor_email, Messages.CompaniesEditor_www, Messages.CompaniesEditor_telephone,
                Messages.CompaniesEditor_mobile };
        int[] bounds = { 100, 100, 100, 100, 100, 100 };

        // First column is for the first name
        TableViewerColumn col = createTableViewerColumn(titles[0], bounds[0], 0);
        col.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                cell.setText(((Company) cell.getElement()).getName());
            }
        });

        // Second column is for the name
        col = createTableViewerColumn(titles[1], bounds[1], 1);
        col.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                cell.setText(((Company) cell.getElement()).getVatid());
            }
        });
        // email
        col = createTableViewerColumn(titles[2], bounds[2], 2);
        col.setLabelProvider(new ColumnLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                cell.setText(((Company) cell.getElement()).getEmail());
            }
        });
        // www
        col = createTableViewerColumn(titles[3], bounds[3], 3);
        col.setLabelProvider(new ColumnLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                cell.setText(((Company) cell.getElement()).getWww());
            }
        });
        // telephone
        col = createTableViewerColumn(titles[4], bounds[4], 4);
        col.setLabelProvider(new ColumnLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                cell.setText(((Company) cell.getElement()).getTelephone());
            }
        });
        // mobile
        col = createTableViewerColumn(titles[5], bounds[5], 5);
        col.setLabelProvider(new ColumnLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                cell.setText(((Company) cell.getElement()).getMobile());
            }
        });
    }

    @Override
    protected void addButtonClicked() {
        Company newC = new Company();
        newC.setName("Comapny name..");
        newC.setVatid("VAT ID ..");
        openSingleObjectEditor(new CompanyEditorInput(newC), SingleCompanyEditor.ID);
    }

    @Override
    protected void deleteButtonClicked() {
        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
        if (this.getSelectedCompany() == null || this.getSelectedCompany().getId() == null) {
            MessageDialog.openInformation(shell, "Information", "Nothing to delete");
            return;
        }
        boolean confirmed = MessageDialog.openConfirm(shell, "Confirm",
                "Are you sure you want to delete this company?");
        if (confirmed) {
            CompanyDao dao = new CompanyDao(DB_FOLDER_PATH);
            try {
                dao.delete(this.getSelectedCompany().getId());
                closeOpenedEditorForThisItem(new CompanyEditorInput(this.getSelectedCompany()));
                CompaniesModelProvider.INSTANCE.getCompanies().remove(this.getSelectedCompany());
                this.setSelectedCompany(null);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            viewer.setInput(CompaniesModelProvider.INSTANCE.getCompanies());
            viewer.refresh();
        }
    }

    @Override
    protected void editButtonClicked() {
        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
        if (this.getSelectedCompany() == null || this.getSelectedCompany().getId() == null) {
            MessageDialog.openInformation(shell, "Information", "Nothing to edit");
            return;
        }
        openSingleObjectEditor(new CompanyEditorInput(this.getSelectedCompany()), SingleCompanyEditor.ID);
    }

    @Override
    protected void refreshButtonClicked() {
        viewer.setInput(CompaniesModelProvider.INSTANCE.getCompanies());
        viewer.refresh();
    }

    @Override
    protected void onDoubleClick(IStructuredSelection selection) {
        Company p = (Company) selection.getFirstElement();
        openSingleObjectEditor(new CompanyEditorInput(p), SingleCompanyEditor.ID);
    }

    @Override
    protected void setSelectedObject(Object selection) {
        if (selection != null && selection instanceof Company) {
            this.setSelectedCompany((Company) selection);
        }
    }

    /**
     * @return the selectedCompany
     */
    public Company getSelectedCompany() {
        return selectedCompany;
    }

    /**
     * @param selectedCompany the selectedCompany to set
     */
    public void setSelectedCompany(Company selectedCompany) {
        this.selectedCompany = selectedCompany;
    }

}