/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.diagram.ui.part;
//import org.eclipse.draw2d.ColorConstants;
import java.beans.PropertyChangeEvent;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.DragTracker;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.Request;
import org.teiid.designer.diagram.ui.DiagramUiConstants;
import org.teiid.designer.diagram.ui.figure.AssociationLabelFigure;
import org.teiid.designer.diagram.ui.figure.LabeledRectangleFigure;
import org.teiid.designer.diagram.ui.model.DiagramModelNode;
/**
* LabelEditPart
*
* @since 8.0
*/
public class LabelEditPart extends AbstractFreeEditPart {
private static int labelCount = 0;
/**
* Construct an instance of LabelEditPart.
*
*/
public LabelEditPart() {
super();
}
/**
* @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
**/
@Override
protected IFigure createFigure() {
Point posn = new Point(10, 100 + labelCount*5);
Figure newFigure = new AssociationLabelFigure(((DiagramModelNode) getModel()).getName(), false, null);
// NoteFigure noteFigure = new NoteFigure((Composite)getRoot().getViewer().getControl());
// noteFigure.setText("SOME NOTE FIGURE WITH LOTS OF TEXT HERE.");
// IFigure newFigure = noteFigure.getViewport().getContents();
// newFigure.setBackgroundColor(ColorConstants.cyan);
// newFigure.setBorder(new LineBorder(2));
newFigure.setLocation(posn);
((DiagramModelNode) getModel()).setPosition(posn);
((DiagramModelNode) getModel()).setSize(newFigure.getSize());
labelCount ++;
return newFigure;
}
/**
* @see org.eclipse.gef.editparts.AbstractEditPart#createEditPolicies()
* You need to tell how children nodes will be layed out...
**/
@Override
protected void createEditPolicies() {
setSelectablePart(false);
}
/* (non-JavaDoc)
* @see java.beans.PropertyChangeListener#propertyChange(PropertyChangeEvent)
**/
@Override
public void propertyChange(PropertyChangeEvent evt) {
super.propertyChange(evt);
String prop = evt.getPropertyName();
if( prop.equals(DiagramUiConstants.DiagramNodeProperties.NAME)) {
refreshName();
((LabeledRectangleFigure)getFigure()).resize();
((DiagramModelNode)getModel()).setSize(getFigure().getSize());
// refreshVisuals();
}
}
/**
* @see org.eclipse.gef.editparts.AbstractEditPart#refreshVisuals()
**/
@Override
protected void refreshVisuals() {
Point loc = ((DiagramModelNode) getModel()).getPosition();
Dimension size = ((DiagramModelNode) getModel()).getSize();
Rectangle r = new Rectangle(loc, size);
((GraphicalEditPart) getParent()).setLayoutConstraint(this, getFigure(), r);
getFigure().repaint();
}
/* (non-Javadoc)
* @see org.eclipse.gef.EditPart#getDragTracker(org.eclipse.gef.Request)
*/
@Override
public DragTracker getDragTracker(Request request) {
// We wanted to remove selection capability to the Labeled objects in the diagram.
// This was the only way I could figure out how to do it. Don't let it play
// in selection...
return null;
}
}