package org.nightlabs.jfire.trade.admin.ui.overview; import javax.jdo.JDOHelper; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Menu; import org.eclipse.ui.PartInitException; import org.nightlabs.base.ui.resource.SharedImages; import org.nightlabs.base.ui.util.RCPUtil; import org.nightlabs.base.ui.wizard.DynamicPathWizardDialog; import org.nightlabs.jfire.store.Unit; import org.nightlabs.jfire.store.id.UnitID; import org.nightlabs.jfire.trade.admin.ui.TradeAdminPlugin; import org.nightlabs.jfire.trade.admin.ui.editor.UnitEditor; import org.nightlabs.jfire.trade.admin.ui.editor.UnitEditorInput; public class UnitCategory extends AbstractTradeAdminCategory { private UnitTable unitTable; public UnitCategory(TradeAdminCategoryFactory tradeAdminCategoryFactory) { super(tradeAdminCategoryFactory); } @Override protected Composite _createComposite(Composite parent) { unitTable = new UnitTable(parent, SWT.NONE); unitTable.addDoubleClickListener(doubleClickListener); hookContextMenu(); return unitTable; } private void hookContextMenu() { MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$ menuMgr.setRemoveAllWhenShown(true); menuMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { UnitCategory.this.fillContextMenu(manager); } }); Menu menu = menuMgr.createContextMenu(unitTable); unitTable.setMenu(menu); } private void fillContextMenu(IMenuManager manager) { manager.add(new CreateUnitAction()); } public class CreateUnitAction extends Action { public CreateUnitAction() { super(); setId(CreateUnitAction.class.getName()); setImageDescriptor(SharedImages.getSharedImageDescriptor( TradeAdminPlugin.getDefault(), UnitCategory.class, "Create")); setToolTipText("Create new unit"); setText("Create new unit"); } @Override public void run() { UnitCreateWizard wizard= new UnitCreateWizard(); try { DynamicPathWizardDialog dialog = new DynamicPathWizardDialog(getComposite().getShell(),wizard); int result = dialog.open(); if(result == Dialog.OK) { } } catch (Exception ex) { throw new RuntimeException(ex); } } } private IDoubleClickListener doubleClickListener = new IDoubleClickListener(){ public void doubleClick(org.eclipse.jface.viewers.DoubleClickEvent event) { StructuredSelection s = (StructuredSelection)event.getSelection(); if (s.isEmpty()) return; Unit unit = unitTable.getFirstSelectedElement(); try { UnitID unitID = (UnitID) JDOHelper.getObjectId(unit); UnitEditorInput unitEditorInput= new UnitEditorInput(unitID); RCPUtil.openEditor(unitEditorInput, UnitEditor.ID_EDITOR); }catch(PartInitException e){ throw new RuntimeException(e); } } }; }