KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > prefuse > action > animate > AxisLabelAnimator


1 package prefuse.action.animate;
2
3 import java.util.Iterator JavaDoc;
4
5 import prefuse.action.ItemAction;
6 import prefuse.action.layout.AxisLabelLayout;
7 import prefuse.data.tuple.TupleSet;
8 import prefuse.util.ColorLib;
9 import prefuse.visual.VisualItem;
10 import prefuse.visual.expression.StartVisiblePredicate;
11
12
13 /**
14  * Animator that interpolates positions, colors, and visibility status for
15  * metric axes.
16  *
17  * @author <a HREF="http://jheer.org">jeffrey heer</a>
18  * @see prefuse.action.layout.AxisLabelLayout
19  */

20 public class AxisLabelAnimator extends ItemAction {
21
22     /**
23      * Create a new AxisLabelAnimator.
24      */

25     protected AxisLabelAnimator() {
26         super();
27     }
28
29     /**
30      * Create a new AxisLabelAnimator for the given data group.
31      * @param group the data group to process
32      */

33     public AxisLabelAnimator(String JavaDoc group) {
34         super(group);
35     }
36
37     /**
38      * @see prefuse.action.GroupAction#run(double)
39      */

40     public void run(double frac) {
41         if ( frac == 0.0 ) {
42             setup();
43         } else if ( frac == 1.0 ) {
44             finish();
45         } else {
46             super.run(frac);
47         }
48         TupleSet ts = m_vis.getGroup(m_group);
49         ts.putClientProperty(AxisLabelLayout.FRAC, new Double JavaDoc(frac));
50     }
51     
52     private void setup() {
53         // handle fade-in nodes
54
Iterator JavaDoc items = m_vis.visibleItems(m_group);
55         while ( items.hasNext() ) {
56             VisualItem item = (VisualItem) items.next();
57             if ( !item.isStartVisible() ) {
58                 int efc = item.getEndFillColor();
59                 int esc = item.getEndStrokeColor();
60                 int etc = item.getEndTextColor();
61                 item.setStartFillColor(ColorLib.setAlpha(efc,0));
62                 item.setStartStrokeColor(ColorLib.setAlpha(esc,0));
63                 item.setStartTextColor(ColorLib.setAlpha(etc,0));
64                 item.setStartVisible(true);
65             }
66             process(item, 0.0);
67         }
68         
69         // handle fade-out nodes
70
items = m_vis.items(m_group, StartVisiblePredicate.TRUE);
71         while ( items.hasNext() ) {
72             VisualItem item = (VisualItem) items.next();
73             if ( !item.isEndVisible() ) {
74                 int sfc = item.getStartFillColor();
75                 int ssc = item.getStartStrokeColor();
76                 int stc = item.getStartTextColor();
77                 item.setEndFillColor(ColorLib.setAlpha(sfc,0));
78                 item.setEndStrokeColor(ColorLib.setAlpha(ssc,0));
79                 item.setEndTextColor(ColorLib.setAlpha(stc,0));
80                 item.setVisible(true);
81                 process(item, 0.0);
82             }
83         }
84     }
85     
86     private void finish() {
87         // set faded-out nodes to permanently invisible
88
Iterator JavaDoc items = m_vis.items(m_group, StartVisiblePredicate.TRUE);
89         while ( items.hasNext() ) {
90             VisualItem item = (VisualItem) items.next();
91             if ( !item.isEndVisible() ) {
92                 item.setVisible(false);
93                 item.setStartVisible(false);
94             }
95         }
96         
97         // set faded-in nodes to permanently visible
98
items = m_vis.visibleItems(m_group);
99         while ( items.hasNext() ) {
100             VisualItem item = (VisualItem) items.next();
101             process(item, 1.0);
102             item.setStartFillColor(item.getEndFillColor());
103             item.setStartTextColor(item.getEndTextColor());
104             item.setStartStrokeColor(item.getEndStrokeColor());
105         }
106     }
107     
108     /**
109      * @see prefuse.action.ItemAction#process(prefuse.visual.VisualItem, double)
110      */

111     public void process(VisualItem item, double frac) {
112         double v = item.getStartX();
113         item.setX(v + frac*(item.getEndX()-v));
114         v = item.getStartY();
115         item.setY(v + frac*(item.getEndY()-v));
116         v = item.getDouble(VisualItem.STARTX2);
117         v = v + frac*(item.getDouble(VisualItem.ENDX2)-v);
118         item.setDouble(VisualItem.X2, v);
119         v = item.getDouble(VisualItem.STARTY2);
120         v = v + frac*(item.getDouble(VisualItem.ENDY2)-v);
121         item.setDouble(VisualItem.Y2, v);
122         
123         int c = ColorLib.interp(item.getStartStrokeColor(),
124                 item.getEndStrokeColor(), frac);
125         item.setStrokeColor(c);
126         
127         int tc = ColorLib.interp(item.getStartTextColor(),
128                 item.getEndTextColor(), frac);
129         item.setTextColor(tc);
130         
131         int fc = ColorLib.interp(item.getStartFillColor(),
132                 item.getEndFillColor(), frac);
133         item.setFillColor(fc);
134     }
135
136 } // end of class AxisLabelAnimator
137
Popular Tags