1 /******************************************************************************* 2 * Copyright (c) 2006, 2019 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 15 package org.eclipse.ui.internal.navigator.filters; 16 17 import java.util.HashSet; 18 import java.util.Set; 19 20 import org.eclipse.jface.viewers.CheckStateChangedEvent; 21 import org.eclipse.jface.viewers.CheckboxTableViewer; 22 import org.eclipse.jface.viewers.ICheckStateListener; 23 import org.eclipse.jface.viewers.ISelectionChangedListener; 24 import org.eclipse.swt.SWT; 25 import org.eclipse.swt.layout.GridData; 26 import org.eclipse.swt.layout.GridLayout; 27 import org.eclipse.swt.widgets.Composite; 28 import org.eclipse.swt.widgets.Label; 29 import org.eclipse.swt.widgets.Table; 30 import org.eclipse.ui.navigator.INavigatorContentService; 31 32 /** 33 * @since 3.2 34 * 35 */ 36 public class CustomizationTab extends Composite { 37 38 39 private final INavigatorContentService contentService; 40 41 private CheckboxTableViewer tableViewer; 42 private final Set checkedItems = new HashSet(); 43 44 private ICheckStateListener checkListener = event -> CustomizationTab.this.checkStateChanged(event); 45 CustomizationTab(Composite parent, INavigatorContentService aContentService)46 protected CustomizationTab(Composite parent, 47 INavigatorContentService aContentService) { 48 super(parent, SWT.RESIZE); 49 50 contentService = aContentService; 51 setFont(getParent().getFont()); 52 setLayout(new GridLayout()); 53 GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); 54 setData(data); 55 56 } 57 getTable()58 protected Table getTable() { 59 return tableViewer.getTable(); 60 } 61 addSelectionChangedListener( ISelectionChangedListener selectionListener)62 protected void addSelectionChangedListener( 63 ISelectionChangedListener selectionListener) { 64 if (tableViewer != null) { 65 tableViewer 66 .addSelectionChangedListener(selectionListener); 67 } 68 } 69 createTable()70 protected void createTable() { 71 72 tableViewer = CheckboxTableViewer.newCheckList(this,SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); 73 tableViewer.addCheckStateListener(checkListener); 74 75 tableViewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 76 tableViewer.getControl().setFont(getFont()); 77 78 } 79 80 @Override dispose()81 public void dispose() { 82 tableViewer.removeCheckStateListener(checkListener); 83 super.dispose(); 84 85 } 86 createInstructionsLabel(String labelText)87 protected void createInstructionsLabel(String labelText) { 88 89 Label extensionsInstructionLabel = new Label(this, SWT.BOLD | SWT.WRAP); 90 91 GridData gridData = new GridData(GridData.FILL_HORIZONTAL 92 | GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL 93 | GridData.VERTICAL_ALIGN_FILL); 94 95 extensionsInstructionLabel.setLayoutData(gridData); 96 extensionsInstructionLabel.setFont(getFont()); 97 extensionsInstructionLabel.setText(labelText); 98 } 99 100 getContentService()101 protected final INavigatorContentService getContentService() { 102 return contentService; 103 } 104 getTableViewer()105 protected final CheckboxTableViewer getTableViewer() { 106 return tableViewer; 107 } 108 getCheckedItems()109 protected Set getCheckedItems() { 110 return checkedItems; 111 } 112 checkStateChanged(CheckStateChangedEvent event)113 protected void checkStateChanged(CheckStateChangedEvent event) { 114 if (event.getChecked()) 115 checkedItems.add(event.getElement()); 116 else 117 checkedItems.remove(event.getElement()); 118 } 119 } 120