lib/browser/GraphBrowser/Graph.java
changeset 37738 7bf3ec9e7b0c
parent 33686 8e33ca8832b1
child 50473 ca4088bf8365
equal deleted inserted replaced
37737:243ea7885e05 37738:7bf3ec9e7b0c
    15 public class Graph {
    15 public class Graph {
    16 	/**** parameters for layout ****/
    16 	/**** parameters for layout ****/
    17 
    17 
    18 	public int box_height=0;
    18 	public int box_height=0;
    19 	public int box_height2;
    19 	public int box_height2;
    20 	public int box_width;
    20 	public Graphics gfx;
    21 	public int box_width2;
       
    22 	public int box_hspace;
       
    23 
    21 
    24 	Vector vertices=new Vector(10,10);
    22 	Vector vertices=new Vector(10,10);
    25 	Vector splines=new Vector(10,10);
    23 	Vector splines=new Vector(10,10);
    26 	Vector numEdges=new Vector(10,10);
    24 	Vector numEdges=new Vector(10,10);
    27 	Vertex []vertices2;
    25 	Vertex []vertices2;
   183 	/*                      set layout parameters                       */
   181 	/*                      set layout parameters                       */
   184 	/********************************************************************/
   182 	/********************************************************************/
   185 
   183 
   186 	public void setParameters(Graphics g) {
   184 	public void setParameters(Graphics g) {
   187 		Enumeration e1=vertices.elements();
   185 		Enumeration e1=vertices.elements();
   188 		int h,w;
   186 		int h;
   189 		h=w=Integer.MIN_VALUE;
   187 		h=Integer.MIN_VALUE;
   190 
   188 
   191 		while (e1.hasMoreElements()) {
   189 		while (e1.hasMoreElements()) {
   192 		  Box dim=((Vertex)(e1.nextElement())).getLabelSize(g);
   190 		  Box dim=((Vertex)(e1.nextElement())).getLabelSize(g);
   193 			h=Math.max(h,dim.height);
   191 			h=Math.max(h,dim.height);
   194 			w=Math.max(w,dim.width);
       
   195 		}
   192 		}
   196 		box_height=h+4;
   193 		box_height=h+4;
   197 		box_height2=box_height/2;
   194 		box_height2=box_height/2;
   198 		box_width=w+8;
   195 		gfx=g;
   199 		box_width2=box_width/2;
       
   200 		box_hspace=box_width+20;
       
   201 	}
   196 	}
   202 
   197 
   203 	/********************************************************************/
   198 	/********************************************************************/
   204 	/*                       topological sorting                        */
   199 	/*                       topological sorting                        */
   205 	/********************************************************************/
   200 	/********************************************************************/
   536 		Enumeration e1=layers.elements();
   531 		Enumeration e1=layers.elements();
   537 		Enumeration e3=numEdges.elements();
   532 		Enumeration e3=numEdges.elements();
   538 		while (e1.hasMoreElements()) {
   533 		while (e1.hasMoreElements()) {
   539 			Vector v1=(Vector)(e1.nextElement());
   534 			Vector v1=(Vector)(e1.nextElement());
   540 			Enumeration e2=v1.elements();
   535 			Enumeration e2=v1.elements();
   541 			int x=box_width2;
   536 			int x=0;
   542 			while (e2.hasMoreElements()) {
   537 			while (e2.hasMoreElements()) {
   543 				Vertex ve=(Vertex)(e2.nextElement());
   538 				Vertex ve=(Vertex)(e2.nextElement());
   544 				ve.setX(x);
   539 				ve.setX(x+ve.box_width2());
   545 				ve.setY(y);
   540 				ve.setY(y);
   546 				x+=box_hspace;
   541 				x+=ve.box_width()+20;
   547 			}
   542 			}
   548 			y+=box_height+Math.max(35,7*(((Integer)(e3.nextElement())).intValue()));
   543 			y+=box_height+Math.max(35,7*(((Integer)(e3.nextElement())).intValue()));
   549 		}
   544 		}
   550 	}
   545 	}
   551 
   546 
   636 						d+=((Vertex)(e2.nextElement())).getX()-vx.getX();
   631 						d+=((Vertex)(e2.nextElement())).getX()-vx.getX();
   637 						n++;
   632 						n++;
   638 					}
   633 					}
   639 					d2=(n!=0?d/n:0);
   634 					d2=(n!=0?d/n:0);
   640 
   635 
   641 					if (d<0 && (i==0 || ((Vertex)(v.elementAt(i-1))).rightX()+box_hspace-box_width < vx.leftX()+d2) ||
   636 					if (d<0 && (i==0 || ((Vertex)(v.elementAt(i-1))).rightX()+20 < vx.leftX()+d2) ||
   642 						d>0 && (i==v.size()-1 || ((Vertex)(v.elementAt(i+1))).leftX()-box_hspace+box_width > vx.rightX()+d2))
   637 						d>0 && (i==v.size()-1 || ((Vertex)(v.elementAt(i+1))).leftX()-20 > vx.rightX()+d2))
   643 						vx.setX(vx.getX()+d2);
   638 						vx.setX(vx.getX()+d2);
   644 				}
   639 				}
   645 			}
   640 			}
   646 		}
   641 		}
   647 	}
   642 	}
   741 							layer=(Vector)(layers.elementAt(vx2.getDegree()));
   736 							layer=(Vector)(layers.elementAt(vx2.getDegree()));
   742 							k=layer.indexOf(vx2);
   737 							k=layer.indexOf(vx2);
   743 							vx2=(Vertex)((vx2.getChildren()).nextElement());
   738 							vx2=(Vertex)((vx2.getChildren()).nextElement());
   744 							x3=vx2.getX();
   739 							x3=vx2.getX();
   745 							y3=vx2.getY();
   740 							y3=vx2.getY();
   746 							// spc=(box_hspace-box_width)/3;
       
   747 							// spc=box_height*3/4;
       
   748 							spc=0;
   741 							spc=0;
   749 							leftx = k==0 /* || ((Vertex)(layer.elementAt(k-1))).isDummy() */ ?
   742 							leftx = k==0 /* || ((Vertex)(layer.elementAt(k-1))).isDummy() */ ?
   750 								Integer.MIN_VALUE:
   743 								Integer.MIN_VALUE:
   751 								((Vertex)(layer.elementAt(k-1))).rightX()+spc;
   744 								((Vertex)(layer.elementAt(k-1))).rightX()+spc;
   752 							rightx = k==layer.size()-1 /* || ((Vertex)(layer.elementAt(k+1))).isDummy() */ ?
   745 							rightx = k==layer.size()-1 /* || ((Vertex)(layer.elementAt(k+1))).isDummy() */ ?