///******************************************************************************* // * Copyright (c) 2000, 2006 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 // *******************************************************************************/ // //package org.eclipse.jface.viewers; // //import java.text.MessageFormat; // //import org.eclipse.core.runtime.Assert; //import org.eclipse.rwt.graphics.Graphics; //import org.eclipse.swt.SWT; //import org.eclipse.swt.events.*; //import org.eclipse.swt.graphics.Font; //import org.eclipse.swt.widgets.*; // ///** // * A cell editor that presents a list of items in a combo box. // * The cell editor's value is the zero-based index of the selected // * item. // * <p> // * This class may be instantiated; it is not intended to be subclassed. // * </p> // */ //public class ComboBoxCellEditor extends CellEditor { // // /** // * The list of items to present in the combo box. // */ // private String[] items; // // /** // * The zero-based index of the selected item. // */ // int selection; // // /** // * The custom combo box control. // */ // Combo comboBox; //// CCombo comboBox; // // /** // * Default ComboBoxCellEditor style // */ // private static final int defaultStyle = SWT.NONE; // // /** // * Creates a new cell editor with no control and no st of choices. Initially, // * the cell editor has no cell validator. // * // * @since 1.0 // * @see CellEditor#setStyle // * @see CellEditor#create // * @see ComboBoxCellEditor#setItems // * @see CellEditor#dispose // */ // public ComboBoxCellEditor() { // setStyle(defaultStyle); // } // // /** // * Creates a new cell editor with a combo containing the given // * list of choices and parented under the given control. The cell // * editor value is the zero-based index of the selected item. // * Initially, the cell editor has no cell validator and // * the first item in the list is selected. // * // * @param parent the parent control // * @param items the list of strings for the combo box // */ // public ComboBoxCellEditor(Composite parent, String[] items) { // this(parent, items, defaultStyle); // } // // /** // * Creates a new cell editor with a combo containing the given // * list of choices and parented under the given control. The cell // * editor value is the zero-based index of the selected item. // * Initially, the cell editor has no cell validator and // * the first item in the list is selected. // * // * @param parent the parent control // * @param items the list of strings for the combo box // * @param style the style bits // * @since 1.0 // */ // public ComboBoxCellEditor(Composite parent, String[] items, int style) { // super(parent, style); // setItems(items); // } // // /** // * Returns the list of choices for the combo box // * // * @return the list of choices for the combo box // */ // public String[] getItems() { // return this.items; // } // // /** // * Sets the list of choices for the combo box // * // * @param items the list of choices for the combo box // */ // public void setItems(String[] items) { // Assert.isNotNull(items); // this.items = items; // populateComboBoxItems(); // } // // /* (non-Javadoc) // * Method declared on CellEditor. // */ // protected Control createControl(Composite parent) { // // comboBox = new Combo(parent, getStyle()); //// comboBox = new CCombo(parent, getStyle()); // comboBox.setFont(parent.getFont()); // // populateComboBoxItems(); // //// comboBox.addKeyListener(new KeyAdapter() { //// // hook key pressed - see PR 14201 //// public void keyPressed(KeyEvent e) { //// keyReleaseOccured(e); //// } //// }); // // comboBox.addSelectionListener(new SelectionAdapter() { // public void widgetDefaultSelected(SelectionEvent event) { // applyEditorValueAndDeactivate(); // } // // public void widgetSelected(SelectionEvent event) { // selection = comboBox.getSelectionIndex(); // } // }); // //// comboBox.addTraverseListener(new TraverseListener() { //// public void keyTraversed(TraverseEvent e) { //// if (e.detail == SWT.TRAVERSE_ESCAPE //// || e.detail == SWT.TRAVERSE_RETURN) { //// e.doit = false; //// } //// } //// }); // // comboBox.addFocusListener(new FocusAdapter() { // public void focusLost(FocusEvent e) { // ComboBoxCellEditor.this.focusLost(); // } // }); // return comboBox; // } // // /** // * The <code>ComboBoxCellEditor</code> implementation of // * this <code>CellEditor</code> framework method returns // * the zero-based index of the current selection. // * // * @return the zero-based index of the current selection wrapped // * as an <code>Integer</code> // */ // protected Object doGetValue() { // return new Integer(selection); // } // // /* (non-Javadoc) // * Method declared on CellEditor. // */ // protected void doSetFocus() { // comboBox.setFocus(); // } // // /** // * The <code>ComboBoxCellEditor</code> implementation of // * this <code>CellEditor</code> framework method sets the // * minimum width of the cell. The minimum width is 10 characters // * if <code>comboBox</code> is not <code>null</code> or <code>disposed</code> // * else it is 60 pixels to make sure the arrow button and some text is visible. // * The list of CCombo will be wide enough to show its longest item. // */ // public LayoutData getLayoutData() { // LayoutData layoutData = super.getLayoutData(); // if ((comboBox == null) || comboBox.isDisposed()) { // layoutData.minimumWidth = 60; // } else { // // make the comboBox 10 characters wide // Font font = comboBox.getFont(); // layoutData.minimumWidth // = ( int )Graphics.getAvgCharWidth( font ) * 10 + 10; //// GC gc = new GC(comboBox); //// layoutData.minimumWidth = (gc.getFontMetrics() //// .getAverageCharWidth() * 10) + 10; //// gc.dispose(); // } // return layoutData; // } // // /** // * The <code>ComboBoxCellEditor</code> implementation of // * this <code>CellEditor</code> framework method // * accepts a zero-based index of a selection. // * // * @param value the zero-based index of the selection wrapped // * as an <code>Integer</code> // */ // protected void doSetValue(Object value) { // Assert.isTrue(comboBox != null && (value instanceof Integer)); // selection = ((Integer) value).intValue(); // comboBox.select(selection); // } // // /** // * Updates the list of choices for the combo box for the current control. // */ // private void populateComboBoxItems() { // if (comboBox != null && items != null) { // comboBox.removeAll(); // for (int i = 0; i < items.length; i++) { // comboBox.add(items[i], i); // } // // setValueValid(true); // selection = 0; // } // } // // /** // * Applies the currently selected value and deactivates the cell editor // */ // void applyEditorValueAndDeactivate() { // // must set the selection before getting value // selection = comboBox.getSelectionIndex(); // Object newValue = doGetValue(); // markDirty(); // boolean isValid = isCorrect(newValue); // setValueValid(isValid); // // if (!isValid) { // // Only format if the 'index' is valid // if (items.length > 0 && selection >= 0 && selection < items.length) { // // try to insert the current value into the error message. // setErrorMessage(MessageFormat.format(getErrorMessage(), // new Object[] { items[selection] })); // } // else { // // Since we don't have a valid index, assume we're using an 'edit' // // combo so format using its text value // setErrorMessage(MessageFormat.format(getErrorMessage(), // new Object[] { comboBox.getText() })); // } // } // // fireApplyEditorValue(); // deactivate(); // } // // /* // * (non-Javadoc) // * @see org.eclipse.jface.viewers.CellEditor#focusLost() // */ // protected void focusLost() { // if (isActivated()) { // applyEditorValueAndDeactivate(); // } // } // // /* // * (non-Javadoc) // * @see org.eclipse.jface.viewers.CellEditor#keyReleaseOccured(org.eclipse.swt.events.KeyEvent) // */ //// protected void keyReleaseOccured(KeyEvent keyEvent) { //// if (keyEvent.character == '\u001b') { // Escape character //// fireCancelEditor(); //// } else if (keyEvent.character == '\t') { // tab key //// applyEditorValueAndDeactivate(); //// } //// } //}