1 package prefuse.action.assignment; 2 3 import java.util.Map ; 4 5 import prefuse.Constants; 6 import prefuse.data.tuple.TupleSet; 7 import prefuse.util.DataLib; 8 import prefuse.visual.VisualItem; 9 10 34 public class DataShapeAction extends ShapeAction { 35 36 protected static final int NO_SHAPE = Integer.MIN_VALUE; 37 38 protected String m_dataField; 39 protected int[] m_palette; 40 41 protected Map m_ordinalMap; 42 43 44 49 public DataShapeAction(String group, String field) { 50 super(group, NO_SHAPE); 51 m_dataField = field; 52 } 53 54 62 public DataShapeAction(String group, String field, int[] palette) { 63 super(group, NO_SHAPE); 64 m_dataField = field; 65 m_palette = palette; 66 } 67 68 70 74 public String getDataField() { 75 return m_dataField; 76 } 77 78 82 public void setDataField(String field) { 83 m_dataField = field; 84 } 85 86 92 public void setDefaultShape(int defaultShape) { 93 throw new UnsupportedOperationException (); 94 } 95 96 98 101 protected void setup() { 102 TupleSet ts = m_vis.getGroup(m_group); 103 m_ordinalMap = DataLib.ordinalMap(ts, m_dataField); 104 } 105 106 109 public int getShape(VisualItem item) { 110 int shape = super.getShape(item); 112 if ( shape != NO_SHAPE ) { 113 return shape; 114 } 115 116 Object v = item.get(m_dataField); 118 int idx = ((Integer )m_ordinalMap.get(v)).intValue(); 119 120 if ( m_palette == null ) { 121 return idx % Constants.SHAPE_COUNT; 122 } else { 123 return m_palette[idx % m_palette.length]; 124 } 125 } 126 127 } | Popular Tags |