| 1 6 7 package analyzer.listeners; 8 9 import java.util.Date ; 10 import java.util.ArrayList ; 11 import java.awt.Color ; 13 14 18 public class WindowData implements Comparable { 19 20 public String id; 21 public boolean editor; 22 public long open,activated; 23 private long openTime,activatedTime; 24 private boolean activatedB,openB; 25 Date start; 26 ArrayList actions; 27 Coord[] graphArray; 28 public int[] sliceX, sliceY; 29 public Color chartColor; 30 31 32 33 public WindowData(boolean editorWindow,String myId) { 34 activatedTime=openTime=open=activated=0; 35 openB=activatedB=false; 36 editor=editorWindow; 37 id=myId; 38 chartColor=Color.BLACK; 39 actions=new ArrayList (); 40 } 41 42 public void open(long ts){ 43 openTime=ts; 44 if(start==null){ 45 start=new Date (ts); 46 } 47 openB=true; 48 } 49 50 public void close(long ts){ 51 if(openB)open+=ts-openTime; 52 openB=false; 53 } 54 55 public void activated(long ts){ 56 addAction(ts, true); 57 activatedTime=ts; 58 activatedB=true; 59 } 60 61 public void deactivated(long ts){ 62 addAction(ts, false); 63 if(activatedB)activated+=ts-activatedTime; 64 activatedB=false; 65 } 66 67 public void end(long ts){ 68 if(openB)close(ts); 69 if(activatedB)deactivated(ts); 70 graphArray=(Coord[])actions.toArray(new Coord[0]); 71 } 72 73 public int compareTo(Object o){ 74 return id.compareTo(((WindowData)o).id); 75 } 76 77 public void computeSlice(long start,long end){ 78 int i=0; 79 while(i<graphArray.length){ 80 if(graphArray[i].x>start)break; 81 i++; 82 } 83 if(i==graphArray.length)return; 84 85 ArrayList coordList=new ArrayList (); 86 87 int j=i; 88 while(j<graphArray.length){ 89 if(graphArray[j].x>end){ 90 break; 91 } 92 coordList.add(graphArray[j]); 93 j++; 94 } 95 if(coordList.size()>0){ 96 Coord lastCoord=(Coord)coordList.get(coordList.size()-1); 97 boolean lastBool=lastCoord.y==1?true:false; 98 coordList.add(new Coord(end,lastBool)); 99 } 100 sliceX=new int[coordList.size()]; 101 sliceY=new int[coordList.size()]; 102 Coord c; 103 for(int k=0;k<coordList.size();k++){ 104 c=(Coord)coordList.get(k); 105 sliceX[k]=new Long ((c.x-start)/1000).intValue(); 106 sliceY[k]=c.y; 107 } 108 } 109 110 private void addAction(long ts,boolean act){ 111 Coord c1=new Coord(ts,activatedB); 112 Coord c2=new Coord(ts,act); 113 actions.add(c1); 114 actions.add(c2); 115 } 116 117 } 118 | Popular Tags |