package net.certware.evidence.hugin.view.handlers;
import net.certware.evidence.hugin.view.ViewTree;
import net.certware.evidence.hugin.view.tree.VariableNode;
import net.certware.evidence.hugin.view.tree.VariableNodeState;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.ui.handlers.HandlerUtil;
/**
* Command handler for deselecting all nodes in the tree view.
* @author mrb
* @since 1.2.1
*/
public class DeselectHandler extends AbstractHandler
{
/**
* Handles the deselect command request.
* Presumes the command came from the network view.
* @param event used only for checking active part
* @return always returns null
* @see org.eclipse.core.commands.IHandler#execute(ExecutionEvent)
*/
public Object execute(ExecutionEvent event) throws ExecutionException
{
// get context information
final ViewTree view = (ViewTree)HandlerUtil.getActivePartChecked(event);
final TreeViewer viewer = view.getTreeViewer();
// deselect each node and state already selected, refresh tree parts
if ( view != null ) {
for ( VariableNode vn : view.getVariableNodes() ) {
if ( vn.isSelected() ) {
vn.setSelected(false);
viewer.refresh(vn);
for ( VariableNodeState vns : vn.states ) {
if ( vns.isSelected() ) {
vns.setSelected(false);
view.refreshViewerState(vns);
}
}
}
}
view.refreshViewProperties();
}
return null;
}
}