package org.nightlabs.jfire.voucher.admin.ui.createvouchertype; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.nightlabs.base.ui.wizard.DynamicPathWizardDialog; import org.nightlabs.jfire.voucher.admin.ui.resource.Messages; import org.nightlabs.jfire.voucher.admin.ui.tree.VoucherTypeTree; import org.nightlabs.jfire.voucher.admin.ui.tree.VoucherTypeTreeNode; public class CreateVoucherTypeAction extends Action { protected VoucherTypeTree tree; protected VoucherTypeTreeNode selectedNode = null; public CreateVoucherTypeAction(VoucherTypeTree tree) { super(Messages.getString("org.nightlabs.jfire.voucher.admin.ui.createvouchertype.CreateVoucherTypeAction.text")); //$NON-NLS-1$ setEnabled(false); this.tree = tree; tree.addSelectionChangedListener( new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { StructuredSelection selection = (StructuredSelection) event.getSelection(); if (selection.isEmpty()) selectedNode = null; else { Object selectedElement = selection.getFirstElement(); if (selectedElement instanceof VoucherTypeTreeNode) { selectedNode = (VoucherTypeTreeNode) selectedElement; } } setEnabled(selectedNode != null && selectedNode.getJdoObject().isInheritanceBranch()); } }); } @Override public void run() { try { if (selectedNode == null) throw new IllegalStateException("No node selected!"); //$NON-NLS-1$ CreateVoucherTypeWizard createProductWizard = new CreateVoucherTypeWizard(selectedNode.getJdoObject().getObjectId()); DynamicPathWizardDialog wizardDialog = new DynamicPathWizardDialog(createProductWizard); wizardDialog.open(); } catch (Exception e) { throw new RuntimeException(e); } } }