package org.geogebra.common.euclidian; import org.geogebra.common.euclidian.draw.DrawInputBox; import org.geogebra.common.gui.inputfield.AutoCompleteTextField; import org.geogebra.common.javax.swing.GBox; import org.geogebra.common.kernel.geos.GeoInputBox; import org.geogebra.common.main.App; import org.geogebra.common.util.debug.Log; public abstract class ViewTextField { /** * */ private final EuclidianView euclidianView; private AutoCompleteTextField textField; private GBox box; /** * @param euclidianView * view */ public ViewTextField(EuclidianView euclidianView) { this.euclidianView = euclidianView; textField = null; box = null; } /** * @param length * number of characters * @param drawInputBox * linked drawable * @return textfield */ public AutoCompleteTextField getTextField(int length, DrawInputBox drawInputBox) { if (textField == null) { textField = newAutoCompleteTextField(length, this.euclidianView.app, drawInputBox); textField.setAutoComplete(false); textField.enableColoring(false); textField.setFocusTraversalKeysEnabled(false); createBox(); box.add(textField); this.euclidianView.add(box); } else { textField.setDrawTextField(drawInputBox); } return textField; } /** * @return textfield (may be null) */ public AutoCompleteTextField getTextField() { return textField; } /** * @param inputBox * input box to focus */ public void focusTo(GeoInputBox inputBox) { DrawInputBox d = (DrawInputBox) this.euclidianView .getDrawableFor(inputBox); if (d == null) { Log.debug("[TF] d is null!!!"); return; } Log.debug("[TF] focusTo " + inputBox.getLabelSimple() + " text: " + inputBox.getText()); d.attachTextField(); } public GBox getBox() { createBox(); return box; } private void createBox() { if (box == null) { box = createHorizontalBox( this.euclidianView.getEuclidianController()); box.add(textField); } } public abstract AutoCompleteTextField newAutoCompleteTextField(int length, App application, Drawable drawTextField); public abstract GBox createHorizontalBox(EuclidianController style); public void remove() { textField = null; box = null; } }