diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ElementEditPartBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ElementEditPartBase.java index 98f9a45478577b07e0e10b4d577aa2f2654f3e0b..b17d0883975bb9da10578ef3bcb867d82b8e7df7 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ElementEditPartBase.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ElementEditPartBase.java @@ -28,6 +28,7 @@ import org.eclipse.draw2d.ConnectionAnchor; import org.eclipse.draw2d.Label; import org.eclipse.draw2d.PositionConstants; import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.emf.ecore.EObject; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.Request; @@ -43,6 +44,7 @@ import org.fortiss.tooling.base.ui.editpart.policy.DirectConnectionAndReconnecti import org.fortiss.tooling.base.ui.editpart.policy.ElementLayoutEditPolicy; import org.fortiss.tooling.base.ui.editpart.policy.RemoveEditPolicy; import org.fortiss.tooling.kernel.model.INamedCommentedElement; +import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler; import org.fortiss.tooling.kernel.ui.service.IModelEditorBindingService; import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService; @@ -57,7 +59,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService; * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 6E6607D4852E9BEF4236A47605A8B315 + * @ConQAT.Rating YELLOW Hash: 72C4DDDA8A3A00B520E94DCEA1D58075 */ public abstract class ElementEditPartBase<T extends ILayoutedModelElement & INamedCommentedElement> extends PositionedEditPartBase<T> { @@ -134,7 +136,13 @@ public abstract class ElementEditPartBase<T extends ILayoutedModelElement & INam @Override public void performRequest(Request req) { if (req.getType() == RequestConstants.REQ_OPEN) { - IModelEditorBindingService.INSTANCE.openInEditor(getModel()); + EObject eo = getModel(); + IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE + .getModelElementHandler(eo); + if (handler != null) { + eo = handler.handleOpenModelElementRequest(eo); + } + IModelEditorBindingService.INSTANCE.openInEditor(eo); } super.performRequest(req); } diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelElementHandler.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelElementHandler.java index 0fb3e54c6f0cf5a9e5bbb258d879474a18756041..45b2b851bd24d6ee840ce34c1dd79231af74db1f 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelElementHandler.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelElementHandler.java @@ -38,7 +38,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService; * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 147CEFD0C47F4808CBE08A3A0EA0B0D7 + * @ConQAT.Rating YELLOW Hash: B70658CE4F4F97254156C590DF944C2B */ public interface IModelElementHandler<T extends EObject> extends IEObjectAware<T> { @@ -92,4 +92,10 @@ public interface IModelElementHandler<T extends EObject> extends * navigator's simplified non-expert view. */ boolean hiddenInNonExpertView(); + + /** + * Handles the open model element request by returning the object that + * should be passed to the model editor service. + */ + EObject handleOpenModelElementRequest(T element); } diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java index aba0adf6a58006849db73088eed986a22a28efbc..c483efc2c5708437c83287848762c66adfd34429 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java @@ -30,12 +30,13 @@ import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler; * * Sub-classes must implement {@link #getIconImageDescriptor()} and may override * the other methods of {@link IModelElementHandler}. By default the base - * implementation returns empty lists for the respective methods. + * implementation returns empty lists for the respective methods. Open editor + * requests are handled by returning the model element itself. * * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating GREEN Hash: C425E25E66646B2383453FCE7C93A894 + * @ConQAT.Rating YELLOW Hash: 79E79146952109EB8D56A32668C2BC8D */ public abstract class ModelElementHandlerBase<T extends EObject> implements IModelElementHandler<T> { @@ -98,4 +99,10 @@ public abstract class ModelElementHandlerBase<T extends EObject> implements public boolean hiddenInNonExpertView() { return false; } + + /** {@inheritDoc} */ + @Override + public EObject handleOpenModelElementRequest(T element) { + return element; + } } diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/DoubleClick.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/DoubleClick.java index 159a8204750628dac7a9d14c16310aa01e659ad3..9df2b95c8ef4b0814caae5b1c5ef3bddc3a7e30a 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/DoubleClick.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/DoubleClick.java @@ -21,7 +21,9 @@ import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.IStructuredSelection; +import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler; import org.fortiss.tooling.kernel.ui.service.IModelEditorBindingService; +import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService; import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils; /** @@ -30,10 +32,23 @@ import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils; * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 53A68C6E1A420B57E77FAF9B3E1B472A + * @ConQAT.Rating YELLOW Hash: 8E97B6DDA60D757813BABD53879EE92A */ final class DoubleClick implements IDoubleClickListener { + /** Stores the use-raw-eobject flag. */ + private final boolean useRawEObject; + + /** Constructor. */ + public DoubleClick() { + this(false); + } + + /** Constructor. */ + public DoubleClick(boolean useRawEObject) { + this.useRawEObject = useRawEObject; + } + /** {@inheritDoc} */ @Override public void doubleClick(DoubleClickEvent event) { @@ -42,6 +57,14 @@ final class DoubleClick implements IDoubleClickListener { EObject element = EObjectSelectionUtils.getFirstElement(event .getSelection()); if (element != null) { + if (!useRawEObject) { + IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE + .getModelElementHandler(element); + if (handler != null) { + element = handler + .handleOpenModelElementRequest(element); + } + } IModelEditorBindingService.INSTANCE.openInEditor(element); } } diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java index 04c93f343bad89f6ffc35bb45fe19bebb037920e..69602dd4fb159f7751cad3ced1f1679e4ef85f65 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java @@ -54,7 +54,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService; * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 8E0E8EEE1C47D3C3885B66756CABB8A6 + * @ConQAT.Rating YELLOW Hash: 36DE8B9C23FA2DA1BBAC12F0F9635DDA */ public class MarkerViewPart extends ViewPart { @@ -187,7 +187,7 @@ public class MarkerViewPart extends ViewPart { } }); - gui.getTreeViewer().addDoubleClickListener(new DoubleClick()); + gui.getTreeViewer().addDoubleClickListener(new DoubleClick(true)); gui.getTreeViewer().setInput(IMarkerService.INSTANCE); createToggleActions();