KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > ui > internal > navigator > filters > CommonFilterSelectionDialog


1 /*******************************************************************************
2  * Copyright (c) 2003, 2007 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11 /*
12  * Created on Feb 9, 2004
13  *
14  */

15 package org.eclipse.ui.internal.navigator.filters;
16
17 import java.util.ArrayList JavaDoc;
18 import java.util.Iterator JavaDoc;
19 import java.util.List JavaDoc;
20 import java.util.Set JavaDoc;
21
22 import org.eclipse.jface.dialogs.Dialog;
23 import org.eclipse.jface.resource.ColorRegistry;
24 import org.eclipse.jface.resource.JFaceResources;
25 import org.eclipse.jface.viewers.ISelectionChangedListener;
26 import org.eclipse.swt.SWT;
27 import org.eclipse.swt.custom.CTabFolder;
28 import org.eclipse.swt.custom.CTabItem;
29 import org.eclipse.swt.events.SelectionEvent;
30 import org.eclipse.swt.events.SelectionListener;
31 import org.eclipse.swt.graphics.Color;
32 import org.eclipse.swt.layout.GridData;
33 import org.eclipse.swt.layout.GridLayout;
34 import org.eclipse.swt.widgets.Composite;
35 import org.eclipse.swt.widgets.Control;
36 import org.eclipse.swt.widgets.TableItem;
37 import org.eclipse.swt.widgets.Text;
38 import org.eclipse.ui.IWorkbenchPreferenceConstants;
39 import org.eclipse.ui.PlatformUI;
40 import org.eclipse.ui.internal.navigator.CommonNavigatorMessages;
41 import org.eclipse.ui.internal.navigator.NavigatorPlugin;
42 import org.eclipse.ui.navigator.CommonViewer;
43 import org.eclipse.ui.navigator.ICommonFilterDescriptor;
44 import org.eclipse.ui.navigator.INavigatorContentDescriptor;
45 import org.eclipse.ui.navigator.INavigatorContentService;
46 import org.eclipse.ui.navigator.INavigatorViewerDescriptor;
47
48 /**
49  *
50  * @since 3.2
51  *
52  */

53 public class CommonFilterSelectionDialog extends Dialog {
54    
55     private static final String JavaDoc FILTER_ICON = "icons/full/elcl16/filter_ps.gif"; //$NON-NLS-1$
56
private static final String JavaDoc CONTENT_ICON = "icons/full/elcl16/content.gif"; //$NON-NLS-1$
57

58     private static final int TAB_WIDTH_IN_DLUS = 300;
59
60     private static final int TAB_HEIGHT_IN_DLUS = 150;
61
62     private final CommonViewer commonViewer;
63
64     private final INavigatorContentService contentService;
65
66     private CTabFolder customizationsTabFolder;
67
68     private CommonFiltersTab commonFiltersTab;
69
70     private ContentExtensionsTab contentExtensionsTab;
71
72     private Text descriptionText;
73
74     private ISelectionChangedListener updateDescriptionSelectionListener;
75
76     protected CommonFilterSelectionDialog(CommonViewer aCommonViewer) {
77         super(aCommonViewer.getControl().getShell());
78         setShellStyle(SWT.RESIZE | getShellStyle());
79
80         commonViewer = aCommonViewer;
81         contentService = commonViewer.getNavigatorContentService();
82     }
83
84     /*
85      * (non-Javadoc)
86      *
87      * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
88      */

89     protected Control createDialogArea(Composite parent) {
90          
91         getShell()
92                 .setText(
93                         CommonNavigatorMessages.CommonFilterSelectionDialog_Available_customization_);
94          
95         
96         Composite superComposite = (Composite) super.createDialogArea(parent);
97          
98         createCustomizationsTabFolder(superComposite);
99         
100         commonFiltersTab = new CommonFiltersTab(customizationsTabFolder,
101                 contentService);
102         createTabItem(
103                 customizationsTabFolder,
104                 CommonNavigatorMessages.CommonFilterSelectionDialog_Available_Filters,
105                 commonFiltersTab, FILTER_ICON);
106         
107
108         boolean hideExtensionsTab = contentService.getViewerDescriptor()
109                 .getBooleanConfigProperty(
110                         INavigatorViewerDescriptor.PROP_HIDE_AVAILABLE_EXT_TAB);
111
112         if (!hideExtensionsTab) {
113             contentExtensionsTab = new ContentExtensionsTab(
114                     customizationsTabFolder, contentService);
115
116             createTabItem(
117                     customizationsTabFolder,
118                     CommonNavigatorMessages.CommonFilterSelectionDialog_Available_Content,
119                     contentExtensionsTab, CONTENT_ICON);
120             
121         }
122
123         createDescriptionText(superComposite);
124
125         if (commonFiltersTab != null) {
126             commonFiltersTab.addSelectionChangedListener(getSelectionListener());
127         }
128
129         if (contentExtensionsTab != null) {
130             contentExtensionsTab
131                     .addSelectionChangedListener(getSelectionListener());
132         }
133         
134         return customizationsTabFolder;
135     }
136
137     private void createCustomizationsTabFolder(Composite superComposite) {
138         customizationsTabFolder = new CTabFolder (superComposite, SWT.RESIZE);
139  
140         GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
141         gd.widthHint = convertHorizontalDLUsToPixels(TAB_WIDTH_IN_DLUS);
142         gd.heightHint = convertVerticalDLUsToPixels(TAB_HEIGHT_IN_DLUS);
143         
144         customizationsTabFolder.setLayout(new GridLayout());
145         customizationsTabFolder.setLayoutData(gd);
146
147         customizationsTabFolder.setFont(superComposite.getFont());
148
149         customizationsTabFolder.addSelectionListener(new SelectionListener() {
150
151             public void widgetSelected(SelectionEvent e) {
152                 if (descriptionText != null) {
153                     descriptionText.setText(""); //$NON-NLS-1$
154
}
155             }
156
157             public void widgetDefaultSelected(SelectionEvent e) {
158
159             }
160
161         });
162       
163         customize();
164
165     }
166
167     private void customize() {
168         ColorRegistry reg = JFaceResources.getColorRegistry();
169         Color c1 = reg.get("org.eclipse.ui.workbench.ACTIVE_TAB_BG_START"), //$NON-NLS-1$
170
c2 = reg.get("org.eclipse.ui.workbench.ACTIVE_TAB_BG_END"); //$NON-NLS-1$
171
customizationsTabFolder.setSelectionBackground(new Color[] {c1, c2}, new int[] {100}, true);
172         customizationsTabFolder.setSelectionForeground(reg.get("org.eclipse.ui.workbench.ACTIVE_TAB_TEXT_COLOR")); //$NON-NLS-1$
173
customizationsTabFolder.setSimple(PlatformUI.getPreferenceStore().getBoolean(IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS));
174     }
175
176     private CTabItem createTabItem(CTabFolder aTabFolder, String JavaDoc label,
177             Composite composite, String JavaDoc imageKey) {
178         CTabItem extensionsTabItem = new CTabItem(aTabFolder, SWT.BORDER);
179         extensionsTabItem.setText(label);
180         extensionsTabItem.setControl(composite);
181         extensionsTabItem.setImage(NavigatorPlugin.getDefault().getImage(imageKey));
182         return extensionsTabItem;
183     }
184
185     private void createDescriptionText(Composite composite) {
186
187         descriptionText = new Text(composite, SWT.WRAP | SWT.V_SCROLL
188                 | SWT.BORDER);
189         descriptionText.setFont(composite.getFont());
190         descriptionText.setBackground(composite.getBackground());
191         GridData descriptionTextGridData = new GridData(
192                 GridData.FILL_HORIZONTAL);
193         descriptionTextGridData.heightHint = convertHeightInCharsToPixels(3);
194         descriptionText.setLayoutData(descriptionTextGridData);
195     }
196
197     private ISelectionChangedListener getSelectionListener() {
198         if (updateDescriptionSelectionListener == null) {
199             updateDescriptionSelectionListener = new FilterDialogSelectionListener(
200                     descriptionText);
201         }
202         return updateDescriptionSelectionListener;
203     }
204
205     /*
206      * (non-Javadoc)
207      *
208      * @see org.eclipse.jface.dialogs.Dialog#okPressed()
209      */

210     protected void okPressed() {
211
212         String JavaDoc[] contentExtensionIdsToActivate = new String JavaDoc[0];
213         if (contentExtensionsTab != null) {
214             List JavaDoc checkedExtensions = new ArrayList JavaDoc();
215             TableItem[] tableItems = contentExtensionsTab.getTable().getItems();
216             INavigatorContentDescriptor descriptor;
217             for (int i = 0; i < tableItems.length; i++) {
218                 descriptor = (INavigatorContentDescriptor) tableItems[i]
219                         .getData();
220
221                 if (tableItems[i].getChecked()) {
222                     checkedExtensions.add(descriptor.getId());
223                 }
224             }
225             if (checkedExtensions.size() != 0) {
226                 contentExtensionIdsToActivate = (String JavaDoc[]) checkedExtensions
227                         .toArray(new String JavaDoc[checkedExtensions.size()]);
228             }
229
230         }
231
232         String JavaDoc[] filterIdsToActivate = new String JavaDoc[0];
233         if (commonFiltersTab != null) {
234             Set JavaDoc checkedFilters = commonFiltersTab.getCheckedItems();
235             
236             filterIdsToActivate = new String JavaDoc[checkedFilters.size()];
237             int indx = 0;
238             for (Iterator JavaDoc iterator = checkedFilters.iterator(); iterator
239                     .hasNext();) {
240                 ICommonFilterDescriptor descriptor = (ICommonFilterDescriptor) iterator
241                         .next();
242
243                 filterIdsToActivate[indx++] = descriptor.getId();
244
245             }
246         }
247
248         UpdateActiveExtensionsOperation updateExtensions = new UpdateActiveExtensionsOperation(
249                 commonViewer, contentExtensionIdsToActivate);
250         UpdateActiveFiltersOperation updateFilters = new UpdateActiveFiltersOperation(
251                 commonViewer, filterIdsToActivate, true);
252
253         updateExtensions.execute(null, null);
254         updateFilters.execute(null, null);
255         super.okPressed();
256     }
257 }
258
Popular Tags