1 20 21 package org.apache.directory.ldapstudio.browser.common.widgets.search; 22 23 24 import org.apache.directory.ldapstudio.browser.common.BrowserCommonConstants; 25 import org.apache.directory.ldapstudio.browser.common.dialogs.FilterDialog; 26 import org.apache.directory.ldapstudio.browser.common.filtereditor.FilterContentAssistProcessor; 27 import org.apache.directory.ldapstudio.browser.common.widgets.BaseWidgetUtils; 28 import org.apache.directory.ldapstudio.browser.common.widgets.BrowserWidget; 29 import org.apache.directory.ldapstudio.browser.common.widgets.DialogContentAssistant; 30 import org.apache.directory.ldapstudio.browser.common.widgets.HistoryUtils; 31 import org.apache.directory.ldapstudio.browser.core.model.IConnection; 32 import org.apache.directory.ldapstudio.browser.core.model.filter.parser.LdapFilterParser; 33 import org.eclipse.jface.text.IDocument; 34 import org.eclipse.swt.events.ModifyEvent; 35 import org.eclipse.swt.events.ModifyListener; 36 import org.eclipse.swt.events.SelectionAdapter; 37 import org.eclipse.swt.events.SelectionEvent; 38 import org.eclipse.swt.layout.GridData; 39 import org.eclipse.swt.widgets.Button; 40 import org.eclipse.swt.widgets.Combo; 41 import org.eclipse.swt.widgets.Composite; 42 43 44 52 public class FilterWidget extends BrowserWidget 53 { 54 55 56 private Combo filterCombo; 57 58 59 private Button filterEditorButton; 60 61 62 private FilterContentAssistProcessor contentAssistProcessor; 63 64 65 private IConnection connection; 66 67 68 private String initalFilter; 69 70 71 77 public FilterWidget( IConnection connection, String initalFilter ) 78 { 79 this.connection = connection; 80 this.initalFilter = initalFilter; 81 } 82 83 84 88 public FilterWidget() 89 { 90 this.connection = null; 91 this.initalFilter = null; 92 } 93 94 95 100 public void createWidget( final Composite parent ) 101 { 102 filterCombo = BaseWidgetUtils.createCombo( parent, new String [0], -1, 1 ); 104 GridData gd = new GridData( GridData.FILL_HORIZONTAL ); 105 gd.horizontalSpan = 1; 106 gd.widthHint = 200; 107 filterCombo.setLayoutData( gd ); 108 109 filterCombo.addModifyListener( new ModifyListener() 110 { 111 public void modifyText( ModifyEvent e ) 112 { 113 notifyListeners(); 114 } 115 } ); 116 117 LdapFilterParser parser = new LdapFilterParser(); 119 contentAssistProcessor = new FilterContentAssistProcessor( parser ); 120 DialogContentAssistant fca = new DialogContentAssistant(); 121 fca.enableAutoInsert( true ); 122 fca.enableAutoActivation( true ); 123 fca.setAutoActivationDelay( 100 ); 124 fca.setContentAssistProcessor( contentAssistProcessor, IDocument.DEFAULT_CONTENT_TYPE ); 125 fca.install( filterCombo ); 126 127 filterEditorButton = BaseWidgetUtils.createButton( parent, "F&ilter Editor...", 1 ); 129 filterEditorButton.addSelectionListener( new SelectionAdapter() 130 { 131 public void widgetSelected( SelectionEvent e ) 132 { 133 if ( connection != null ) 134 { 135 FilterDialog dialog = new FilterDialog( parent.getShell(), "Filter Editor", filterCombo.getText(), 136 connection ); 137 dialog.open(); 138 String filter = dialog.getFilter(); 139 if ( filter != null ) 140 { 141 filterCombo.setText( filter ); 142 } 143 } 144 } 145 } ); 146 147 String [] history = HistoryUtils.load( BrowserCommonConstants.DIALOGSETTING_KEY_SEARCH_FILTER_HISTORY ); 149 filterCombo.setItems( history ); 150 151 setConnection( connection ); 153 filterCombo.setText( initalFilter == null ? "(objectClass=*)" : initalFilter ); 154 } 155 156 157 162 public String getFilter() 163 { 164 return filterCombo.getText(); 165 } 166 167 168 173 public void setFilter( String filter ) 174 { 175 filterCombo.setText( filter ); 176 } 177 178 179 184 public void setConnection( IConnection connection ) 185 { 186 this.connection = connection; 187 contentAssistProcessor.setPossibleAttributeTypes( connection == null ? new String [0] : connection.getSchema() 188 .getAttributeTypeDescriptionNames() ); 189 } 190 191 192 195 public void saveDialogSettings() 196 { 197 HistoryUtils.save( BrowserCommonConstants.DIALOGSETTING_KEY_SEARCH_FILTER_HISTORY, filterCombo.getText() ); 198 } 199 200 201 204 public void setFocus() 205 { 206 } 208 209 210 215 public void setEnabled( boolean b ) 216 { 217 filterCombo.setEnabled( b ); 218 filterEditorButton.setEnabled( b ); 219 } 220 221 } 222 | Popular Tags |