Skip to content
Snippets Groups Projects
Commit dafef52d authored by Florian Hölzl's avatar Florian Hölzl
Browse files

undid hack implementation

refs 890
parent 84e01ca9
No related branches found
No related tags found
No related merge requests found
......@@ -16,6 +16,7 @@ Export-Package: org.fortiss.tooling.kernel.ui,
org.fortiss.tooling.kernel.ui.extension,
org.fortiss.tooling.kernel.ui.extension.base,
org.fortiss.tooling.kernel.ui.extension.data,
org.fortiss.tooling.kernel.ui.internal.views,
org.fortiss.tooling.kernel.ui.listener,
org.fortiss.tooling.kernel.ui.presentation,
org.fortiss.tooling.kernel.ui.service,
......
......@@ -25,7 +25,6 @@ import org.eclipse.swt.graphics.Image;
import org.fortiss.tooling.kernel.service.base.IEObjectAware;
import org.fortiss.tooling.kernel.ui.extension.base.ModelElementHandlerBase;
import org.fortiss.tooling.kernel.ui.extension.base.NamedCommentedModelElementHandlerBase;
import org.fortiss.tooling.kernel.ui.internal.views.NavigatorTreeContentProvider;
import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
/**
......@@ -39,7 +38,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
* @author hoelzl
* @author $Author$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash: 319AA778BC0D6BFC6DE49B2732E244C4
* @ConQAT.Rating YELLOW Hash: 3FBFC2717E92F920EF5465081EF96502
*/
public interface IModelElementHandler<T extends EObject> extends IEObjectAware<T> {
......@@ -111,12 +110,4 @@ public interface IModelElementHandler<T extends EObject> extends IEObjectAware<T
* than this, but MUST NOT return <code>null</code>.
*/
EObject getPropertySectionRetargetElement(T element);
/**
* Returns the list of categories to be inserted after the model element in the navigator view.
* Model element handlers may provide categories here in order to structure its content
* elements. If they do not need this feature this method must return {@code null}.
*/
List<NavigatorTreeContentProvider.NavigatorContentCategory<? extends EObject>>
getCategoryNodes(EObject parentElement);
}
......@@ -24,7 +24,6 @@ import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
import org.fortiss.tooling.kernel.ui.internal.views.NavigatorTreeContentProvider.NavigatorContentCategory;
/**
* Base implementation for {@link IModelElementHandler}s.
......@@ -37,7 +36,7 @@ import org.fortiss.tooling.kernel.ui.internal.views.NavigatorTreeContentProvider
* @author hoelzl
* @author $Author$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash: F758FB8C87BE0A3BC40D97CA25790D7E
* @ConQAT.Rating YELLOW Hash: 15034C4A5AB0D468364D08BDF136C88A
*/
public abstract class ModelElementHandlerBase<T extends EObject> implements IModelElementHandler<T> {
......@@ -121,15 +120,4 @@ public abstract class ModelElementHandlerBase<T extends EObject> implements IMod
public EObject getPropertySectionRetargetElement(T element) {
return element;
}
/**
* {@inheritDoc}
* <P>
* The base implementation returns {@code null}.
*/
@Override
public List<NavigatorContentCategory<? extends EObject>>
getCategoryNodes(EObject parentElement) {
return null;
}
}
......@@ -24,7 +24,6 @@ import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.graphics.Image;
import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
import org.fortiss.tooling.kernel.service.IPersistencyService;
import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
......@@ -36,7 +35,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
* @author hoelzlf
* @author $Author$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash: 7D46EA19284C59D9804C13C434446A57
* @ConQAT.Rating GREEN Hash: AF1815BF663456271E6585863FEC15B4
*/
public class NavigatorTreeContentProvider implements ITreeContentProvider {
......@@ -49,7 +48,8 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
// delegate to the top-level element contexts of the persistency service
List<EObject> result = new LinkedList<EObject>();
for(ITopLevelElement context : IPersistencyService.INSTANCE.getTopLevelElements()) {
for (ITopLevelElement context : IPersistencyService.INSTANCE
.getTopLevelElements()) {
result.add(context.getRootModelElement());
}
return result.toArray();
......@@ -59,20 +59,16 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
@Override
public Object[] getChildren(Object parent) {
// delegate to the model element handlers
if(parent instanceof EObject) {
EObject parentElement = (EObject)parent;
IModelElementHandler<EObject> handler =
IModelElementHandlerService.INSTANCE.getModelElementHandler(parentElement);
if(handler != null) {
List<NavigatorContentCategory<? extends EObject>> categories =
handler.getCategoryNodes(parentElement);
if(categories != null) {
return categories.toArray();
}
// the default returns sub nodes and specifications
if (parent instanceof EObject) {
EObject parentElement = (EObject) parent;
IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE
.getModelElementHandler(parentElement);
if (handler != null) {
List<EObject> children = new ArrayList<EObject>();
children.addAll(filterExpertElements(handler.getSubnodes(parentElement)));
children.addAll(filterExpertElements(handler.getSpecifications(parentElement)));
children.addAll(filterExpertElements(handler
.getSubnodes(parentElement)));
children.addAll(filterExpertElements(handler
.getSpecifications(parentElement)));
return children.toArray();
}
}
......@@ -84,12 +80,12 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
* according to {@link IModelElementHandler#hiddenInNonExpertView()}
*/
private List<EObject> filterExpertElements(List<EObject> elements) {
if(!expertViewActive) {
if (!expertViewActive) {
List<EObject> filtered = new ArrayList<EObject>();
for(EObject current : elements) {
IModelElementHandler<EObject> handler =
IModelElementHandlerService.INSTANCE.getModelElementHandler(current);
if(!handler.hiddenInNonExpertView())
for (EObject current : elements) {
IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE
.getModelElementHandler(current);
if (!handler.hiddenInNonExpertView())
filtered.add(current);
}
return filtered;
......@@ -100,8 +96,9 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
/** {@inheritDoc} */
@Override
public Object getParent(Object element) {
if(element instanceof EObject &&
IPersistencyService.INSTANCE.isTopLevelElement((EObject)element)) {
if (element instanceof EObject
&& IPersistencyService.INSTANCE
.isTopLevelElement((EObject) element)) {
// delegate to persistency service
return IPersistencyService.INSTANCE;
}
......@@ -134,30 +131,4 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
public void toggleExpertView() {
expertViewActive = !expertViewActive;
}
/**
* Class for navigator content objects, which allow {@link IModelElementHandler} to provide
* sub-elements in different categories.
*/
public abstract class NavigatorContentCategory<T extends EObject> {
/** The parent object of the category. */
protected T parent;
/** A model element handler that provided this element. */
protected IModelElementHandler<T> handler;
/** Constructor. */
protected NavigatorContentCategory(T parent, IModelElementHandler<T> handler) {
this.parent = parent;
this.handler = handler;
}
/** Returns the sub-nodes for this category. */
public abstract List<EObject> getSubNodes();
/** Returns the category name. */
public abstract String getName();
/** Returns the category icon. */
public abstract Image getIcon();
}
}
......@@ -26,7 +26,6 @@ import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.fortiss.tooling.kernel.model.INamedElement;
import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
import org.fortiss.tooling.kernel.ui.internal.views.NavigatorTreeContentProvider.NavigatorContentCategory;
import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
......@@ -36,32 +35,29 @@ import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
* @author mou
* @author $Author$
* @version $Rev$
* @ConQAT.Rating YELLOW Hash: 53BE9186639ED93437E9D62E129DF460
* @ConQAT.Rating GREEN Hash: A10454849AA7D7BF9679F8CCAF5FA027
*/
@SuppressWarnings("rawtypes")
public class ModelElementLabelProvider extends LabelProvider {
/** {@inheritDoc} */
@Override
public String getText(Object element) {
if(element instanceof EObject) {
IModelElementHandler<EObject> handler =
IModelElementHandlerService.INSTANCE.getModelElementHandler((EObject)element);
if (element instanceof EObject) {
IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE
.getModelElementHandler((EObject) element);
if(handler != null)
return handler.getName((EObject)element);
if (handler != null)
return handler.getName((EObject) element);
// try to fall back on INamedElementModel
if(element instanceof INamedElement) {
return ((INamedElement)element).getName();
if (element instanceof INamedElement) {
return ((INamedElement) element).getName();
}
error(getDefault(),
"Missing model element handler of non-INamedElement EObject of class " +
element.getClass());
"Missing model element handler of non-INamedElement EObject of class "
+ element.getClass());
}
if(element instanceof NavigatorContentCategory) {
return ((NavigatorContentCategory)element).getName();
}
if(element instanceof IStructuredSelection) {
return getText(EObjectSelectionUtils.getFirstElement((IStructuredSelection)element));
if (element instanceof IStructuredSelection) {
return getText(EObjectSelectionUtils
.getFirstElement((IStructuredSelection) element));
}
return super.getText(element);
}
......@@ -69,16 +65,13 @@ public class ModelElementLabelProvider extends LabelProvider {
/** {@inheritDoc} */
@Override
public Image getImage(Object element) {
if(element instanceof EObject) {
IModelElementHandler<EObject> handler =
IModelElementHandlerService.INSTANCE.getModelElementHandler((EObject)element);
if (element instanceof EObject) {
IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE
.getModelElementHandler((EObject) element);
if(handler != null)
if (handler != null)
return handler.getIcon();
}
if(element instanceof NavigatorContentCategory) {
return ((NavigatorContentCategory)element).getIcon();
}
return super.getImage(element);
}
}
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