001    package nl.cwi.sen1.gui.plugin;
002    
003    import java.util.logging.Logger;
004    
005    import prefuse.action.assignment.ColorAction;
006    import prefuse.visual.VisualItem;
007    
008    public class GraphColorAction extends ColorAction {
009        private String m_dataField;
010    
011        public GraphColorAction(String group, String dataField, String colorField) {
012            super(group, colorField);
013            setDataField(dataField);
014        }
015    
016        public void setDataField(String field) {
017            m_dataField = field;
018        }
019    
020        public int getColor(VisualItem item) {
021            Object o = lookup(item);
022            if (o != null) {
023                if (o instanceof ColorAction) {
024                    return ((ColorAction) o).getColor(item);
025                } else if (o instanceof Integer) {
026                    return ((Integer) o).intValue();
027                } else {
028                    Logger.getLogger(this.getClass().getName()).warning(
029                            "Unrecognized Object from predicate chain.");
030                }
031            }
032            // Only change default color value opposed to super.getColor(item)
033            if (item.canGetInt(m_dataField)) {
034                return item.getInt(m_dataField);
035            }
036            return m_defaultColor;
037        }
038    }