package org.geogebra.web.web.gui.layout.panels; import org.geogebra.web.web.gui.layout.DockPanelW; import org.geogebra.web.web.gui.view.consprotocol.ConstructionProtocolNavigationW; import com.google.gwt.dom.client.Style.Overflow; import com.google.gwt.resources.client.ResourcePrototype; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.Widget; public abstract class NavigableDockPanelW extends DockPanelW { private ConstructionProtocolNavigationW consProtNav; private InnerPanel innerPanel; public NavigableDockPanelW(int id, String title, String toolbar, boolean hasStyleBar, int menuOrder, char menuShortcut) { super(id, title, toolbar, hasStyleBar, menuOrder, menuShortcut); } @Override public final void updateNavigationBar() { // ConstructionProtocolSettings cps = app.getSettings() // .getConstructionProtocol(); // ((ConstructionProtocolNavigationW) consProtNav).settingsChanged(cps); // cps.addListener((ConstructionProtocolNavigation)consProtNav); 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)); onResize(); } } @Override protected final Widget loadComponent() { setViewImage(getViewIcon()); innerPanel = new InnerPanel(this, getViewPanel()); addNavigationBar(); return innerPanel; } protected abstract ResourcePrototype getViewIcon(); protected abstract Panel getViewPanel(); @Override public int navHeight() { if (this.consProtNav != null && this.consProtNav.getImpl().getOffsetHeight() != 0) { return this.consProtNav.getImpl().getOffsetHeight(); } return 30; } public final void addNavigationBar() { consProtNav = (ConstructionProtocolNavigationW) (app.getGuiManager() .getConstructionProtocolNavigation(id)); consProtNav.getImpl().addStyleName("consProtNav"); if (innerPanel == null) { loadComponent(); } innerPanel.add(consProtNav.getImpl()); // may be invisible, but // made // visible later updateNavigationBar(); } @Override protected void initWidget(Widget widget) { if (widget != null) { widget.getElement().getStyle().setOverflow(Overflow.HIDDEN); } super.initWidget(widget); } }