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