package org.geogebra.web.web.gui.view.algebra;
import org.geogebra.common.kernel.geos.GeoBoolean;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.common.main.Feature;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.Widget;
/**
* ReTeX based implementation of AV checkbox
*
*/
public class CheckboxTreeItem extends LatexTreeItem {
/**
* checkbox displaying boolean variables
*/
CheckBox checkBox = null;
/**
* @param geo0
* boolean geo
*/
public CheckboxTreeItem(GeoElement geo0) {
super(geo0);
}
@Override
protected RadioTreeItemController createController() {
return new CheckBoxTreeItemController(this);
}
/**
*
* @return The controller as CheckBoxTreeItemController.
*/
public CheckBoxTreeItemController getCheckBoxController() {
return (CheckBoxTreeItemController) getController();
}
@Override
protected void createAvexWidget() {
checkBox = new CheckBox();
checkBox.setValue(((GeoBoolean) geo).getBoolean());
content.addStyleName("noPadding");
}
@Override
protected void addControls() {
createControls();
// no add this time
}
@Override
protected void doUpdate() {
setNeedsUpdate(false);
if (hasMarblePanel()) {
marblePanel.update();
}
if (hasAnimPanel()) {
controls.updateAnimPanel();
}
content.clear();
createAvexWidget();
addAVEXWidget(content);
geo.getAlgebraDescriptionTextOrHTMLDefault(
getBuilder(getPlainTextItem()));
content.add(getPlainTextItem());
checkBox.setValue(((GeoBoolean) geo).getBoolean());
if (!app.has(Feature.AV_TEXT_BLACK)) {
updateColor(getPlainTextItem());
}
}
@Override
protected void addAVEXWidget(Widget w) {
main.clear();
main.add(marblePanel);
if (checkBox != null) {
main.add(checkBox);
}
// main.add(buttonPanel);
main.add(content);
main.add(controls);
}
/**
* @param geo
* element
* @return if geo matches to CheckboxTreeItem.
*/
public static boolean match(GeoElement geo) {
return geo instanceof GeoBoolean && geo.isSimple();
}
public static CheckboxTreeItem as(TreeItem ti) {
return (CheckboxTreeItem) ti;
}
@Override
public boolean isCheckBoxItem() {
return true;
}
@Override
public boolean isInputTreeItem() {
return false;
}
}