1 19 20 package org.netbeans.modules.tasklist.core.filter; 21 22 import java.awt.Component ; 23 import java.beans.PropertyEditor ; 24 import java.lang.reflect.InvocationTargetException ; 25 import java.text.ParseException ; 26 import java.text.SimpleDateFormat ; 27 import java.util.Date ; 28 import javax.swing.*; 29 import javax.swing.event.DocumentListener ; 30 import javax.swing.event.DocumentEvent ; 31 32 import org.openide.ErrorManager; 33 import org.openide.nodes.Node; 34 import org.openide.util.NbBundle; 35 36 43 public class StringFilterCondition extends OneOfFilterCondition { 44 public static final int EQUALS = 0; 45 public static final int NOTEQUALS = 1; 46 public static final int CONTAINS = 2; 47 public static final int DOESNOTCONTAIN = 3; 48 public static final int BEGINSWITH = 4; 49 public static final int ENDSWITH = 5; 50 public static final int CEQUALS = 6; 51 public static final int CCONTAINS = 7; 52 public static final int CDOESNOTCONTAIN = 8; 53 public static final int CBEGINSWITH = 9; 54 public static final int CENDSWITH = 10; 55 56 61 public static StringFilterCondition[] createConditions() { 62 return new StringFilterCondition[] { 63 new StringFilterCondition(StringFilterCondition.CONTAINS), 64 new StringFilterCondition(StringFilterCondition.DOESNOTCONTAIN), 65 new StringFilterCondition(StringFilterCondition.BEGINSWITH), 66 new StringFilterCondition(StringFilterCondition.ENDSWITH), 67 new StringFilterCondition(StringFilterCondition.EQUALS), 68 new StringFilterCondition(StringFilterCondition.NOTEQUALS), 69 new StringFilterCondition(StringFilterCondition.CCONTAINS), 70 new StringFilterCondition(StringFilterCondition.CDOESNOTCONTAIN), 71 new StringFilterCondition(StringFilterCondition.CBEGINSWITH), 72 new StringFilterCondition(StringFilterCondition.CENDSWITH), 73 new StringFilterCondition(StringFilterCondition.CEQUALS) 74 }; 75 } 76 77 private static String [] NAME_KEYS = { 78 "Equals", "NotEquals", "Contains", "DoesNotContain", "BeginsWith", "EndsWith", "CEquals", "CContains", "CDoesNotContain", "CBeginsWith", "CEndsWith" }; 90 91 92 private String constant = ""; 94 99 public StringFilterCondition(int id) { 100 super(NAME_KEYS, id); 101 } 102 103 109 public StringFilterCondition(int id, String value) { 110 this(id); 111 this.constant = value; 112 } 113 114 115 public StringFilterCondition(final StringFilterCondition rhs) { 116 super(rhs); 117 this.constant = rhs.constant; 118 } 119 120 public Object clone() { 121 return new StringFilterCondition(this); 122 } 123 124 private StringFilterCondition() { super(NAME_KEYS); constant = null; } 125 126 128 public String getConstant() { 129 return constant; 130 } 131 132 public JComponent createConstantComponent() { 133 final JTextField tf = new JTextField(); 134 tf.setText(constant); 135 tf.setToolTipText(Util.getString("string_desc")); 136 tf.getDocument().addDocumentListener(new DocumentListener () { 137 public void changedUpdate(DocumentEvent e) { 138 Boolean valid = Boolean.valueOf("".equals(tf.getText()) == false); 139 tf.putClientProperty(FilterCondition.PROP_VALUE_VALID, valid); 140 } 141 142 public void insertUpdate(DocumentEvent e) { 143 Boolean valid = Boolean.valueOf("".equals(tf.getText()) == false); 144 tf.putClientProperty(FilterCondition.PROP_VALUE_VALID, valid); 145 } 146 147 public void removeUpdate(DocumentEvent e) { 148 Boolean valid = Boolean.valueOf("".equals(tf.getText()) == false); 149 tf.putClientProperty(FilterCondition.PROP_VALUE_VALID, valid); 150 } 151 152 }); 153 return tf; 154 } 155 156 public void getConstantFrom(JComponent cmp) { 157 JTextField tf = (JTextField) cmp; 158 constant = tf.getText(); 159 } 160 161 public boolean isTrue(Object obj) { 162 String s = obj == null ? "" : obj.toString(); 163 switch (getId()) { 164 case EQUALS: 165 return s.equalsIgnoreCase(constant); 166 case NOTEQUALS: 167 return !s.equalsIgnoreCase(constant); 168 case CONTAINS: 169 return s.toLowerCase().indexOf(constant.toLowerCase()) >= 0; 170 case DOESNOTCONTAIN: 171 return s.toLowerCase().indexOf(constant.toLowerCase()) < 0; 172 case BEGINSWITH: 173 return s.toLowerCase().startsWith(constant.toLowerCase()); 174 case ENDSWITH: 175 return s.toLowerCase().endsWith(constant.toLowerCase()); 176 case CEQUALS: 177 return s.equals(constant); 178 case CCONTAINS: 179 return s.indexOf(constant) >= 0; 180 case CDOESNOTCONTAIN: 181 return s.indexOf(constant) < 0; 182 case CBEGINSWITH: 183 return s.startsWith(constant); 184 case CENDSWITH: 185 return s.endsWith(constant); 186 default: 187 throw new InternalError ("wrong id"); 188 } 189 } 190 191 private static class Convertor extends OneOfFilterCondition.Convertor { 192 private static final String ELEM_STRING_CONDITION = "StringCondition"; 193 private static final String ATTR_CONSTANT = "constant"; 194 195 public Convertor() { super(ELEM_STRING_CONDITION, NAME_KEYS);} 196 public static StringFilterCondition.Convertor create() { 197 return new StringFilterCondition.Convertor(); 198 } 199 200 protected Object readElement(org.w3c.dom.Element element) throws java.io.IOException , java.lang.ClassNotFoundException { 201 StringFilterCondition cond = new StringFilterCondition(); 202 super.readCondition(element, cond); 203 cond.constant = element.getAttribute(ATTR_CONSTANT); 204 return cond; 205 } 206 207 protected void writeElement(org.w3c.dom.Document document, org.w3c.dom.Element element, Object obj) 209 throws java.io.IOException , org.w3c.dom.DOMException 210 { 211 StringFilterCondition cond = (StringFilterCondition)obj; 212 super.writeCondition(document, element, cond); 213 element.setAttribute(ATTR_CONSTANT, cond.constant); 214 215 } 216 } 217 218 } 219 | Popular Tags |