diff options
Diffstat (limited to 'plugins/org.gastro.rcp.department/src/org/gastro/rcp/internal/department/OrdersView.java')
-rw-r--r-- | plugins/org.gastro.rcp.department/src/org/gastro/rcp/internal/department/OrdersView.java | 658 |
1 files changed, 329 insertions, 329 deletions
diff --git a/plugins/org.gastro.rcp.department/src/org/gastro/rcp/internal/department/OrdersView.java b/plugins/org.gastro.rcp.department/src/org/gastro/rcp/internal/department/OrdersView.java index 8d77d2c9c1..c4922bb185 100644 --- a/plugins/org.gastro.rcp.department/src/org/gastro/rcp/internal/department/OrdersView.java +++ b/plugins/org.gastro.rcp.department/src/org/gastro/rcp/internal/department/OrdersView.java @@ -1,329 +1,329 @@ -/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) 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:
- * Eike Stepper - initial API and implementation
- *
- * Initial Publication:
- * Eclipse Magazin - http://www.eclipse-magazin.de
- */
-package org.gastro.rcp.internal.department;
-
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider.FontAndColorProvider;
-
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.TreeViewerColumn;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.ui.part.ViewPart;
-
-import com.swtdesigner.ResourceManager;
-import com.swtdesigner.SWTResourceManager;
-
-import org.gastro.business.BusinessDay;
-import org.gastro.business.Order;
-import org.gastro.business.OrderDetail;
-import org.gastro.business.OrderState;
-import org.gastro.inventory.Department;
-import org.gastro.inventory.Product;
-import org.gastro.rcp.IModel;
-import org.gastro.rcp.IModel.ITransactionalOperation;
-
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Eike Stepper
- */
-public class OrdersView extends ViewPart
-{
- public static final String ID = "org.gastro.rcp.orders.view";
-
- private static final AdapterFactory FACTORY = IModel.INSTANCE.getAdapterFactory();
-
- private TreeViewer treeViewer;
-
- private Adapter businessDayAdapter = new AdapterImpl()
- {
- @Override
- public void notifyChanged(Notification msg)
- {
- try
- {
- treeViewer.getTree().getDisplay().asyncExec(new Runnable()
- {
- public void run()
- {
- try
- {
- treeViewer.refresh(true);
- treeViewer.expandAll();
- }
- catch (Exception ex)
- {
- }
- }
- });
- }
- catch (Exception ex)
- {
- }
- }
- };
-
- public OrdersView()
- {
- }
-
- /**
- * Passing the focus request to the viewer's control.
- */
- @Override
- public void setFocus()
- {
- }
-
- @Override
- public void dispose()
- {
- IModel.INSTANCE.getBusinessDay().eAdapters().remove(businessDayAdapter);
- super.dispose();
- }
-
- /**
- * This is a callback that will allow us to create the viewer and initialize it.
- */
- @Override
- public void createPartControl(Composite parent)
- {
- BusinessDay businessDay = IModel.INSTANCE.getBusinessDay();
- businessDay.eAdapters().add(businessDayAdapter);
-
- {
- treeViewer = new TreeViewer(parent, SWT.NONE);
- treeViewer.addSelectionChangedListener(new ISelectionChangedListener()
- {
- public void selectionChanged(SelectionChangedEvent event)
- {
- Object object = ((IStructuredSelection)event.getSelection()).getFirstElement();
- if (object instanceof OrderDetail)
- {
- OrderDetail orderDetail = (OrderDetail)object;
- IModel.INSTANCE.modify(orderDetail, new ITransactionalOperation<OrderDetail>()
- {
- public Object execute(OrderDetail orderDetail)
- {
- orderDetail.setState(orderDetail.getState() == OrderState.ORDERED ? OrderState.SERVED
- : OrderState.ORDERED);
- return null;
- }
- });
-
- treeViewer.refresh(true);
- }
- }
- });
-
- Tree tree = treeViewer.getTree();
- tree.setToolTipText("Klicken um Zustand zu wechseln");
- tree.setForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_BLUE));
- tree.setFont(SWTResourceManager.getFont("Segoe UI", 16, SWT.BOLD));
- {
- TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
- TreeColumn trclmnTitel = treeViewerColumn.getColumn();
- trclmnTitel.setToolTipText("Klicken um Zustand zu wechseln");
- trclmnTitel.setWidth(400);
- trclmnTitel.setText("Angebot");
- }
-
- {
- TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
- TreeColumn trclmnQuantity = treeViewerColumn.getColumn();
- trclmnQuantity.setResizable(false);
- trclmnQuantity.setAlignment(SWT.RIGHT);
- trclmnQuantity.setWidth(50);
- trclmnQuantity.setText("Menge");
- }
-
- {
- TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
- TreeColumn trclmnPreis = treeViewerColumn.getColumn();
- trclmnPreis.setAlignment(SWT.RIGHT);
- trclmnPreis.setResizable(false);
- trclmnPreis.setWidth(100);
- trclmnPreis.setText("Preis");
- }
-
- {
- TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
- TreeColumn trclmnSumme = treeViewerColumn.getColumn();
- trclmnSumme.setAlignment(SWT.RIGHT);
- trclmnSumme.setResizable(false);
- trclmnSumme.setWidth(100);
- trclmnSumme.setText("Summe");
- }
-
- treeViewer.setContentProvider(new AdapterFactoryContentProvider(FACTORY)
- {
- @Override
- public Object[] getElements(Object object)
- {
- return getChildren(object);
- }
-
- @Override
- public Object[] getChildren(Object object)
- {
- Department department = (Department)IModel.INSTANCE.getStation();
- if (object instanceof BusinessDay)
- {
- BusinessDay businessDay = (BusinessDay)object;
- List<Object> result = new ArrayList<Object>();
- for (Order order : businessDay.getOrders())
- {
- for (OrderDetail orderDetail : order.getOrderDetails())
- {
- if (orderDetail.getState() == OrderState.ORDERED)
- {
- Product product = orderDetail.getOffering().getProduct();
- if (product != null)
- {
- if (product.getDepartment() != department)
- {
- continue;
- }
- }
-
- result.add(order);
- break;
- }
- }
- }
-
- return result.toArray();
- }
-
- if (object instanceof Order)
- {
- Order order = (Order)object;
- List<Object> result = new ArrayList<Object>();
- for (OrderDetail orderDetail : order.getOrderDetails())
- {
- Product product = orderDetail.getOffering().getProduct();
- if (product == null || product.getDepartment() == department)
- {
- result.add(orderDetail);
- }
- }
-
- return result.toArray();
- }
-
- return super.getChildren(object);
- }
-
- @Override
- public boolean hasChildren(Object object)
- {
- return getChildren(object).length != 0;
- }
- });
-
- treeViewer.setLabelProvider(new FontAndColorProvider(FACTORY, treeViewer)
- {
- @Override
- public String getColumnText(Object object, int columnIndex)
- {
- if (object instanceof Order)
- {
- Order order = (Order)object;
- switch (columnIndex)
- {
- case 0:
- return order.getTable().getStationID();
- case 1:
- case 2:
- case 3:
- return "";
- }
- }
-
- if (object instanceof OrderDetail)
- {
- OrderDetail orderDetail = (OrderDetail)object;
- switch (columnIndex)
- {
- case 0:
- return orderDetail.getOffering().getName();
- case 1:
- return "" + orderDetail.getQuantity() + "x";
- case 2:
- return formatPrice(orderDetail.getOffering().getPrice());
- case 3:
- return formatPrice(orderDetail.getOffering().getPrice() * orderDetail.getQuantity());
- }
- }
-
- return super.getColumnText(object, columnIndex);
- }
-
- @Override
- public Image getColumnImage(Object object, int columnIndex)
- {
- if (columnIndex == 0 && object instanceof OrderDetail)
- {
- OrderDetail orderDetail = (OrderDetail)object;
- if (orderDetail.getState() == OrderState.ORDERED)
- {
- return ResourceManager.getPluginImage("org.gastro.rcp.department", "icons/ordered.gif");
- }
-
- return ResourceManager.getPluginImage("org.gastro.rcp.department", "icons/served.gif");
- }
-
- return null;
- }
-
- @Override
- public Color getForeground(Object object, int columnIndex)
- {
- if (object instanceof OrderDetail)
- {
- OrderDetail orderDetail = (OrderDetail)object;
- if (orderDetail.getState() != OrderState.ORDERED)
- {
- return treeViewer.getTree().getDisplay().getSystemColor(SWT.COLOR_GRAY);
- }
- }
-
- return super.getForeground(object, columnIndex);
- }
-
- private String formatPrice(float price)
- {
- return NumberFormat.getCurrencyInstance().format(price);
- }
- });
-
- treeViewer.setInput(businessDay);
- treeViewer.expandAll();
- }
- }
-}
+/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) 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: + * Eike Stepper - initial API and implementation + * + * Initial Publication: + * Eclipse Magazin - http://www.eclipse-magazin.de + */ +package org.gastro.rcp.internal.department; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.impl.AdapterImpl; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider.FontAndColorProvider; + +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.TreeViewerColumn; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeColumn; +import org.eclipse.ui.part.ViewPart; + +import com.swtdesigner.ResourceManager; +import com.swtdesigner.SWTResourceManager; + +import org.gastro.business.BusinessDay; +import org.gastro.business.Order; +import org.gastro.business.OrderDetail; +import org.gastro.business.OrderState; +import org.gastro.inventory.Department; +import org.gastro.inventory.Product; +import org.gastro.rcp.IModel; +import org.gastro.rcp.IModel.ITransactionalOperation; + +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eike Stepper + */ +public class OrdersView extends ViewPart +{ + public static final String ID = "org.gastro.rcp.orders.view"; + + private static final AdapterFactory FACTORY = IModel.INSTANCE.getAdapterFactory(); + + private TreeViewer treeViewer; + + private Adapter businessDayAdapter = new AdapterImpl() + { + @Override + public void notifyChanged(Notification msg) + { + try + { + treeViewer.getTree().getDisplay().asyncExec(new Runnable() + { + public void run() + { + try + { + treeViewer.refresh(true); + treeViewer.expandAll(); + } + catch (Exception ex) + { + } + } + }); + } + catch (Exception ex) + { + } + } + }; + + public OrdersView() + { + } + + /** + * Passing the focus request to the viewer's control. + */ + @Override + public void setFocus() + { + } + + @Override + public void dispose() + { + IModel.INSTANCE.getBusinessDay().eAdapters().remove(businessDayAdapter); + super.dispose(); + } + + /** + * This is a callback that will allow us to create the viewer and initialize it. + */ + @Override + public void createPartControl(Composite parent) + { + BusinessDay businessDay = IModel.INSTANCE.getBusinessDay(); + businessDay.eAdapters().add(businessDayAdapter); + + { + treeViewer = new TreeViewer(parent, SWT.NONE); + treeViewer.addSelectionChangedListener(new ISelectionChangedListener() + { + public void selectionChanged(SelectionChangedEvent event) + { + Object object = ((IStructuredSelection)event.getSelection()).getFirstElement(); + if (object instanceof OrderDetail) + { + OrderDetail orderDetail = (OrderDetail)object; + IModel.INSTANCE.modify(orderDetail, new ITransactionalOperation<OrderDetail>() + { + public Object execute(OrderDetail orderDetail) + { + orderDetail.setState(orderDetail.getState() == OrderState.ORDERED ? OrderState.SERVED + : OrderState.ORDERED); + return null; + } + }); + + treeViewer.refresh(true); + } + } + }); + + Tree tree = treeViewer.getTree(); + tree.setToolTipText("Klicken um Zustand zu wechseln"); + tree.setForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_BLUE)); + tree.setFont(SWTResourceManager.getFont("Segoe UI", 16, SWT.BOLD)); + { + TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE); + TreeColumn trclmnTitel = treeViewerColumn.getColumn(); + trclmnTitel.setToolTipText("Klicken um Zustand zu wechseln"); + trclmnTitel.setWidth(400); + trclmnTitel.setText("Angebot"); + } + + { + TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE); + TreeColumn trclmnQuantity = treeViewerColumn.getColumn(); + trclmnQuantity.setResizable(false); + trclmnQuantity.setAlignment(SWT.RIGHT); + trclmnQuantity.setWidth(50); + trclmnQuantity.setText("Menge"); + } + + { + TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE); + TreeColumn trclmnPreis = treeViewerColumn.getColumn(); + trclmnPreis.setAlignment(SWT.RIGHT); + trclmnPreis.setResizable(false); + trclmnPreis.setWidth(100); + trclmnPreis.setText("Preis"); + } + + { + TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE); + TreeColumn trclmnSumme = treeViewerColumn.getColumn(); + trclmnSumme.setAlignment(SWT.RIGHT); + trclmnSumme.setResizable(false); + trclmnSumme.setWidth(100); + trclmnSumme.setText("Summe"); + } + + treeViewer.setContentProvider(new AdapterFactoryContentProvider(FACTORY) + { + @Override + public Object[] getElements(Object object) + { + return getChildren(object); + } + + @Override + public Object[] getChildren(Object object) + { + Department department = (Department)IModel.INSTANCE.getStation(); + if (object instanceof BusinessDay) + { + BusinessDay businessDay = (BusinessDay)object; + List<Object> result = new ArrayList<Object>(); + for (Order order : businessDay.getOrders()) + { + for (OrderDetail orderDetail : order.getOrderDetails()) + { + if (orderDetail.getState() == OrderState.ORDERED) + { + Product product = orderDetail.getOffering().getProduct(); + if (product != null) + { + if (product.getDepartment() != department) + { + continue; + } + } + + result.add(order); + break; + } + } + } + + return result.toArray(); + } + + if (object instanceof Order) + { + Order order = (Order)object; + List<Object> result = new ArrayList<Object>(); + for (OrderDetail orderDetail : order.getOrderDetails()) + { + Product product = orderDetail.getOffering().getProduct(); + if (product == null || product.getDepartment() == department) + { + result.add(orderDetail); + } + } + + return result.toArray(); + } + + return super.getChildren(object); + } + + @Override + public boolean hasChildren(Object object) + { + return getChildren(object).length != 0; + } + }); + + treeViewer.setLabelProvider(new FontAndColorProvider(FACTORY, treeViewer) + { + @Override + public String getColumnText(Object object, int columnIndex) + { + if (object instanceof Order) + { + Order order = (Order)object; + switch (columnIndex) + { + case 0: + return order.getTable().getStationID(); + case 1: + case 2: + case 3: + return ""; + } + } + + if (object instanceof OrderDetail) + { + OrderDetail orderDetail = (OrderDetail)object; + switch (columnIndex) + { + case 0: + return orderDetail.getOffering().getName(); + case 1: + return "" + orderDetail.getQuantity() + "x"; + case 2: + return formatPrice(orderDetail.getOffering().getPrice()); + case 3: + return formatPrice(orderDetail.getOffering().getPrice() * orderDetail.getQuantity()); + } + } + + return super.getColumnText(object, columnIndex); + } + + @Override + public Image getColumnImage(Object object, int columnIndex) + { + if (columnIndex == 0 && object instanceof OrderDetail) + { + OrderDetail orderDetail = (OrderDetail)object; + if (orderDetail.getState() == OrderState.ORDERED) + { + return ResourceManager.getPluginImage("org.gastro.rcp.department", "icons/ordered.gif"); + } + + return ResourceManager.getPluginImage("org.gastro.rcp.department", "icons/served.gif"); + } + + return null; + } + + @Override + public Color getForeground(Object object, int columnIndex) + { + if (object instanceof OrderDetail) + { + OrderDetail orderDetail = (OrderDetail)object; + if (orderDetail.getState() != OrderState.ORDERED) + { + return treeViewer.getTree().getDisplay().getSystemColor(SWT.COLOR_GRAY); + } + } + + return super.getForeground(object, columnIndex); + } + + private String formatPrice(float price) + { + return NumberFormat.getCurrencyInstance().format(price); + } + }); + + treeViewer.setInput(businessDay); + treeViewer.expandAll(); + } + } +} |