package org.geogebra.common.gui.dialog.options.model; import org.geogebra.common.euclidian.EuclidianView; import org.geogebra.common.euclidian3D.EuclidianView3DInterface; import org.geogebra.common.gui.view.algebra.AlgebraView; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.main.App; public class ViewLocationModel extends OptionsModel { public interface IGraphicsViewLocationListener extends PropertyListener { public void selectView(int index, boolean isSelected); public void setCheckBox3DVisible(boolean flag); public void setCheckBoxForPlaneVisible(boolean flag); // public void setCheckBoxAlgebraVisible(boolean flag); } private IGraphicsViewLocationListener listener; public ViewLocationModel(App app, IGraphicsViewLocationListener listener) { super(app); this.listener = listener; } @Override public void updateProperties() { boolean isInEV = false; boolean isInEV2 = false; boolean isInEV3D = false; boolean isInEVForPlane = false; boolean isInAV = false; for (int i = 0; i < getGeosLength(); i++) { GeoElement geo = getGeoAt(i); if (geo.isVisibleInView(App.VIEW_EUCLIDIAN)) { isInEV = true; } if (geo.isVisibleInView(App.VIEW_EUCLIDIAN2)) { isInEV2 = true; } if (geo.isVisibleInView3D()) { isInEV3D = true; } if (app.hasEuclidianViewForPlane()) { if (geo.isVisibleInViewForPlane()) { isInEVForPlane = true; } } if (geo.isAlgebraVisible()) { isInAV = true; } } listener.selectView(0, isInEV); listener.selectView(1, isInEV2); listener.selectView(2, isInEV3D); listener.selectView(3, isInEVForPlane); listener.selectView(4, isInAV); } public void applyToEuclidianView1(boolean value) { for (int i = 0; i < getGeosLength(); i++) { GeoElement geo = getGeoAt(i); if (value) { app.addToEuclidianView(geo); } else { app.removeFromEuclidianView(geo); } } } public void applyToEuclidianView2(boolean value) { for (int i = 0; i < getGeosLength(); i++) { GeoElement geo = getGeoAt(i); EuclidianView ev2 = app.getEuclidianView2(1); if (value) { geo.addView(App.VIEW_EUCLIDIAN2); ev2.add(geo); } else { geo.removeView(App.VIEW_EUCLIDIAN2); ev2.remove(geo); } } storeUndoInfo(); } public void applyToEuclidianView3D(boolean value) { if (!app.isEuclidianView3Dinited()) { return; } for (int i = 0; i < getGeosLength(); i++) { GeoElement geo = getGeoAt(i); EuclidianView3DInterface ev3D = app.getEuclidianView3D(); if (value) { geo.addViews3D(); ev3D.add(geo); } else { geo.removeViews3D(); ev3D.remove(geo); } } storeUndoInfo(); } public void applyToEuclidianViewForPlane(boolean value) { for (int i = 0; i < getGeosLength(); i++) { GeoElement geo = getGeoAt(i); if (value) { geo.setVisibleInViewForPlane(true); app.addToViewsForPlane(geo); } else { geo.setVisibleInViewForPlane(false); app.removeFromViewsForPlane(geo); } } storeUndoInfo(); } public void applyToAlgebraView(Boolean value) { AlgebraView av = app.getAlgebraView(); for (int i = 0; i < getGeosLength(); i++) { GeoElement geo = getGeoAt(i); geo.setAlgebraVisible(value); if (value) { av.add(geo); } else { av.remove(geo); } geo.updateRepaint(); } storeUndoInfo(); } @Override public boolean checkGeos() { if (listener == null) { return false; } listener.setCheckBox3DVisible(true); if (app.hasEuclidianViewForPlane()) { listener.setCheckBoxForPlaneVisible(true); } else { listener.setCheckBoxForPlaneVisible(false); } boolean go = true; for (int i = 0; go && i < getGeosLength(); i++) { GeoElement geo = getGeoAt(i); if (!geo.hasDrawable3D()) { listener.setCheckBox3DVisible(false); listener.setCheckBoxForPlaneVisible(false); go = false; } } // if (app.has(Feature.AV_EXTENSIONS)) { // // } return true; } @Override protected boolean isValidAt(int index) { // TODO Auto-generated method stub return false; } @Override public PropertyListener getListener() { return listener; } }