1 20 21 package org.apache.directory.ldapstudio.browser.common.widgets.entryeditor; 22 23 24 import org.apache.directory.ldapstudio.browser.core.model.IAttribute; 25 import org.apache.directory.ldapstudio.browser.core.model.IValue; 26 import org.eclipse.jface.viewers.TreeViewer; 27 import org.eclipse.jface.viewers.Viewer; 28 import org.eclipse.jface.viewers.ViewerFilter; 29 30 31 38 public class EntryEditorWidgetFilter extends ViewerFilter 39 { 40 41 42 protected TreeViewer viewer; 43 44 45 protected String quickFilterAttribute; 46 47 48 protected String quickFilterValue; 49 50 51 54 public EntryEditorWidgetFilter() 55 { 56 this.quickFilterAttribute = ""; 57 this.quickFilterValue = ""; 58 } 59 60 61 66 public void connect( TreeViewer viewer ) 67 { 68 this.viewer = viewer; 69 viewer.addFilter( this ); 70 } 71 72 73 76 public boolean select( Viewer viewer, Object parentElement, Object element ) 77 { 78 if ( element instanceof IAttribute ) 79 { 80 IAttribute attribute = ( IAttribute ) element; 81 82 boolean oneGoesThrough = false; 84 IValue[] values = attribute.getValues(); 85 for ( int i = 0; i < values.length; i++ ) 86 { 87 if ( goesThroughQuickFilter( values[i] ) ) 88 { 89 oneGoesThrough = true; 90 break; 91 } 92 } 93 if ( !oneGoesThrough ) 94 { 95 return false; 96 } 97 98 return true; 99 } 100 else if ( element instanceof IValue ) 101 { 102 IValue value = ( IValue ) element; 103 104 if ( !goesThroughQuickFilter( value ) ) 106 { 107 return false; 108 } 109 110 if ( value.getAttribute().isObjectClassAttribute() ) 112 { 113 return isShowObjectClassAttribute(); 114 } 115 else if ( value.getAttribute().isMustAttribute() ) 116 { 117 return isShowMustAttributes(); 118 } 119 else if ( value.getAttribute().isMayAttribute() ) 120 { 121 return isShowMayAttributes(); 122 } 123 else if ( value.getAttribute().isOperationalAttribute() ) 124 { 125 return isShowOperationalAttributes(); 126 } 127 else 128 { 129 return true; 130 } 131 } 132 else 133 { 134 return true; 135 } 136 } 137 138 139 146 private boolean goesThroughQuickFilter( IValue value ) 147 { 148 if ( quickFilterAttribute != null && !"".equals( quickFilterAttribute ) ) 150 { 151 if ( value.getAttribute().getDescription().toUpperCase().indexOf( quickFilterAttribute.toUpperCase() ) == -1 ) 152 { 153 return false; 154 } 155 } 156 157 if ( quickFilterValue != null && !"".equals( quickFilterValue ) ) 159 { 160 if ( value.isString() 161 && value.getStringValue().toUpperCase().indexOf( quickFilterValue.toUpperCase() ) == -1 ) 162 { 163 return false; 164 } 165 else if ( value.isBinary() ) 166 { 167 return false; 168 } 169 } 170 171 return true; 172 } 173 174 175 178 public void dispose() 179 { 180 viewer = null; 181 } 182 183 184 189 public String getQuickFilterAttribute() 190 { 191 return quickFilterAttribute; 192 } 193 194 195 200 public void setQuickFilterAttribute( String quickFilterAttribute ) 201 { 202 if ( !this.quickFilterAttribute.equals( quickFilterAttribute ) ) 203 { 204 this.quickFilterAttribute = quickFilterAttribute; 205 if ( viewer != null ) 206 { 207 viewer.refresh(); 208 } 209 } 210 } 211 212 213 218 public String getQuickFilterValue() 219 { 220 return quickFilterValue; 221 } 222 223 224 229 public void setQuickFilterValue( String quickFilterValue ) 230 { 231 if ( !this.quickFilterValue.equals( quickFilterValue ) ) 232 { 233 this.quickFilterValue = quickFilterValue; 234 if ( viewer != null ) 235 { 236 viewer.refresh(); 237 } 238 } 239 } 240 241 242 247 public boolean isShowMayAttributes() 248 { 249 return true; 250 } 251 252 253 258 public boolean isShowMustAttributes() 259 { 260 return true; 261 } 262 263 264 269 public boolean isShowObjectClassAttribute() 270 { 271 return true; 272 } 273 274 275 280 public boolean isShowOperationalAttributes() 281 { 282 return true; 283 } 284 285 } 286 | Popular Tags |