Skip to content
Snippets Groups Projects
Commit e3334c6c authored by Daniel Ratiu's avatar Daniel Ratiu
Browse files

a first implementation for feature 92 -- now the navigator view can filter out...

a first implementation for feature 92 -- now the navigator view can filter out elements that should not be displayed in non-expert view.
refs 92
parent c09a14eb
No related branches found
No related tags found
No related merge requests found
org.fortiss.tooling.kernel.ui/trunk/icons/expert_view.png

876 B

......@@ -86,4 +86,10 @@ public interface IModelElementHandler<T extends EObject> extends
* in graphical editors.
*/
List<EObject> getSpecifications(T element);
/**
* Returns true if the underlying element should be visible in the navigator
* in the non-expert view.
*/
boolean hiddenInNonExpertView();
}
......@@ -93,4 +93,10 @@ public abstract class ModelElementHandlerBase<T extends EObject> implements
public List<EObject> getSpecifications(T element) {
return Collections.emptyList();
}
/** {@inheritDoc} */
@Override
public boolean hiddenInNonExpertView() {
return false;
}
}
......@@ -39,6 +39,9 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
*/
public class NavigatorTreeContentProvider implements ITreeContentProvider {
/** Stores whether the expert view is active. **/
private boolean expertViewActive = false;
/** {@inheritDoc} */
@Override
public Object[] getElements(Object inputElement) {
......@@ -54,22 +57,42 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
/** {@inheritDoc} */
@Override
public Object[] getChildren(Object parentElement) {
public Object[] getChildren(Object parent) {
// delegate to the model element handlers
if (parentElement instanceof EObject) {
if (parent instanceof EObject) {
EObject parentElement = (EObject) parent;
IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE
.getModelElementHandler((EObject) parentElement);
.getModelElementHandler(parentElement);
if (handler != null) {
List<EObject> children = new ArrayList<EObject>();
children.addAll(handler.getSubnodes((EObject) parentElement));
children.addAll(handler
.getSpecifications((EObject) parentElement));
children.addAll(filterExpertElements(handler
.getSubnodes(parentElement)));
children.addAll(filterExpertElements(handler
.getSpecifications(parentElement)));
return children.toArray();
}
}
return new Object[0];
}
/**
* If {@link #expertViewActive} is false then we filter out elements
* according to {@link IModelElementHandler#hiddenInNonExpertView()}
*/
private List<EObject> filterExpertElements(List<EObject> elements) {
if (!expertViewActive) {
List<EObject> filtered = new ArrayList<EObject>();
for (EObject current : elements) {
IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE
.getModelElementHandler(current);
if (!handler.hiddenInNonExpertView())
filtered.add(current);
}
return filtered;
}
return elements;
}
/** {@inheritDoc} */
@Override
public Object getParent(Object element) {
......@@ -100,4 +123,12 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
// the input of this viewer is the persistency service singleton and
// therefore never changes.
}
/**
* Toggle the expert view. When expert view is active then more objects are
* displayed in the tree.
*/
public void toggleExpertView() {
expertViewActive = !expertViewActive;
}
}
......@@ -63,8 +63,8 @@ import org.fortiss.tooling.kernel.ui.service.IContextMenuService;
import org.fortiss.tooling.kernel.ui.service.IModelEditorBindingService;
import org.fortiss.tooling.kernel.ui.service.INavigatorService;
import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
import org.fortiss.tooling.kernel.ui.util.PropertiesConstantUtils;
import org.fortiss.tooling.kernel.ui.util.ModelElementLabelProvider;
import org.fortiss.tooling.kernel.ui.util.PropertiesConstantUtils;
/**
* {@link ViewPart} of the model navigator provided by the tooling kernel.
......@@ -94,6 +94,9 @@ public final class NavigatorViewPart extends ViewPart implements
/** Stores the toggle action for editor linkage. */
private Action linkWithEditorAction = null;
/** Toggle expert view filter action. */
private Action toggleExpertViewAction = null;
/** Dialog setting ID for the link with editor action flag. */
private static final String LINK_WITH_EDITOR_FLAG = "navigatorSettingLinkWithEditor";
......@@ -188,11 +191,26 @@ public final class NavigatorViewPart extends ViewPart implements
linkWithEditorAction.setChecked(ToolingKernelUIActivator.getDefault()
.getDialogSettings().getBoolean(LINK_WITH_EDITOR_FLAG));
toggleExpertViewAction = new Action("Toggle expert view", SWT.TOGGLE) {
@Override
public void run() {
((NavigatorTreeContentProvider) viewer.getContentProvider())
.toggleExpertView();
viewer.refresh();
}
};
toggleExpertViewAction.setImageDescriptor(ToolingKernelUIActivator
.getImageDescriptor("icons/expert_view.png"));
toggleExpertViewAction.setToolTipText("Toggle expert view");
IToolBarManager toolBarManager = getViewSite().getActionBars()
.getToolBarManager();
Separator additionsSeperator = new Separator("additions");
additionsSeperator.setVisible(true);
toolBarManager.add(additionsSeperator);
toolBarManager.insertAfter("additions", toggleExpertViewAction);
toolBarManager.insertAfter("additions", linkWithEditorAction);
}
......
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