package org.geogebra.web.geogebra3D.web.gui.layout.panels;
import org.geogebra.common.gui.toolbar.ToolBar;
import org.geogebra.common.main.App;
import org.geogebra.common.main.Feature;
import org.geogebra.web.geogebra3D.web.euclidian3D.EuclidianView3DW;
import org.geogebra.web.html5.Browser;
import org.geogebra.web.html5.main.AppW;
import org.geogebra.web.web.gui.layout.panels.EuclidianDockPanelWAbstract;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Widget;
/**
* Dock panel for 3D
*/
public class EuclidianDockPanel3DW extends EuclidianDockPanelWAbstract {
/**
* default width of this panel
*/
public static final int DEFAULT_WIDTH = 480;
/** the inner panel */
EuclidianPanel euclidianpanel;
/**
* constructor
*
* @param app
* application
*
*/
public EuclidianDockPanel3DW(App app) {
super(App.VIEW_EUCLIDIAN3D, // view id
"GraphicsView3D", // view title
ToolBar.getAllToolsNoMacros3D(), // toolbar string
true, // style bar?
4, // menu order
'3' // ctrl-shift-3
);
this.app = (AppW) app;
this.setOpenInFrame(true);
this.setEmbeddedSize(DEFAULT_WIDTH);
// this.app = app;
}
@Override
protected Widget loadComponent() {
if (app.has(Feature.DYNAMIC_STYLEBAR)) {
setViewImage(getResources().settings());
} else {
setViewImage(getResources().styleBar_graphics3dView());
}
// 2D app or exam: just flow panel; 3D app in old browser: EVnoWebGL
if (!app.supportsView(App.VIEW_EUCLIDIAN3D)
&& Browser.supportsWebGL()) {
return new FlowPanel();
}
EuclidianView3DW view = (EuclidianView3DW) app.getEuclidianView3D();
euclidianpanel = new EuclidianPanel(this,
(AbsolutePanel) view.getComponent());
return euclidianpanel;
}
@Override
protected Widget loadStyleBar() {
if (getEuclidianView() == null) {
return super.loadStyleBar();
}
return (Widget) getEuclidianView().getStyleBar();
}
@Override
public EuclidianView3DW getEuclidianView() {
// do NOT initialize the view if it wasn't done previously
if (app != null && app.isEuclidianView3Dinited()) {
return (EuclidianView3DW) app.getEuclidianView3D();
}
return null;
}
/*
* @Override public void updateNavigationBar() {
*
* if (app.getShowCPNavNeedsUpdate(id)) {
* app.setShowConstructionProtocolNavigation(
* app.showConsProtNavigation(id), id); } if (app.showConsProtNavigation(id)
* && consProtNav == null) { this.addNavigationBar(); } if (consProtNav !=
* null) { consProtNav.update();
* consProtNav.setVisible(app.showConsProtNavigation(id)); //
* updateEuclidianPanel(); euclidianpanel.onResize(); } }
*/
@Override
public EuclidianPanel getEuclidianPanel() {
return euclidianpanel;
}
@Override
public void calculateEnvironment() {
if (app.isEuclidianView3Dinited()) {
app.getEuclidianView3D().getEuclidianController()
.calculateEnvironment();
}
}
@Override
public void resizeView(int width, int height) {
app.ggwGraphicsView3DDimChanged(width, height);
}
@Override
protected boolean needsResetIcon() {
return app.showResetIcon() && !app.showView(App.VIEW_EUCLIDIAN)
&& !app.showView(App.VIEW_EUCLIDIAN2);
}
}