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