package org.iplantc.phyloviewer.client.layout; import org.iplantc.phyloviewer.client.math.JsBox2; import org.iplantc.phyloviewer.client.math.JsVector2; import org.iplantc.phyloviewer.shared.layout.ILayoutData; import org.iplantc.phyloviewer.shared.math.Box2D; import org.iplantc.phyloviewer.shared.math.Vector2; import org.iplantc.phyloviewer.shared.model.INode; import com.google.gwt.core.client.JavaScriptObject; public class JsLayoutCladogram extends JavaScriptObject implements ILayoutData { protected JsLayoutCladogram() {} @Override public final Vector2 getPosition(INode node) { JsVector2 v = this.getPositionNative(node.getId()); return new Vector2 (v.getX(),v.getY()); } @Override public final Box2D getBoundingBox(int nodeId) { JsBox2 box = this.getBoundingBoxNative(nodeId); JsVector2 min = box.getMin(); JsVector2 max = box.getMax(); return new Box2D(new Vector2(min.getX(),min.getY()),new Vector2(max.getX(),max.getY())); } @Override public final Box2D getBoundingBox(INode node) { return this.getBoundingBox(node.getId()); } private final native JsVector2 getPositionNative(int nodeId) /*-{ return this.positions[nodeId]; }-*/; private final native JsBox2 getBoundingBoxNative(int nodeId) /*-{ return this.bounds[nodeId]; }-*/; @Override public final boolean containsNode(INode node) { return true; } }