/*******************************************************************************
* Copyright (c) 2005, 2008 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
* QNX Software System
*******************************************************************************/
package org.eclipse.cdt.internal.ui.dialogs;
import java.util.Arrays;
import java.util.List;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
/**
* A class to select one or more elements out of an indexed property
*/
public class ElementListSelectionDialog extends AbstractElementListSelectionDialog {
private List<?> fElements;
/*
* @private
*/
@Override
protected void computeResult() {
setResult(getWidgetSelection());
}
/*
* @private
*/
@Override
protected Control createDialogArea(Composite parent) {
Control result= super.createDialogArea(parent);
setSelectionListElements(fElements, false);
//a little trick to make the window come up faster
String initialFilter= null;
if (getPrimaryInitialSelection() instanceof String)
initialFilter= (String)getPrimaryInitialSelection();
if (initialFilter != null)
setFilter(initialFilter, true);
else
refilter();
return result;
}
public Object getSelectedElement() {
return getPrimaryResult();
}
public Object[] getSelectedElements() {
return getResult();
}
/*
* @private
*/
@Override
protected void handleDoubleClick() {
if (verifyCurrentSelection()) {
buttonPressed(IDialogConstants.OK_ID);
}
}
/**
* Constructs a list selection dialog.
* @param renderer The label renderer used
* @param ignoreCase Decides if the match string ignores lower/upper case
* @param multipleSelection Allow multiple selection
*/
public ElementListSelectionDialog(Shell parent, String title, Image image, ILabelProvider renderer, boolean ignoreCase, boolean multipleSelection) {
super (parent, title, image, renderer, ignoreCase, multipleSelection);
}
/**
* Constructs a list selection dialog.
* @param renderer The label renderer used
* @param ignoreCase Decides if the match string ignores lower/upppr case
* @param multipleSelection Allow multiple selection
*/
public ElementListSelectionDialog(Shell parent, ILabelProvider renderer, boolean ignoreCase, boolean multipleSelection) {
this(parent, "", null, renderer, ignoreCase, multipleSelection); //$NON-NLS-1$
}
public int open(Object[] elements) {
return open(Arrays.asList(elements));
}
public int open(Object[] elements, String initialSelection) {
return open(Arrays.asList(elements), initialSelection);
}
/**
* Open the dialog.
* @param elements The elements to show in the list
* @return Returns OK or CANCEL
*/
public int open(List<?> elements) {
setElements(elements);
return open();
}
/**
* Open the dialog.
* @param elements The elements to show in the list
* @param initialSelection The initial content of the match text box.
* @return Returns OK or CANCEL
*/
public int open(List<?> elements, String initialSelection) {
setElements(elements);
setInitialSelection(initialSelection);
return open();
}
/**
* Sets the elements presented by this dialog.
*/
public void setElements(List<?> elements) {
fElements= elements;
}
}