View Javadoc

1   package org.kite9.diagram.position;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   
7   /***
8    * This is used to hold the route of an edge, or container border.
9    * 
10   * @author robmoffat
11   *
12   */
13  public class RouteRenderingInformation implements RenderingInformation {
14  
15      public RouteRenderingInformation() {
16  	}
17  
18  	private static final long serialVersionUID = 1958606211421399887L;
19  
20  	public List<Dimension2D> positions = new ArrayList<Dimension2D>();
21  	
22  	public Dimension2D getWaypoint(int pos) {
23  		return positions.get(pos);
24  	}
25  	
26  	public int size() {
27  		return positions.size();
28  	}
29  	
30  	public void add(Dimension2D d) {
31  		positions.add(d);
32  	}
33  	
34  	public void set(int point, Dimension2D d) {
35  		while (point>=positions.size()) {
36  			positions.add(null);
37  		}
38  		positions.set(point, d);
39  	}
40  	
41  	private boolean endHop = false, startHop= false;
42  	
43  	@Override
44  	public String toString() {
45  		StringBuffer sb= new StringBuffer();
46  		for (int i = 0; i < size(); i++) {
47  			sb.append("("+getWaypoint(i).x()+", "+getWaypoint(i).y()+")");
48  		}
49  		return sb.toString();
50  	}
51  
52  	public boolean isEndHop() {
53  		return endHop;
54  	}
55  
56  	public void setEndHop(boolean endHop) {
57  		this.endHop = endHop;
58  	}
59  
60  	public boolean isStartHop() {
61  		return startHop;
62  	}
63  
64  	public void setStartHop(boolean startHop) {
65  		this.startHop = startHop;
66  	}
67  	
68  	public Dimension2D getBoundingSize() {
69  	    Dimension2D pos = getBoundingPosition();
70  	    double x =0, y= 0;
71  	    for (Dimension2D p : positions) {
72  		x = Math.max(p.x(),x);
73  		y = Math.max(p.y(),y);
74  	    }
75  	    
76  	    return new Dimension2D(x-pos.x(), y-pos.y());
77  	}
78  	
79  	public Dimension2D getBoundingPosition() {
80  	    double x =Double.MAX_VALUE, y= Double.MAX_VALUE;
81  	    for (Dimension2D p : positions) {
82  		x = Math.min(p.x(),x);
83  		y = Math.min(p.y(),y);
84  	    }
85  	    
86  	    return new Dimension2D(x,y);
87  	}
88  }