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

implemented improved double click behavior

refs 210
parent 0a4e0f0d
No related branches found
No related tags found
No related merge requests found
......@@ -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);
}
......
......@@ -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);
}
......@@ -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;
}
}
......@@ -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);
}
}
......
......@@ -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();
......
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