/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.nebula.widgets.xviewer.util;
import java.util.Collection;
import org.eclipse.nebula.widgets.xviewer.XViewerText;
import org.eclipse.nebula.widgets.xviewer.util.internal.ArrayTreeContentProvider;
import org.eclipse.nebula.widgets.xviewer.util.internal.StringLabelProvider;
import org.eclipse.nebula.widgets.xviewer.util.internal.StringNameComparator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;
/**
* @author Donald G. Dunne
*/
public class EnumStringMultiSelectionDialog extends CheckedTreeSelectionDialog {
private Button addSelectedRadioButton;
private Button replaceAllRadioButton;
private Button deleteSelectedRadioButton;
public static enum Selection {
AddSelection,
ReplaceAll,
DeleteSelected
};
private Selection selected = Selection.AddSelection;
private boolean enableReplace = false;
private boolean enableDelete = false;
public EnumStringMultiSelectionDialog(String displayName, Collection<String> enums, Collection<String> selEnums) {
super(Display.getCurrent().getActiveShell(), new StringLabelProvider(), new ArrayTreeContentProvider());
setTitle(XViewerText.get("EnumStringMultiSelectionDialog.title") + " " + displayName); //$NON-NLS-1$//$NON-NLS-2$
setMessage(String.format(XViewerText.get("EnumStringMultiSelectionDialog.message"), displayName)); //$NON-NLS-1$
setInput(enums);
setComparator(new StringNameComparator());
setInitialSelections(selEnums.toArray());
}
public EnumStringMultiSelectionDialog(String displayName, Collection<String> enums, Collection<String> selEnums, boolean enableReplace, boolean enableDelete) {
this(displayName, enums, selEnums);
this.enableDelete = enableDelete;
this.enableReplace = enableReplace;
}
@Override
protected Control createDialogArea(Composite container) {
Control c = super.createDialogArea(container);
Composite comp = new Composite(container, SWT.NONE);
comp.setLayout(new GridLayout(2, false));
(new Label(comp, SWT.None)).setText(XViewerText.get("EnumStringMultiSelectionDialog.label.add")); //$NON-NLS-1$
addSelectedRadioButton = new Button(comp, SWT.CHECK);
addSelectedRadioButton.setSelection(true);
addSelectedRadioButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
if (addSelectedRadioButton.getSelection()) {
selected = Selection.AddSelection;
}
}
});
if (enableReplace) {
(new Label(comp, SWT.None)).setText(XViewerText.get("EnumStringMultiSelectionDialog.label.replace")); //$NON-NLS-1$
replaceAllRadioButton = new Button(comp, SWT.CHECK);
replaceAllRadioButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
if (replaceAllRadioButton.getSelection()) {
selected = Selection.ReplaceAll;
}
}
});
}
if (enableDelete) {
(new Label(comp, SWT.None)).setText(XViewerText.get("EnumStringMultiSelectionDialog.label.remove")); //$NON-NLS-1$
deleteSelectedRadioButton = new Button(comp, SWT.CHECK);
deleteSelectedRadioButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
super.widgetSelected(e);
if (deleteSelectedRadioButton.getSelection()) {
selected = Selection.DeleteSelected;
}
}
});
}
return c;
}
public Selection getSelected() {
return selected;
}
}