Skip to content
Snippets Groups Projects
Commit a0e3983b authored by Simon Barner's avatar Simon Barner
Browse files

- Define actions to collapse and expand the selected (sub-tree)

- In order to offer this functionality, the actions need to be integrated into the MenuManager by the concrete subclasses of TreeViewerEditorBase
parent 23a6a785
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,7 @@ $Id$
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.base.ui.editor;
import static org.eclipse.jface.viewers.AbstractTreeViewer.ALL_LEVELS;
import static org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils.getEObjectElements;
import java.util.Collection;
......@@ -26,12 +27,16 @@ import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EContentAdapter;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.fortiss.tooling.base.ui.dnd.jface.ViewerElementCompositionDropAdapter;
import org.fortiss.tooling.kernel.ui.extension.base.EditorBase;
import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
/**
* An editor which only consists of a tree viewer. It uses {@link TreeViewer},
......@@ -41,7 +46,7 @@ import org.fortiss.tooling.kernel.ui.extension.base.EditorBase;
* @author hoelzl
* @author $Author$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash: 29186542CEF5F6ED0F29EADB69523EB1
* @ConQAT.Rating YELLOW Hash: 88EBBD15A1CEB3F0501DEE1756334D4D
*/
public abstract class TreeViewerEditorBase<T extends EObject> extends EditorBase<T> {
......@@ -144,4 +149,58 @@ public abstract class TreeViewerEditorBase<T extends EObject> extends EditorBase
boolean getRedraw() {
return redraw;
}
/** Expands the selected sub-tree in a {@link TreeViewerEditorBase}. */
public class ExpandSubTreeAction extends Action {
/** Editor in which a sub-tree should be expanded by this action. */
private TreeViewerEditorBase<?> editor;
/** Constructor. */
public ExpandSubTreeAction(TreeViewerEditorBase<?> editor) {
super("Expand");
setToolTipText("Expands the selected (sub-tree)");
this.editor = editor;
}
/** {@inheritDoc} */
@Override
public void run() {
ISelection selection = EObjectSelectionUtils.getCurrentSelection();
if(selection instanceof IStructuredSelection && !selection.isEmpty()) {
Object object = ((IStructuredSelection)selection).getFirstElement();
if(object != null) {
editor.getTreeViewer().expandToLevel(object, ALL_LEVELS);
}
}
}
}
/** Collapses the selected sub-tree in a {@link TreeViewerEditorBase}. */
public class CollapseSubTreeAction extends Action {
/** Editor in which a sub-tree should be expanded by this action. */
private TreeViewerEditorBase<?> editor;
/** Constructor. */
public CollapseSubTreeAction(TreeViewerEditorBase<?> editor) {
super("Collapse");
setToolTipText("Collapses the selected (sub-tree)");
this.editor = editor;
}
/** {@inheritDoc} */
@Override
public void run() {
ISelection selection = EObjectSelectionUtils.getCurrentSelection();
if(selection instanceof IStructuredSelection && !selection.isEmpty()) {
Object object = ((IStructuredSelection)selection).getFirstElement();
if(object != null) {
editor.getTreeViewer().collapseToLevel(object, ALL_LEVELS);
}
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment