package org.geogebra.web.geogebra3D.web.euclidian3D; import org.geogebra.common.euclidian.EuclidianConstants; import org.geogebra.common.euclidian.EuclidianView; import org.geogebra.common.geogebra3D.euclidian3D.EuclidianView3D; import org.geogebra.common.gui.util.SelectionTable; import org.geogebra.common.kernel.arithmetic.MyDouble; import org.geogebra.common.main.Feature; import org.geogebra.web.html5.main.AppW; import org.geogebra.web.web.gui.util.ImageOrText; import org.geogebra.web.web.gui.util.PopupMenuButtonW; public class AxesAndPlanePopup extends PopupMenuButtonW { private EuclidianView3D ev; private ImageOrText defaultIcon; /** * @param app * application * @param data * icons * @param ev * view */ public AxesAndPlanePopup(AppW app, ImageOrText[] data, EuclidianView3D ev) { super(app, data, -1, data.length, SelectionTable.MODE_ICON, true, false, null); this.ev = ev; defaultIcon = data.length > 1 ? data[1] : null; this.setIcon(data[getIndexFromEV()]); } private int getIndexFromEV() { int ret = 0; if (ev.getShowXaxis()) { ret++; } if (ev.getShowPlane()) { ret += 2; } return ret; } public void setIndexFromEV() { setSelectedIndex(getIndexFromEV()); } /** * set euclidian view from index */ public void setEVFromIndex() { int index = getSelectedIndex(); ev.getSettings().beginBatch(); ev.getSettings().setShowAxes(MyDouble.isOdd(index)); ev.getSettings().setShowPlate(index >= 2); ev.getSettings().endBatch(); ((EuclidianView3DW) ev).doRepaint(); } @Override public void update(Object[] geos) { if (app.has(Feature.CLEAR_VIEW_STYLEBAR)) { this.setVisible(geos.length == 0); } else { this.setVisible( geos.length == 0 && !EuclidianView.isPenMode(app.getMode()) && app.getMode() != EuclidianConstants.MODE_DELETE); } } @Override public void setIcon(ImageOrText icon) { if (getSelectedIndex() == 0 && defaultIcon != null) { super.setIcon(defaultIcon); this.removeStyleName("selected"); } else { super.setIcon(icon); this.addStyleName("selected"); } } }