package edu.ualberta.med.biobank.treeview.dispatch; import java.util.List; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Tree; import edu.ualberta.med.biobank.SessionManager; import edu.ualberta.med.biobank.common.action.dispatch.DispatchRetrievalAction; import edu.ualberta.med.biobank.common.permission.dispatch.DispatchCreatePermission; import edu.ualberta.med.biobank.common.util.DispatchState; import edu.ualberta.med.biobank.common.wrappers.DispatchWrapper; import edu.ualberta.med.biobank.common.wrappers.ModelWrapper; import edu.ualberta.med.biobank.gui.common.BgcPlugin; import edu.ualberta.med.biobank.treeview.AbstractAdapterBase; import edu.ualberta.med.biobank.treeview.AdapterBase; import gov.nih.nci.system.applicationservice.ApplicationException; public class InCreationDispatchGroup extends AbstractDispatchGroup { private Boolean createAllowed; public InCreationDispatchGroup(AdapterBase parent, int id) { super(parent, id, Messages.InCreationDispatchGroup_creation_node_label); try { this.createAllowed = SessionManager.getAppService().isAllowed( new DispatchCreatePermission(SessionManager.getUser() .getCurrentWorkingCenter().getId())); } catch (ApplicationException e) { BgcPlugin.openAsyncError("Error", "Unable to retrieve permissions"); } } @Override protected List<? extends ModelWrapper<?>> getWrapperChildren() throws Exception { return ModelWrapper.wrapModelCollection(SessionManager.getAppService(), SessionManager.getAppService().doAction( new DispatchRetrievalAction(DispatchState.CREATION, SessionManager.getUser().getCurrentWorkingCenter().getId(), true, true)).getList(), DispatchWrapper.class); } @Override public void popupMenu(TreeViewer tv, Tree tree, Menu menu) { if (createAllowed) { MenuItem mi = new MenuItem(menu, SWT.PUSH); mi.setText(Messages.InCreationDispatchGroup_add_label); mi.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { addDispatch(); } }); } } protected void addDispatch() { DispatchWrapper shipment = new DispatchWrapper( SessionManager.getAppService()); DispatchAdapter shipNode = new DispatchAdapter(this, shipment); shipNode.openEntryForm(); } @Override public int compareTo(AbstractAdapterBase o) { return 0; } }