KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > directory > ldapstudio > browser > ui > editors > searchresult > SearchResultEditorQuickFilterWidget


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  *
19  */

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