/*******************************************************************************
* Copyright (c) 2010-2015 Henshin developers. All rights reserved.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* TU Berlin, University of Luxembourg, SES S.A.
*******************************************************************************/
/**
*
*/
package de.tub.tfs.henshin.editor.editparts.flow_diagram.graphical;
import org.eclipse.draw2d.IFigure;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.henshin.model.NamedElement;
import org.eclipse.emf.henshin.model.Rule;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.jface.util.TransferDropTargetListener;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.Transfer;
import de.tub.tfs.henshin.editor.figure.flow_diagram.ActivityFigure;
import de.tub.tfs.henshin.editor.util.ResourceUtil;
import de.tub.tfs.henshin.model.flowcontrol.Activity;
import de.tub.tfs.henshin.model.flowcontrol.FlowControlPackage;
import de.tub.tfs.henshin.model.layout.FlowElementLayout;
import de.tub.tfs.muvitor.ui.MuvitorTreeEditor;
/**
* @author nam
*
*/
public class ActivityEditPart<T extends Activity> extends
FlowElementEditPart<T> {
/**
* @param model
*/
public ActivityEditPart(T model) {
super(model);
EObject content = model.getContent();
if (content != null) {
registerAdapter(content);
}
}
/*
* (non-Javadoc)
*
* @see de.tub.tfs.henshin.editor.editparts.flow_diagram.graphical.
* FlowElementEditpart#hookCreateFigure()
*/
@Override
protected IFigure hookCreateFigure() {
ActivityFigure fig = new ActivityFigure();
fig.setName(null);
return fig;
}
/*
* (non-Javadoc)
*
* @see de.tub.tfs.henshin.editor.editparts.flow_diagram.graphical.
* FlowElementEditPart
* #notifyChanged(org.eclipse.emf.common.notify.Notification)
*/
@Override
protected void notifyChanged(Notification notification) {
int flowMsgId = notification.getFeatureID(FlowControlPackage.class);
int msgType = notification.getEventType();
switch (flowMsgId) {
case FlowControlPackage.ACTIVITY__CONTENT:
if (msgType == Notification.SET) {
EObject newContentEObject = getCastedModel().getContent();
if (newContentEObject != null) {
registerAdapter(newContentEObject);
}
}
break;
default:
break;
}
super.notifyChanged(notification);
}
/*
* (non-Javadoc)
*
* @see
* de.tub.tfs.muvitor.gef.editparts.AdapterGraphicalEditPart#performOpen()
*/
@Override
protected void performOpen() {
NamedElement content = getCastedModel().getContent();
if (content != null) {
MuvitorTreeEditor.showView(content);
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#activate()
*/
@Override
public void activate() {
super.activate();
GraphicalViewer viewer = (GraphicalViewer) getViewer();
viewer.addDropTargetListener(new TransferDropTargetListener() {
@Override
public void dropAccept(DropTargetEvent event) {
// TODO Auto-generated method stub
}
@Override
public void drop(DropTargetEvent event) {
// TODO Auto-generated method stub
}
@Override
public void dragOver(DropTargetEvent event) {
// TODO Auto-generated method stub
}
@Override
public void dragOperationChanged(DropTargetEvent event) {
// TODO Auto-generated method stub
}
@Override
public void dragLeave(DropTargetEvent event) {
// TODO Auto-generated method stub
}
@Override
public void dragEnter(DropTargetEvent event) {
// TODO Auto-generated method stub
}
@Override
public boolean isEnabled(DropTargetEvent event) {
System.out.println("askdjflasjdfl;asjf;lja;slf");
return true;
}
@Override
public Transfer getTransfer() {
// TODO Auto-generated method stub
return null;
}
});
}
/*
* (non-Javadoc)
*
* @see de.tub.tfs.henshin.editor.editparts.flow_diagram.graphical.
* FlowElementEditpart#layoutFigure(org.eclipse.draw2d.IFigure)
*/
@Override
protected void layoutFigure(IFigure f) {
super.layoutFigure(f);
ActivityFigure fig = (ActivityFigure) f;
NamedElement modelContent = getCastedModel().getContent();
FlowElementLayout layoutModel = getLayoutModel();
if (modelContent == null) {
fig.setName(null);
fig.setMapping(-1);
} else if (layoutModel != null) {
fig.setMapping(layoutModel.getMapId());
fig.setName(modelContent.getName());
if (modelContent instanceof Rule) {
fig.setContentIcon(ResourceUtil.ICONS.RULE.img(25));
fig.setToolTip("Activity \"" + modelContent.getName()
+ "\".\nDouble click to open.");
} else {
fig.setContentIcon(ResourceUtil.ICONS.LINK.img(18));
fig.setToolTip("Activity linked to \"" + modelContent.getName()
+ "\".\nDouble click to open.");
}
}
}
}