package org.kie.eclipse.navigator.view.actions; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.actions.SelectionProviderAction; import org.kie.eclipse.navigator.view.content.IContainerNode; import org.kie.eclipse.server.IKieServiceDelegate; public class KieNavigatorAction extends SelectionProviderAction implements IKieNavigatorAction { public KieNavigatorAction(ISelectionProvider provider, String text) { super(provider, text); } @Override public void calculateEnabled() { setEnabled(isEnabled()); } protected IContainerNode<?> getContainer() { IStructuredSelection selection = getStructuredSelection(); if (selection == null || selection.isEmpty()) { return null; } Object element = selection.getFirstElement(); if (element instanceof IContainerNode) return (IContainerNode<?>) element; return null; } protected IKieServiceDelegate getDelegate() { return getContainer().getHandler().getDelegate(); } protected static void refreshViewer(final IContainerNode<?> container) { container.clearChildren(); container.refresh(); } protected static Shell getShell() { return Display.getDefault().getActiveShell(); } @Override public void handleException(final Throwable t) { t.printStackTrace(); Display.getDefault().asyncExec(new Runnable() { @Override public void run() { MessageDialog.openError(getShell(), "Error", t.getMessage()); } }); } }