package org.geogebra.web.geogebra3D.web.gui.layout.panels;
import org.geogebra.common.euclidian.EuclidianView;
import org.geogebra.common.factories.AwtFactory;
import org.geogebra.common.gui.toolbar.ToolBar;
import org.geogebra.common.io.layout.DockPanelData;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.common.main.App;
import org.geogebra.common.main.Feature;
import org.geogebra.common.main.settings.EuclidianSettings;
import org.geogebra.ggbjdk.java.awt.geom.Rectangle;
import org.geogebra.web.geogebra3D.web.euclidianForPlane.EuclidianViewForPlaneW;
import org.geogebra.web.html5.euclidian.EuclidianPanelWAbstract;
import org.geogebra.web.html5.main.AppW;
import org.geogebra.web.web.gui.layout.panels.EuclidianDockPanelWAbstract;
import com.google.gwt.canvas.client.Canvas;
import com.google.gwt.dom.client.Style;
import com.google.gwt.resources.client.ResourcePrototype;
import com.google.gwt.user.client.ui.Widget;
/**
* Dock panel for view for plane
*
*/
public class EuclidianDockPanelForPlaneW extends EuclidianDockPanelWAbstract
implements EuclidianPanelWAbstract {
/**
* default width of this panel
*/
public static final int DEFAULT_WIDTH = 480;
private EuclidianViewForPlaneW view;
/** pcontent panel */
EuclidianPanel euclidianpanel;
/** static foreground */
Canvas eview1 = null;
/**
* constructor
*
* @param app
* application
* @param viewId
* view ID
*
*/
public EuclidianDockPanelForPlaneW(App app, int viewId) {
super(viewId, // view id
"GraphicsViewForPlaneA", // view title
ToolBar.getAllToolsNoMacrosForPlane(), // toolbar string
true, // style bar?
-1, // menu order
'p');
this.app = (AppW) app;
this.setOpenInFrame(true);
this.setEmbeddedSize(DEFAULT_WIDTH);
// this.app = app;
}
@Override
public boolean canCustomizeToolbar() {
return false;
}
/**
* set the view attached
*
* @param view
* euclidian view
*/
public void setView(EuclidianViewForPlaneW view) {
this.view = view;
view.getCompanion().setDockPanel(this);
}
@Override
public Widget loadComponent() {
if (app.has(Feature.DYNAMIC_STYLEBAR)) {
setViewImage(getResources().settings());
} else {
setViewImage(getResources().styleBar_graphics_extra());
}
if (euclidianpanel == null) {
euclidianpanel = new EuclidianPanel(this);
eview1 = Canvas.createIfSupported();
eview1.getElement().getStyle().setPosition(Style.Position.RELATIVE);
eview1.getElement().getStyle().setZIndex(0);
euclidianpanel.getAbsolutePanel().add(eview1);
}
return euclidianpanel;
}
@Override
protected Widget loadStyleBar() {
return (Widget) view.getStyleBar();
}
/**
*
* @return view attached in this panel
*/
public EuclidianViewForPlaneW getView() {
return view;
}
@Override
public Canvas getCanvas() {
return eview1;
}
@Override
public EuclidianPanel getEuclidianPanel() {
return euclidianpanel;
}
@Override
public EuclidianView getEuclidianView() {
return view;
}
@Override
public DockPanelData createInfo() {
return new DockPanelData(id, getToolbarString(), visible,
openInFrame, showStyleBar, new Rectangle(frameBounds),
embeddedDef, embeddedSize, view.getFromPlaneString());
}
@Override
public ResourcePrototype getIcon() {
return getResources().menu_icon_graphics_extra();
}
@Override
public boolean hasPlane() {
return true;
}
@Override
public void calculateEnvironment() {
view.getEuclidianController().calculateEnvironment();
}
@Override
public void resizeView(int width, int height) {
final EuclidianSettings settings = app.getSettings()
.getEuclidianForPlane(
((GeoElement) view.getCompanion().getPlane())
.getLabelSimple());
settings.setPreferredSize(
AwtFactory.getPrototype()
.newDimension(width, height));
view.synCanvasSize();
view.doRepaint2();
app.stopCollectingRepaints();
}
}