package org.geogebra.web.web.gui.properties; import org.geogebra.common.gui.dialog.options.model.GeoComboListener; import org.geogebra.common.gui.dialog.options.model.MultipleOptionsModel; import org.geogebra.common.kernel.StringTemplate; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.main.App; import org.geogebra.common.main.Localization; import org.geogebra.common.main.error.ErrorHandler; import org.geogebra.common.util.AsyncOperation; import org.geogebra.web.html5.main.AppW; import org.geogebra.web.web.gui.util.ComboBoxW; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; public abstract class ComboBoxPanel extends OptionPanel implements ErrorHandler, GeoComboListener { private Label label; private ComboBoxW comboBox; private String title; private Localization loc; private App app; private FlowPanel errorPanel; public ComboBoxPanel(App app, final String title) { this.loc = app.getLocalization(); this.app = app; this.title = title; label = new Label(); comboBox = new ComboBoxW((AppW) app) { @Override protected void onValueChange(String value) { onComboBoxChange(); }}; comboBox.setEnabled(true); FlowPanel mainWidget = new FlowPanel(); mainWidget.setStyleName("listBoxPanel"); mainWidget.add(label); mainWidget.add(comboBox); errorPanel = new FlowPanel(); errorPanel.addStyleName("Dialog-errorPanel"); mainWidget.add(errorPanel); setWidget(mainWidget); } MultipleOptionsModel getMultipleModel() { return (MultipleOptionsModel)getModel(); } protected abstract void onComboBoxChange(); @Override public void setLabels() { getLabel().setText(loc.getPlain(getTitle()) + ":"); String text = comboBox.getValue(); comboBox.getModel().clear(); getMultipleModel().fillModes(loc); comboBox.setValue(text); } @Override public void setSelectedIndex(int index) { comboBox.setSelectedIndex(index); } @Override public void addItem(String item) { comboBox.addItem(item); } @Override public void addItem(GeoElement geo) { if (geo == null) { comboBox.addItem(""); return; } comboBox.addItem(geo.getLabel(StringTemplate.editTemplate), geo); } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; getLabel().setText(title); } public Label getLabel() { return label; } public void setLabel(Label label) { this.label = label; } @Override public void setSelectedItem(String item) { // TODO Auto-generated method stub } public ComboBoxW getComboBox() { return comboBox; } @Override public void clearItems() { comboBox.getModel().clear(); } @Override public void showError(String msg) { if (msg == null) { errorPanel.clear(); return; } errorPanel.clear(); String[] lines = msg.split("\n"); for (String item : lines) { errorPanel.add(new Label(item)); } } @Override public void resetError() { errorPanel.clear(); } @Override public void showCommandError(String command, String message) { app.getDefaultErrorHandler().showCommandError(command, message); } @Override public String getCurrentCommand() { return null; } @Override public boolean onUndefinedVariables(String string, AsyncOperation<String[]> callback) { // TODO Auto-generated method stub return false; } }