1 20 21 package org.apache.directory.ldapstudio.browser.ui.editors.searchresult; 22 23 24 import org.apache.directory.ldapstudio.browser.common.BrowserCommonActivator; 25 import org.apache.directory.ldapstudio.browser.common.BrowserCommonConstants; 26 import org.apache.directory.ldapstudio.browser.common.widgets.BaseWidgetUtils; 27 import org.eclipse.jface.preference.PreferenceConverter; 28 import org.eclipse.swt.SWT; 29 import org.eclipse.swt.events.ModifyEvent; 30 import org.eclipse.swt.events.ModifyListener; 31 import org.eclipse.swt.events.SelectionAdapter; 32 import org.eclipse.swt.events.SelectionEvent; 33 import org.eclipse.swt.graphics.Color; 34 import org.eclipse.swt.graphics.Font; 35 import org.eclipse.swt.graphics.FontData; 36 import org.eclipse.swt.graphics.RGB; 37 import org.eclipse.swt.layout.GridData; 38 import org.eclipse.swt.layout.GridLayout; 39 import org.eclipse.swt.widgets.Button; 40 import org.eclipse.swt.widgets.Composite; 41 import org.eclipse.swt.widgets.Text; 42 43 44 public class SearchResultEditorQuickFilterWidget 45 { 46 47 private SearchResultEditorFilter filter; 48 49 private Composite parent; 50 51 private Composite composite; 52 53 private Composite innerComposite; 54 55 private Text quickFilterValueText; 56 57 private Button clearQuickFilterButton; 58 59 60 public SearchResultEditorQuickFilterWidget( SearchResultEditorFilter filter ) 61 { 62 this.filter = filter; 63 } 64 65 66 public void createComposite( Composite parent ) 67 { 68 this.parent = parent; 69 70 this.composite = BaseWidgetUtils.createColumnContainer( parent, 1, 1 ); 71 GridLayout gl = new GridLayout(); 72 gl.marginHeight = 2; 73 gl.marginWidth = 2; 74 composite.setLayout( gl ); 75 76 this.innerComposite = null; 77 } 78 79 80 private void create() 81 { 82 innerComposite = BaseWidgetUtils.createColumnContainer( this.composite, 2, 1 ); 83 84 this.quickFilterValueText = new Text( innerComposite, SWT.BORDER ); 85 this.quickFilterValueText.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) ); 86 this.quickFilterValueText.addModifyListener( new ModifyListener() 87 { 88 public void modifyText( ModifyEvent e ) 89 { 90 filter.setQuickFilterValue( quickFilterValueText.getText() ); 91 clearQuickFilterButton.setEnabled( !"".equals( quickFilterValueText.getText() ) ); 92 if ( !"".equals( quickFilterValueText.getText() ) ) 93 { 94 RGB fgRgb = PreferenceConverter.getColor( BrowserCommonActivator.getDefault().getPreferenceStore(), 95 BrowserCommonConstants.PREFERENCE_QUICKFILTER_FOREGROUND_COLOR ); 96 RGB bgRgb = PreferenceConverter.getColor( BrowserCommonActivator.getDefault().getPreferenceStore(), 97 BrowserCommonConstants.PREFERENCE_QUICKFILTER_BACKGROUND_COLOR ); 98 Color fgColor = BrowserCommonActivator.getDefault().getColor( fgRgb ); 99 Color bgColor = BrowserCommonActivator.getDefault().getColor( bgRgb ); 100 quickFilterValueText.setForeground( fgColor ); 101 quickFilterValueText.setBackground( bgColor ); 102 FontData[] fontData = PreferenceConverter.getFontDataArray( BrowserCommonActivator.getDefault() 103 .getPreferenceStore(), BrowserCommonConstants.PREFERENCE_QUICKFILTER_FONT ); 104 Font font = BrowserCommonActivator.getDefault().getFont( fontData ); 105 quickFilterValueText.setFont( font ); 106 } 107 else 108 { 109 quickFilterValueText.setBackground( null ); 110 } 111 } 112 } ); 113 114 this.clearQuickFilterButton = new Button( innerComposite, SWT.PUSH ); 115 this.clearQuickFilterButton.setToolTipText( "Clear Quick Filter" ); 116 this.clearQuickFilterButton.setImage( BrowserCommonActivator.getDefault().getImage( BrowserCommonConstants.IMG_CLEAR ) ); 117 this.clearQuickFilterButton.setEnabled( false ); 118 this.clearQuickFilterButton.addSelectionListener( new SelectionAdapter() 119 { 120 public void widgetSelected( SelectionEvent e ) 121 { 122 if ( !"".equals( quickFilterValueText.getText() ) ) 123 quickFilterValueText.setText( "" ); 124 } 125 } ); 126 127 setEnabled( composite.isEnabled() ); 128 129 composite.layout( true, true ); 130 parent.layout( true, true ); 131 132 } 133 134 135 private void destroy() 136 { 137 if ( !"".equals( quickFilterValueText.getText() ) ) 138 quickFilterValueText.setText( "" ); 139 innerComposite.dispose(); 140 innerComposite = null; 141 142 composite.layout( true, true ); 143 parent.layout( true, true ); 144 } 145 146 147 public void dispose() 148 { 149 if ( this.innerComposite != null && !this.innerComposite.isDisposed() ) 150 { 151 this.quickFilterValueText.dispose(); 152 this.quickFilterValueText = null; 153 this.clearQuickFilterButton = null; 154 this.innerComposite = null; 155 } 156 if ( this.filter != null ) 157 { 158 this.composite.dispose(); 159 this.composite = null; 160 this.parent = null; 161 this.filter = null; 162 } 163 } 164 165 166 public void setEnabled( boolean enabled ) 167 { 168 if ( this.composite != null && !this.composite.isDisposed() ) 169 { 170 this.composite.setEnabled( enabled ); 171 } 172 if ( this.innerComposite != null && !this.innerComposite.isDisposed() ) 173 { 174 this.innerComposite.setEnabled( enabled ); 175 this.quickFilterValueText.setEnabled( enabled ); 176 this.clearQuickFilterButton.setEnabled( enabled ); 177 } 178 } 179 180 181 public void setActive( boolean visible ) 182 { 183 if ( visible && this.innerComposite == null && composite != null ) 184 { 185 create(); 186 this.quickFilterValueText.setFocus(); 187 } 188 else if ( !visible && this.innerComposite != null && composite != null ) 189 { 190 destroy(); 191 } 192 } 193 194 } 195 | Popular Tags |