package org.geogebra.web.html5.euclidian; import org.geogebra.common.euclidian.EuclidianView; import org.geogebra.common.main.App; import org.geogebra.web.html5.main.AppW; import com.google.gwt.canvas.client.Canvas; import com.google.gwt.core.client.Scheduler; import com.google.gwt.dom.client.Style; import com.google.gwt.dom.client.Style.Overflow; import com.google.gwt.user.client.ui.AbsolutePanel; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.RequiresResize; import com.google.gwt.user.client.ui.Widget; public class EuclidianSimplePanelW extends AbsolutePanel implements EuclidianPanelWAbstract, RequiresResize { AppW app; int oldHeight = 0; int oldWidth = 0; Canvas eview1 = null;// static foreground /** * This constructor is used by the applet * * @param application * @param stylebar */ public EuclidianSimplePanelW(AppW application) { super(); loadComponent(); app = application; } protected Widget loadComponent() { eview1 = Canvas.createIfSupported(); eview1.getElement().getStyle().setPosition(Style.Position.RELATIVE); eview1.getElement().getStyle().setZIndex(0); getElement().getStyle().setOverflow(Overflow.VISIBLE); add(eview1); return this; } @Override public Canvas getCanvas() { return eview1; } @Override public Panel getEuclidianPanel() { return this; } /** * @param app1 * application */ public void attachApp(App app1) { this.app = (AppW) app1; } @Override public AbsolutePanel getAbsolutePanel() { return this; } @Override public EuclidianView getEuclidianView() { if (app != null) { return app.getEuclidianView1(); } return null; } @Override public void onResize() { // This is probably not needed, but what if yes? if (app != null) { int h = getOffsetHeight(); int w = getOffsetWidth(); // exit if new size cannot be determined if (h <= 0 || w <= 0) { return; } if (h != oldHeight || w != oldWidth) { app.ggwGraphicsViewDimChanged(w, h); oldHeight = h; oldWidth = w; } } } @Override public void deferredOnResize() { // There is probably no need for deferred call here, but what if yes? Scheduler.get().scheduleDeferred(onResizeCmd); // onResize(); } Scheduler.ScheduledCommand onResizeCmd = new Scheduler.ScheduledCommand() { @Override public void execute() { onResize(); } }; @Override public void updateNavigationBar() { // no navigation } @Override public void setVisible(boolean sv) { super.setVisible(sv); if (getEuclidianView() != null) { ((EuclidianViewW) getEuclidianView()).updateFirstAndLast(sv, false); } } }