package org.eclipse.swt.widgets; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.internal.TypedListener; import org.eclipse.swt.internal.Util; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Parent; import javafx.scene.control.ComboBox; public class Combo extends Composite { private ComboBox<String> control; private ObservableList<String> items; public Combo(Composite parent, int style) { super(parent, style); } @Override protected void createWidget() { control = new ComboBox<String>(); items = FXCollections.observableArrayList(); control.setItems(items); } @Override protected void internal_attachControl(Control c) { // TODO Auto-generated method stub super.internal_attachControl(c); } @Override public Parent internal_getNativeObject() { return control; } @Override protected double internal_getHeight() { return control.getHeight(); } @Override protected double internal_getPrefHeight() { return control.prefHeight(javafx.scene.control.Control.USE_COMPUTED_SIZE); } @Override protected double internal_getPrefWidth() { return control.prefWidth(javafx.scene.control.Control.USE_COMPUTED_SIZE); } @Override protected double internal_getWidth() { return control.getWidth(); } @Override protected void internal_setLayout(Layout layout) { // No children supported } public void add (String string) { checkWidget (); if (string == null) error (SWT.ERROR_NULL_ARGUMENT); } public void add (String string, int index) { checkWidget (); if (string == null) error (SWT.ERROR_NULL_ARGUMENT); } public void addModifyListener (ModifyListener listener) { checkWidget (); if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); TypedListener typedListener = new TypedListener (listener); addListener (SWT.Modify, typedListener); } public void addSelectionListener(SelectionListener listener) { checkWidget (); if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); TypedListener typedListener = new TypedListener (listener); addListener (SWT.Selection,typedListener); addListener (SWT.DefaultSelection,typedListener); } public void addVerifyListener (VerifyListener listener) { checkWidget (); if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); TypedListener typedListener = new TypedListener (listener); addListener (SWT.Verify, typedListener); } public void clearSelection () { checkWidget (); control.getSelectionModel().clearSelection(); } public void copy () { //TODO Not implemented Util.logNotImplemented(); } public void cut () { //TODO Not implemented Util.logNotImplemented(); } public void deselect (int index) { checkWidget(); control.getSelectionModel().clearSelection(index); } public void deselectAll () { control.getSelectionModel().clearSelection(); } public Point getCaretLocation () { //TODO Not implemented Util.logNotImplemented(); return null; } public int getCaretPosition () { //TODO Not implemented Util.logNotImplemented(); return 0; } public String getItem (int index) { checkWidget(); return items.get(index); } public int getItemCount () { return items.size(); } public int getItemHeight () { //TODO Not implemented Util.logNotImplemented(); return 0; } public String [] getItems () { return items.toArray(new String[0]); } public boolean getListVisible () { checkWidget(); return control.isShowing(); } public Point getSelection () { //TODO Not implemented Util.logNotImplemented(); return null; } public int getSelectionIndex () { checkWidget(); return control.getSelectionModel().getSelectedIndex(); } public String getText () { checkWidget(); return control.getValue(); } public int getTextHeight () { //TODO Not implemented Util.logNotImplemented(); return 0; } public int getTextLimit () { //TODO Not implemented Util.logNotImplemented(); return 0; } public int getVisibleItemCount () { checkWidget(); return control.getVisibleRowCount(); } public int indexOf (String string) { checkWidget(); return items.indexOf(string); } public int indexOf (String string, int start) { checkWidget(); return items.subList(start, items.size()-1).indexOf(string); } public void paste () { checkWidget (); //TODO No JavaFX API yet throw new UnsupportedOperationException(); } public void remove (int index) { checkWidget(); items.remove(index); } public void remove (int start, int end) { checkWidget(); items.remove(start, end); } public void remove (String string) { checkWidget(); items.remove(string); } public void removeAll () { checkWidget(); items.clear(); } public void removeModifyListener (ModifyListener listener) { checkWidget (); if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); unregisterListener(SWT.Modify, listener); } public void removeSelectionListener (SelectionListener listener) { checkWidget (); if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); unregisterListener(SWT.Selection, listener); unregisterListener(SWT.DefaultSelection,listener); } public void removeVerifyListener (VerifyListener listener) { checkWidget (); if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); unregisterListener(SWT.Verify, listener); } public void select (int index) { checkWidget (); control.getSelectionModel().select(index); } public void setItem (int index, String string) { checkWidget (); int idx = indexOf(string, index); control.getSelectionModel().select(idx); } public void setItems (String [] items) { checkWidget (); this.items.setAll(items); } public void setListVisible (boolean visible) { checkWidget (); if( visible ) { control.show(); } else { control.hide(); } } public void setSelection (Point selection) { //TODO Not implemented Util.logNotImplemented(); } public void setText (String string) { checkWidget (); control.setValue(string); } public void setTextLimit (int limit) { //TODO Not implemented Util.logNotImplemented(); } public void setVisibleItemCount (int count) { checkWidget (); control.setVisibleRowCount(count); } }