1 11 15 package org.eclipse.ui.internal.navigator.filters; 16 17 import java.util.ArrayList ; 18 import java.util.Iterator ; 19 import java.util.List ; 20 import java.util.Set ; 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 53 public class CommonFilterSelectionDialog extends Dialog { 54 55 private static final String FILTER_ICON = "icons/full/elcl16/filter_ps.gif"; private static final String CONTENT_ICON = "icons/full/elcl16/content.gif"; 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 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(""); } 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"), c2 = reg.get("org.eclipse.ui.workbench.ACTIVE_TAB_BG_END"); customizationsTabFolder.setSelectionBackground(new Color[] {c1, c2}, new int[] {100}, true); 172 customizationsTabFolder.setSelectionForeground(reg.get("org.eclipse.ui.workbench.ACTIVE_TAB_TEXT_COLOR")); customizationsTabFolder.setSimple(PlatformUI.getPreferenceStore().getBoolean(IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS)); 174 } 175 176 private CTabItem createTabItem(CTabFolder aTabFolder, String label, 177 Composite composite, String 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 210 protected void okPressed() { 211 212 String [] contentExtensionIdsToActivate = new String [0]; 213 if (contentExtensionsTab != null) { 214 List checkedExtensions = new ArrayList (); 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 []) checkedExtensions 227 .toArray(new String [checkedExtensions.size()]); 228 } 229 230 } 231 232 String [] filterIdsToActivate = new String [0]; 233 if (commonFiltersTab != null) { 234 Set checkedFilters = commonFiltersTab.getCheckedItems(); 235 236 filterIdsToActivate = new String [checkedFilters.size()]; 237 int indx = 0; 238 for (Iterator 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 |