package org.kie.eclipse.navigator.view.actions;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Event;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.RetargetAction;
import org.kie.eclipse.navigator.view.content.IContainerNode;
public class RefreshAction extends RetargetAction {
ISelectionProvider provider;
public RefreshAction(ISelectionProvider provider) {
super(ActionFactory.REFRESH.getId(), "Refresh");
this.provider = provider;
setActionHandler(new Action() {
@Override
public void run() {
IContainerNode<?> container = getContainer();
if (container == null)
return;
container.clearChildren();
container.refresh();
}
@Override
public void runWithEvent(Event event) {
run();
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public String getToolTipText() {
return "Reload the Navigator View for this server";
}
});
}
protected IContainerNode<?> getContainer() {
IStructuredSelection selection = (IStructuredSelection) provider.getSelection();
if (selection == null || selection.isEmpty()) {
return null;
}
Object element = selection.getFirstElement();
if (element instanceof IContainerNode)
return (IContainerNode<?>) element;
return null;
}
}