1 17 package org.eclipse.emf.common.ui.celleditor; 18 19 20 import java.util.Iterator ; 21 import java.util.List ; 22 23 import org.eclipse.jface.viewers.ComboBoxCellEditor; 24 import org.eclipse.jface.viewers.ILabelProvider; 25 import org.eclipse.swt.SWT; 26 import org.eclipse.swt.widgets.Composite; 27 28 29 32 public class ExtendedComboBoxCellEditor extends ComboBoxCellEditor 33 { 34 public static String [] createItems(List list, ILabelProvider labelProvider, boolean sorted) 35 { 36 String [] result; 37 38 if (list != null && list.size() > 0) 41 { 42 result = new String [list.size()]; 45 46 int i = 0; 49 for (Iterator objects = list.iterator(); objects.hasNext(); ++i) 50 { 51 Object object = objects.next(); 52 result[i] = labelProvider.getText(object); 53 } 54 55 } 59 else 60 { 61 result = new String [] { "" }; 62 } 63 64 return result; 65 } 66 67 70 protected List list; 71 72 public ExtendedComboBoxCellEditor(Composite composite, List list, ILabelProvider labelProvider) 73 { 74 this(composite, list, labelProvider, false, SWT.READ_ONLY); 75 } 76 77 public ExtendedComboBoxCellEditor(Composite composite, List list, ILabelProvider labelProvider, boolean sorted) 78 { 79 this(composite, list, labelProvider, sorted, SWT.READ_ONLY); 80 } 81 82 public ExtendedComboBoxCellEditor(Composite composite, List list, ILabelProvider labelProvider, int style) 83 { 84 this(composite, list, labelProvider, false, style); 85 } 86 87 public ExtendedComboBoxCellEditor(Composite composite, List list, ILabelProvider labelProvider, boolean sorted, int style) 88 { 89 super(composite, createItems(list, labelProvider, sorted), style); 90 91 this.list = list; 92 } 93 94 public Object doGetValue() 95 { 96 int index = ((Integer )super.doGetValue()).intValue(); 99 return index < list.size() && index >= 0 ? list.get(((Integer )super.doGetValue()).intValue()) : null; 100 } 101 102 public void doSetValue(Object value) 103 { 104 int index = list.indexOf(value); 107 if (index != -1) 108 { 109 super.doSetValue(new Integer (list.indexOf(value))); 110 } 111 } 112 } 113 | Popular Tags |