/*******************************************************************************
* Copyright (c) 2006-2013 The RCP Company and others.
* 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:
* The RCP Company - initial API and implementation
*******************************************************************************/
package com.rcpcompany.uibindings.shop.views;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Listener;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.part.ViewPart;
import com.rcpcompany.uibindings.IBindingContext;
import com.rcpcompany.uibindings.IColumnBinding;
import com.rcpcompany.uibindings.IManager;
import com.rcpcompany.uibindings.IViewerBinding;
import com.rcpcompany.uibindings.moao.IMOAOPackage;
import com.rcpcompany.uibindings.tests.shop.Shop;
import com.rcpcompany.uibindings.tests.shop.ShopFactory;
import com.rcpcompany.uibindings.tests.shop.ShopPackage;
import com.rcpcompany.uibindings.utils.EditingDomainUtils;
import com.rcpcompany.uibindings.utils.IBindingContextSelectionProvider;
import com.rcpcompany.uibindings.utils.IDnDSupport;
import com.rcpcompany.uibindings.utils.ISortableTableAdapter;
import com.rcpcompany.uibindings.utils.IViewerToolBar;
import com.rcpcompany.utils.basic.ui.TSSWTUtils;
import com.rcpcompany.utils.logging.LogUtils;
/**
* A view that shows the basic shop information such as the name and all defined countries.
*
* @author Tonny Madsen, The RCP Company
*/
public class ShopBasicsView extends ViewPart {
protected Table myTable;
private Text myShopName;
private FormToolkit myToolkit;
private ScrolledForm myTop;
private TableColumn myCountryName;
private TableColumn myCountryAbbrev;
private Button mySaveButton;
public TableViewer myTableViewer;
public IColumnBinding myNameColumn;
@Override
public void createPartControl(Composite parent) {
myToolkit = IManager.Factory.getManager().getFormToolkit(parent);
myTop = myToolkit.createScrolledForm(parent);
myTop.setText("Basic Shop Information");
final Composite body = myTop.getBody();
final GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
body.setLayout(gridLayout);
myToolkit.paintBordersFor(body);
myToolkit.createLabel(body, "Shop Name", SWT.NONE);
myShopName = myToolkit.createText(body, null, SWT.NONE);
final GridData gd_shopName = new GridData(SWT.FILL, SWT.CENTER, true, false);
myShopName.setLayoutData(gd_shopName);
final Section countriesSection = myToolkit.createSection(body, SWT.NONE);
final GridData gd_countriesSection = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1);
countriesSection.setLayoutData(gd_countriesSection);
countriesSection.setText("Countries");
final Composite countriesComposite = myToolkit.createComposite(countriesSection, SWT.NONE);
countriesComposite.setLayout(new GridLayout());
myToolkit.paintBordersFor(countriesComposite);
countriesSection.setClient(countriesComposite);
myTable = myToolkit.createTable(countriesComposite, SWT.FULL_SELECTION | SWT.V_SCROLL);
myTableViewer = new TableViewer(myTable);
myTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
myTable.setLinesVisible(true);
myTable.setHeaderVisible(true);
myCountryName = new TableColumn(myTable, SWT.NONE);
myCountryName.setWidth(100);
myCountryAbbrev = new TableColumn(myTable, SWT.NONE);
myCountryAbbrev.setWidth(40);
mySaveButton = myToolkit.createButton(body, "Save", SWT.NONE);
mySaveButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 2, 1));
bindUI();
}
private void bindUI() {
final Shop shop = ShopFactory.eINSTANCE.getShop(EditingDomainUtils.getEditingDomain());
final IBindingContext context = IBindingContext.Factory.createContext(myTop);
context.addBinding(myShopName, shop, IMOAOPackage.Literals.NAMED_OBJECT__NAME);
final IViewerBinding viewer = context.addViewer().viewer(myTableViewer)
.model(shop, ShopPackage.Literals.SHOP__COUNTRIES);
myNameColumn = viewer.addColumn(myCountryName, IMOAOPackage.Literals.NAMED_OBJECT__NAME);
viewer.addColumn(myCountryAbbrev, ShopPackage.Literals.COUNTRY__ABBREVIATION);
context.finish();
ISortableTableAdapter.Factory.adapt(viewer);
IBindingContextSelectionProvider.Factory.adapt(context, getSite());
IViewerToolBar.Factory.addToolBar(viewer, IViewerToolBar.HORIZONTAL | IViewerToolBar.STANDARD_ITEMS);
IDnDSupport.Factory.installOn(context);
mySaveButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
shop.save();
}
});
myTable.addListener(SWT.Resize, new Listener() {
@Override
public void handleEvent(Event event) {
LogUtils.debug(myTable, TSSWTUtils.toString(event));
}
});
}
@Override
public void setFocus() {
myShopName.setFocus();
}
}