package org.nightlabs.jfire.trade.ui.articlecontainer.header;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.nightlabs.jfire.trade.ui.articlecontainer.header.recurring.RecurringRootTreeNode;
public abstract class CreateArticleContainerAction
extends Action
{
public CreateArticleContainerAction() {
super();
}
public CreateArticleContainerAction(String text) {
super(text);
}
public CreateArticleContainerAction(String text, ImageDescriptor image) {
super(text, image);
}
public CreateArticleContainerAction(String text, int style) {
super(text, style);
}
protected HeaderTreeNode getRootTreeNode(HeaderTreeNode node)
{
HeaderTreeNode result = node;
while (result.getParent() != null)
result = result.getParent();
return result;
}
public void calculateEnabled(ISelection selection) {
IStructuredSelection sel = (IStructuredSelection) selection;
if (sel.isEmpty())
this.setEnabled(false);
else {
boolean actionEnabled = false;
Object firstElement = sel.getFirstElement();
if (firstElement instanceof HeaderTreeNode) {
HeaderTreeNode selectedNode = (HeaderTreeNode) firstElement;
HeaderTreeNode root = getRootTreeNode(selectedNode);
if (root instanceof RecurringRootTreeNode) {
if (!(selectedNode instanceof RecurringRootTreeNode))
actionEnabled = true;
}
else if (!(root instanceof EndCustomerRootTreeNode)) {
actionEnabled = true;
}
}
this.setEnabled(actionEnabled);
}
}
}