package org.iplantc.phyloviewer.shared.layout;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.iplantc.phyloviewer.shared.math.Box2D;
import org.iplantc.phyloviewer.shared.math.Vector2;
import org.iplantc.phyloviewer.shared.model.INode;
public class LayoutStorage implements ILayoutData
{
private Map<Integer,Vector2> positions = new HashMap<Integer,Vector2>();
private Map<Integer,Box2D> bounds = new HashMap<Integer,Box2D>();
public LayoutStorage()
{
}
@Override
public Box2D getBoundingBox(INode node)
{
return this.getBoundingBox(node.getId());
}
@Override
public Box2D getBoundingBox(int nodeId)
{
return bounds.get(nodeId);
}
public Box2D getBoundingBox(Integer key)
{
return bounds.get(key);
}
@Override
public Vector2 getPosition(INode node)
{
return positions.get(node.getId());
}
public Vector2 getPosition(Integer key)
{
return positions.get(key);
}
public boolean containsNode(INode node)
{
return this.positions.containsKey(node.getId());
}
public boolean containsNodes(INode[] nodes)
{
for(int i = 0;i < nodes.length;i++)
{
if(!this.containsNode(nodes[i]))
{
return false;
}
}
return true;
}
public void init(int numberOfNodes)
{
positions = new HashMap<Integer,Vector2>(numberOfNodes);
bounds = new HashMap<Integer,Box2D>(numberOfNodes);
}
public void setPositionAndBounds(int nodeId, Vector2 position, Box2D box)
{
bounds.put(nodeId, box);
positions.put(nodeId, position);
}
public void setBoundingBox(INode node, Box2D box2d)
{
bounds.put(node.getId(), box2d);
}
public void setPosition(INode node, Vector2 vector2)
{
positions.put(node.getId(), vector2);
}
public Set<Integer> keySet()
{
return positions.keySet();
}
}