1 package prefuse.visual.expression; 2 3 import prefuse.Visualization; 4 import prefuse.data.Tuple; 5 import prefuse.data.expression.BooleanLiteral; 6 import prefuse.data.expression.Expression; 7 import prefuse.data.search.SearchTupleSet; 8 import prefuse.visual.VisualItem; 9 10 18 public class SearchPredicate extends InGroupPredicate { 19 20 private Expression m_incEmpty; 21 private int paramCount = 0; 22 23 28 public SearchPredicate() { 29 this(Visualization.SEARCH_ITEMS, true); 30 paramCount = 0; 31 } 32 33 39 public SearchPredicate(boolean includeAllByDefault) { 40 this(Visualization.SEARCH_ITEMS, includeAllByDefault); 41 } 42 43 50 public SearchPredicate(String group, boolean includeAllByDefault) { 51 super(group); 52 m_incEmpty = new BooleanLiteral(includeAllByDefault); 53 paramCount = 2; 54 } 55 56 59 public boolean getBoolean(Tuple t) { 60 String group = getGroup(t); 61 if ( group == null ) return false; 62 boolean incEmpty = m_incEmpty.getBoolean(t); 63 64 VisualItem item = (VisualItem)t; 65 Visualization vis = item.getVisualization(); 66 SearchTupleSet search = (SearchTupleSet)vis.getGroup(group); 67 if ( search == null && incEmpty ) 68 return true; 69 70 String query = search.getQuery(); 71 return (incEmpty && (query==null || query.length()==0)) 72 || vis.isInGroup(item, group); 73 } 74 75 78 public void addParameter(Expression e) { 79 if ( paramCount == 0 ) 80 super.addParameter(e); 81 else if ( paramCount == 1 ) 82 m_incEmpty = e; 83 else 84 throw new IllegalStateException ( 85 "This function takes only 2 parameters."); 86 } 87 88 91 public String getName() { 92 return "MATCH"; 93 } 94 95 98 public int getParameterCount() { 99 return 2; 100 } 101 102 105 public String toString() { 106 return getName()+"("+m_group+", "+m_incEmpty+")"; 107 } 108 109 } | Popular Tags |