/* * 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.layout; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; import org.teiid.designer.diagram.ui.model.DiagramModelNode; /** * DefaultLayoutNode * * @since 8.0 */ public class DefaultLayoutNode implements LayoutNode { private DiagramModelNode modelNode; private double thisX; private double thisY; private double centerX; private double centerY; private Rectangle bounds; public DefaultLayoutNode(DiagramModelNode modelNode) { if( modelNode != null ) { this.modelNode = modelNode; centerX = modelNode.getCenterX(); centerY = modelNode.getCenterY(); bounds = new Rectangle(0, 0, modelNode.getWidth(), modelNode.getHeight()); } } @Override public DiagramModelNode getModelNode() { return modelNode; } @Override public Rectangle getBounds() { return bounds; } @Override public void setCenterXY(double x, double y) { centerX = x; centerY = y; thisX = centerX - getWidth()/2; thisY = centerY - getHeight()/2; bounds.setLocation((int)thisX, (int)thisY); // System.out.println(" -->> DefaultLayoutNode.setCenterXY(): New XY Point = " + getPosition()); } @Override public void setCenterX(double x) { centerX = x; thisX = centerX - getWidth()/2; bounds.setLocation((int)thisX, (int)thisY); } @Override public void setCenterY(double y) { centerY = y; thisY = centerY - getHeight()/2; bounds.setLocation((int)thisX, (int)thisY); } @Override public Point getPosition() { return new Point(thisX, thisY); } @Override public void setPosition(Point point ) { thisX = point.x; thisY = point.y; setCenterX(thisX + getWidth()/2); setCenterY(thisY + getHeight()/2); bounds.setLocation(point); // System.out.println(" -->> DefaultLayoutNode.setPosition(): New XY Point = " + point); } @Override public void setPosition(double x, double y) { thisX = x; thisY = y; setCenterX(thisX + getWidth()/2); setCenterY(thisY + getHeight()/2); bounds.setLocation((int)thisX, (int)thisY); } @Override public void setX(double x) { thisX = x; setCenterX(thisX + getWidth()/2); bounds.setLocation((int)thisX, (int)thisY); } @Override public void setY(double y) { thisY = y; setCenterY(thisY + getHeight()/2); bounds.setLocation((int)thisX, (int)thisY); } @Override public double getX() { return thisX; } @Override public double getY() { return thisY; } @Override public double getWidth() { return bounds.width; } @Override public double getHeight() { return bounds.height; } @Override public double getCenterX() { return centerX; } @Override public double getCenterY() { return centerY; } @Override public void setFinalPosition() { getModelNode().setCenterXY((int)getCenterX(), (int)getCenterY()); } /** * @param rectangle */ @Override public void setBounds(Rectangle rectangle) { bounds = rectangle; } }