package rocks.inspectit.ui.rcp.handlers; import java.util.Iterator; import org.apache.commons.lang.StringUtils; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.handlers.HandlerUtil; import rocks.inspectit.ui.rcp.editor.root.AbstractRootEditor; import rocks.inspectit.ui.rcp.editor.tree.TreeSubView; /** * Collapse handler for trees. * * @author Ivan Senic * */ public class TreeCollapseHandler extends AbstractHandler implements IHandler { /** * Parameter that defines if collapse is performed on all elements or just the selected ones. */ public static final String IS_COLLAPSE_ALL_PARAMETER = "rocks.inspectit.ui.rcp.commands.collapse.isCollapseAll"; /** * {@inheritDoc} */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { String param = event.getParameter(IS_COLLAPSE_ALL_PARAMETER); if (StringUtils.isNotEmpty(param)) { boolean isCollapseAll = Boolean.parseBoolean(param); AbstractRootEditor rootEditor = (AbstractRootEditor) HandlerUtil.getActiveEditor(event); TreeSubView treeSubView = (TreeSubView) rootEditor.getActiveSubView(); if (isCollapseAll) { treeSubView.getTreeViewer().collapseAll(); } else { IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); for (Iterator<?> iterator = selection.iterator(); iterator.hasNext();) { Object object = iterator.next(); treeSubView.getTreeViewer().collapseToLevel(object, AbstractTreeViewer.ALL_LEVELS); } } } return null; } }