blob: f4dadd0c4fdfd11a13d587532ffdcaa18e5652b5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2007 Oracle. 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: Oracle. - initial API and implementation
*******************************************************************************/
package org.eclipse.jpt.ui.internal.widgets;
import org.eclipse.jface.viewers.AbstractListViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
//bug #69254 is why i created this class, it is a copy of ComboViwer but using a CCombo
/**
* A concrete viewer based on an SWT <code>Combo</code> control. This class is intended
* as an alternative to the JFace <code>ListViewer</code>, which displays its content
* in a combo box rather than a list. Wherever possible, this class attempts to behave
* like ListViewer. <p>
*
* This class is designed to be instantiated with a pre-existing SWT combo control
* and configured with a domain-specific content provider, label provider, element
* filter (optional), and element sorter (optional).
* </p>
*
* @see org.eclipse.jface.viewers.ListViewer
* @since 3.0
*/
public final class CComboViewer extends AbstractListViewer {
/**
* This viewer's list control.
*/
private CCombo combo;
/**
* Creates a combo viewer on a newly-created combo control under the given parent.
* The viewer has no input, no content provider, a default label provider,
* no sorter, and no filters.
*
* @param parent the parent control
*/
public CComboViewer(Composite parent) {
this(parent, SWT.READ_ONLY | SWT.BORDER);
}
/**
* Creates a combo viewer on a newly-created combo control under the given parent.
* The combo control is created using the given SWT style bits.
* The viewer has no input, no content provider, a default label provider,
* no sorter, and no filters.
*
* @param parent the parent control
* @param style the SWT style bits
*/
public CComboViewer(Composite parent, int style) {
this(new CCombo(parent, style));
}
/**
* Creates a combo viewer on the given combo control.
* The viewer has no input, no content provider, a default label provider,
* no sorter, and no filters.
*
* @param list the combo control
*/
public CComboViewer(CCombo list) {
this.combo = list;
hookControl(list);
}
protected void listAdd(String string, int index) {
combo.add(string, index);
}
protected void listSetItem(int index, String string) {
combo.setItem(index, string);
}
protected int[] listGetSelectionIndices() {
return new int[] { combo.getSelectionIndex() };
}
protected int listGetItemCount() {
return combo.getItemCount();
}
protected void listSetItems(String[] labels) {
combo.setItems(labels);
}
protected void listRemoveAll() {
combo.removeAll();
}
protected void listRemove(int index) {
combo.remove(index);
}
/* (non-Javadoc)
* Method declared on Viewer.
*/
public Control getControl() {
return combo;
}
/**
* Returns this list viewer's list control.
*
* @return the list control
*/
public CCombo getCombo() {
return combo;
}
/*
* Do nothing -- combos only display the selected element, so there is no way
* we can ensure that the given element is visible without changing the selection.
* Method defined on StructuredViewer.
*/
public void reveal(Object element) {
return;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.AbstractListViewer#listSelectAndShow(int[])
*/
protected void listSetSelection(int[] ixs) {
for (int idx = 0; idx < ixs.length; idx++) {
combo.select(ixs[idx]);
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.AbstractListViewer#listDeselectAll()
*/
protected void listDeselectAll() {
combo.deselectAll();
combo.clearSelection();
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.AbstractListViewer#listShowSelection()
*/
protected void listShowSelection() {
}
}