/*****************************************************************************
* Copyright (c) 2010 CEA LIST.
*
*
* 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:
* Saadia Dhouib saadia.dhouib@cea.fr
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.communication.custom.edit.parts;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.PositionConstants;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.papyrus.uml.diagram.communication.custom.figures.CustomWrappingLabel;
import org.eclipse.papyrus.uml.diagram.communication.edit.parts.AppliedStereotypeMessageEditPart;
import org.eclipse.papyrus.uml.diagram.communication.edit.parts.MessageEditPart;
import org.eclipse.papyrus.uml.diagram.communication.edit.parts.MessageNameEditPart;
// TODO: Auto-generated Javadoc
/**
* The Class CustomMessageEditPart.
*/
public class CustomMessageEditPart extends MessageEditPart {
/**
* Instantiates a new custom message edit part.
*
* @param view
* the view
*/
public CustomMessageEditPart(View view) {
super(view);
// TODO Auto-generated constructor stub
}
/*
* public void addChild() {
* List<EditPart> listchildren = this.getChildren();
* if(!listchildren.isEmpty()) {
* int size = listchildren.size();
* EditPart childEditPart = listchildren.get(0);
* this.addChild(childEditPart, size);
* listchildren = this.getChildren();
* size = listchildren.size();
* System.out.printf("Size of ListChildren %d\n", size);
*
* }
* }
*/
@Override
protected boolean removeFixedChild(EditPart childEditPart) {
// TODO Auto-generated method stub
if(childEditPart instanceof MessageNameEditPart) {
if(childEditPart instanceof MessageNameEditPart) {
IFigure childFigureBefore = ((GraphicalEditPart)childEditPart).getFigure();
getPrimaryShape().remove(((MessageNameEditPart)childEditPart).getFigure());
IFigure childFigure = ((GraphicalEditPart)childEditPart).getFigure();
if(childFigure.getParent() == null) {
childFigure.setParent(this.getPrimaryShape());
}
if(childFigure.getBounds() == new Rectangle(0, 0, 0, 0)) {
//System.out.println("The bound have changed!!!! ");
childFigure.setBounds(childFigureBefore.getBounds());
}
}
return true;
}
if(childEditPart instanceof AppliedStereotypeMessageEditPart) {
return true;
}
return false;
}
/**
* @see org.eclipse.papyrus.uml.diagram.communication.edit.parts.MessageEditPart#addFixedChild(org.eclipse.gef.EditPart)
*
* @param childEditPart
* @return
*/
protected boolean addFixedChild(EditPart childEditPart) {
if(childEditPart instanceof MessageNameEditPart) {
CustomWrappingLabel fFigureMessageCreateLabelFigure = new CustomWrappingLabel();
fFigureMessageCreateLabelFigure.setText("Message"); //$NON-NLS-1$
//fFigureMessageCreateLabelFigure.setTextWrap(true);
fFigureMessageCreateLabelFigure.setTextJustification(PositionConstants.CENTER);
fFigureMessageCreateLabelFigure.setAlignment(PositionConstants.CENTER);
fFigureMessageCreateLabelFigure.setIconAlignment(PositionConstants.CENTER);
IFigure childFigureBefore = ((GraphicalEditPart)childEditPart).getFigure();
IFigure fig = getFigure();
if((childFigureBefore == null)) {//First time the label is added to the figure of the message connector
fig.add(fFigureMessageCreateLabelFigure);
//getFigure().add(fFigureMessageCreateLabelFigure);
//setFigure(getFigure());
((MessageNameEditPart)childEditPart).setLabel(fFigureMessageCreateLabelFigure);
} else {//The figure has been already removed and now we re-add it to the Message Connector Figure (getFigure())
fig.add(childFigureBefore);
}
return true;
}
if(childEditPart instanceof AppliedStereotypeMessageEditPart) {
((AppliedStereotypeMessageEditPart)childEditPart).setLabel(getPrimaryShape().getAppliedStereotypeLabel());
return true;
}
return false;
}
}