package org.geogebra.web.web.gui.properties; import org.geogebra.common.gui.dialog.options.model.IComboListener; import org.geogebra.common.gui.dialog.options.model.MultipleOptionsModel; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.main.Localization; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ListBox; public class ListBoxPanel extends OptionPanel implements IComboListener { private Label label; private ListBox listBox; private String title; private Localization loc; public ListBoxPanel(Localization loc, final String title) { this.loc = loc; this.title = title; setLabel(new Label()); listBox = new ListBox(); FlowPanel mainWidget = new FlowPanel(); mainWidget.setStyleName("listBoxPanel"); mainWidget.add(getLabel()); mainWidget.add(getListBox()); getListBox().addChangeHandler(new ChangeHandler(){ @Override public void onChange(ChangeEvent event) { onListBoxChange(); }}); setWidget(mainWidget); } MultipleOptionsModel getMultipleModel() { return (MultipleOptionsModel)getModel(); } protected void onListBoxChange() { getMultipleModel().applyChanges(getListBox().getSelectedIndex()); } @Override public void setLabels() { getLabel().setText(getTitle() + ":"); int idx = getListBox().getSelectedIndex(); getListBox().clear(); getMultipleModel().fillModes(loc); getListBox().setSelectedIndex(idx); } @Override public void setSelectedIndex(int index) { getListBox().setSelectedIndex(index); } @Override public void addItem(String item) { getListBox().addItem(item); } public String getTitle() { String ret = loc.getPlain(title); if (ret.equals(title)) { // needed for eg Tooltip ret = loc.getMenu(title); } return ret; } public void setTitle(String title) { this.title = title; getLabel().setText(title); } public ListBox getListBox() { return listBox; } public Label getLabel() { return label; } public void setLabel(Label label) { this.label = label; } @Override public void setSelectedItem(String item) { // TODO Auto-generated method stub } @Override public void clearItems() { getListBox().clear(); } public void addItem(GeoElement item) { // TODO Auto-generated method stub } }