package org.nightlabs.jfire.dynamictrade.admin.ui.createproducttype;
import javax.jdo.JDOHelper;
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.dynamictrade.admin.ui.resource.Messages;
import org.nightlabs.jfire.dynamictrade.admin.ui.tree.DynamicProductTypeTree;
import org.nightlabs.jfire.dynamictrade.admin.ui.tree.DynamicProductTypeTreeNode;
import org.nightlabs.jfire.store.id.ProductTypeID;
public class CreateDynamicProductTypeAction
extends Action
{
protected DynamicProductTypeTree tree;
protected DynamicProductTypeTreeNode selectedNode = null;
public CreateDynamicProductTypeAction(DynamicProductTypeTree dynamicProductTypeTree)
{
super(Messages.getString("org.nightlabs.jfire.dynamictrade.admin.ui.createproducttype.CreateDynamicProductTypeAction.text")); //$NON-NLS-1$
setEnabled(false);
this.tree = dynamicProductTypeTree;
tree.addSelectionChangedListener(
new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event)
{
StructuredSelection selection = (StructuredSelection) event.getSelection();
if (selection.isEmpty())
selectedNode = null;
else
selectedNode = (DynamicProductTypeTreeNode) selection.getFirstElement();
setEnabled(selectedNode != null && selectedNode.getJdoObject().isInheritanceBranch());
}
});
}
@Override
public void run()
{
try {
if (selectedNode == null)
throw new IllegalStateException("No node selected!"); //$NON-NLS-1$
CreateDynamicProductTypeWizard createProductWizard = new CreateDynamicProductTypeWizard((ProductTypeID) JDOHelper.getObjectId(selectedNode.getJdoObject()));
DynamicPathWizardDialog wizardDialog = new DynamicPathWizardDialog(createProductWizard);
wizardDialog.open();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}