1
/*******************************************************************************
2
* Copyright (c) 2009, 2011 Ericsson
4
* All rights reserved. This program and the accompanying materials are
5
* made available under the terms of the Eclipse Public License v1.0 which
6
* accompanies this distribution, and is available at
7
* http://www.eclipse.org/legal/epl-v10.html
10
* Francois Chouinard - Copied and adapted from NewFolderDialog
11
*******************************************************************************/
13
package org.eclipse.linuxtools.internal.tmf.ui.project.dialogs;
16
import java.util.Arrays;
18
import org.eclipse.core.resources.IResource;
19
import org.eclipse.jface.dialogs.Dialog;
20
import org.eclipse.jface.dialogs.IDialogConstants;
21
import org.eclipse.jface.viewers.CheckboxTreeViewer;
22
import org.eclipse.jface.viewers.ITreeContentProvider;
23
import org.eclipse.jface.viewers.LabelProvider;
24
import org.eclipse.jface.viewers.Viewer;
25
import org.eclipse.swt.SWT;
26
import org.eclipse.swt.graphics.Point;
27
import org.eclipse.swt.layout.GridData;
28
import org.eclipse.swt.layout.GridLayout;
29
import org.eclipse.swt.widgets.Composite;
30
import org.eclipse.swt.widgets.Control;
31
import org.eclipse.swt.widgets.Group;
32
import org.eclipse.swt.widgets.Shell;
33
import org.eclipse.swt.widgets.Tree;
34
import org.eclipse.ui.ISharedImages;
35
import org.eclipse.ui.PlatformUI;
38
* <b><u>SelectSupplementaryResourcesDialog</u></b>
41
public class SelectSupplementaryResourcesDialog extends Dialog {
43
// ------------------------------------------------------------------------
45
// ------------------------------------------------------------------------
46
private CheckboxTreeViewer fTreeViewer;
47
private final IResource[] fAvailableResources;
48
private IResource[] fReturndResources;
50
// ------------------------------------------------------------------------
52
// ------------------------------------------------------------------------
54
public SelectSupplementaryResourcesDialog(Shell shell, IResource[] resources) {
56
fAvailableResources = Arrays.copyOf(resources, resources.length);
57
setShellStyle(SWT.RESIZE);
60
// ------------------------------------------------------------------------
62
// ------------------------------------------------------------------------
64
public IResource[] getResources() {
65
return Arrays.copyOf(fReturndResources, fReturndResources.length);
68
// ------------------------------------------------------------------------
70
// ------------------------------------------------------------------------
74
* @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
77
protected void configureShell(Shell newShell) {
78
super.configureShell(newShell);
79
newShell.setText(Messages.SelectSpplementaryResources_DialogTitle);
80
newShell.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_ETOOL_DELETE));
84
protected Control createDialogArea(Composite parent) {
85
Composite composite = (Composite) super.createDialogArea(parent);
86
composite.setLayout(new GridLayout());
87
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
89
Group contextGroup = new Group(composite, SWT.SHADOW_NONE);
90
contextGroup.setText(Messages.SelectSpplementaryResources_ResourcesGroupTitle);
91
contextGroup.setLayout(new GridLayout());
92
contextGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
94
fTreeViewer = new CheckboxTreeViewer(contextGroup, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
95
GridData data = new GridData(GridData.FILL_BOTH);
96
Tree tree = fTreeViewer.getTree();
97
tree.setLayoutData(data);
98
fTreeViewer.setContentProvider(new ITreeContentProvider() {
101
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
105
public void dispose() {
109
public boolean hasChildren(Object element) {
110
if (element instanceof IResource[]) {
117
public Object getParent(Object element) {
122
public Object[] getElements(Object inputElement) {
123
return getChildren(inputElement);
127
public Object[] getChildren(Object parentElement) {
128
if (parentElement instanceof IResource[]) {
129
return (Object[]) parentElement;
135
// fTreeViewer.setLabelProvider(new WorkbenchLabelProvider());
137
fTreeViewer.setLabelProvider(new LabelProvider() {
139
public String getText(Object element) {
140
if (element instanceof IResource) {
141
IResource resource = (IResource) element;
142
// show also trace name
143
return resource.getParent().getName() + File.separator + resource.getName();
145
return super.getText(element);
148
fTreeViewer.setInput(fAvailableResources);
150
getShell().setMinimumSize(new Point(300, 150));
157
* @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
160
protected void createButtonsForButtonBar(Composite parent) {
161
createButton(parent, IDialogConstants.CANCEL_ID, "&Cancel", true); //$NON-NLS-1$
162
createButton(parent, IDialogConstants.OK_ID, "&Ok", true); //$NON-NLS-1$
166
protected void okPressed() {
167
Object[] checked = fTreeViewer.getCheckedElements();
169
fReturndResources = new IResource[checked.length];
170
for (int i = 0; i < checked.length; i++) {
171
fReturndResources[i] = (IResource) checked[i];