package org.geogebra.web.html5.gui.inputfield;
import org.geogebra.common.gui.util.TableSymbols;
import org.geogebra.common.main.Localization;
import org.geogebra.web.html5.gui.GPopupPanel;
import org.geogebra.web.html5.main.AppW;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseDownHandler;
import com.google.gwt.user.client.ui.HTMLTable;
import com.google.gwt.user.client.ui.HTMLTable.Cell;
import com.google.gwt.user.client.ui.Widget;
public class SymbolTablePopupW extends GPopupPanel implements ClickHandler {
SymbolTableW symbolTable = null;
private AppW app;
private AutoCompleteW textField;
public SymbolTablePopupW(AppW app, AutoCompleteW autoCompleteTextField,
Widget invoker) {
super(true, app.getPanel());
this.app = app;
this.textField = autoCompleteTextField;
createSymbolTable();
this.addDomHandler(new MouseDownHandler() {
@Override
public void onMouseDown(MouseDownEvent event) {
// used because autoCompleteTextField should not loose focus
event.preventDefault();
}
}, MouseDownEvent.getType());
// prevent autohide when clicking on the popup button
addAutoHidePartner(invoker.getElement());
addStyleName("SymbolTablePopup");
}
private void createSymbolTable() {
Localization loc = app.getLocalization();
String[][] map = TableSymbols.basicSymbolsMap(loc);
String[] icons = TableSymbols.basicSymbols(loc, map);
symbolTable = new SymbolTableW(icons);
add(symbolTable);
symbolTable.addClickHandler(this);
}
@Override
public void onClick(ClickEvent event) {
// autoCompleteTextField should not loose focus
this.textField.setFocus(true, false);
Cell clickCell = ((HTMLTable) event.getSource()).getCellForEvent(event);
textField.insertString(clickCell.getElement().getInnerText());
hide();
}
/**
* Ensure the popup toggle button is updated after hiding
*/
@Override
public void hide(boolean autoClosed) {
super.hide(autoClosed);
textField.toggleSymbolButton(false);
AutoCompleteTextFieldW.setShowSymbolButtonFocused(false);
}
}