/* * PanelWithToolbars.java * * Copyright (C) 2009-12 by RStudio, Inc. * * Unless you have received this program directly from RStudio pursuant * to the terms of a commercial license agreement with RStudio, then * this program is licensed to you under the terms of version 3 of the * GNU Affero General Public License. This program is distributed WITHOUT * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. * */ package org.rstudio.studio.client.workbench.views.source; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.ui.DockLayoutPanel; import com.google.gwt.user.client.ui.ResizeComposite; import com.google.gwt.user.client.ui.Widget; import org.rstudio.core.client.widget.Toolbar; import org.rstudio.core.client.widget.IsWidgetWithHeight; public class PanelWithToolbars extends ResizeComposite { public PanelWithToolbars(Toolbar toolbar, Widget mainWidget) { this(toolbar, mainWidget, null); } public PanelWithToolbars(Toolbar toolbar, Widget mainWidget, IsWidgetWithHeight statusBar) { this(toolbar, null, mainWidget, statusBar); } public PanelWithToolbars(Toolbar toolbar, Toolbar secondaryToolbar, Widget mainWidget, IsWidgetWithHeight statusBar) { mainWidget_ = mainWidget; panel_ = new DockLayoutPanel(Unit.PX); panel_.addNorth(toolbar, toolbar.getHeight()); if (secondaryToolbar != null) panel_.addNorth(secondaryToolbar, secondaryToolbar.getHeight()); if (statusBar != null) panel_.addSouth(statusBar.asWidget(), statusBar.getHeight()); panel_.add(mainWidget_); initWidget(panel_); } public void insertNorth(Widget widget, double size, Widget before) { if (before == null) before = mainWidget_; panel_.insertNorth(widget, size, before); panel_.forceLayout(); } public void remove(Widget widget) { panel_.remove(widget); panel_.forceLayout(); } private DockLayoutPanel panel_; private Widget mainWidget_; }