/* * Copyright 2011 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jbpm.formapi.common.panels; import com.allen_sauer.gwt.dnd.client.HasDragHandle; import com.google.gwt.user.client.ui.AbsolutePanel; import com.google.gwt.user.client.ui.FocusPanel; import com.google.gwt.user.client.ui.Widget; public class MovablePanel extends AbsolutePanel implements HasDragHandle { private FocusPanel shim = new FocusPanel(); private final Widget mainWidget; private final Widget oldContainer; public MovablePanel(Widget widget, Widget oldContainer) { super(); this.mainWidget = widget; this.oldContainer = oldContainer; setPixelSize(this.mainWidget.getOffsetWidth(), this.mainWidget.getOffsetHeight()); add(this.mainWidget, 0, 0); } public Widget getMainWidget() { return mainWidget; } public Widget getOldContainer() { return oldContainer; } @Override public Widget getDragHandle() { return shim; } /** * Let shim size match our size. * * @param width the desired pixel width * @param height the desired pixel height */ @Override public void setPixelSize(int width, int height) { super.setPixelSize(width, height); shim.setPixelSize(width, height); } /** * Let shim size match our size. * * @param width the desired CSS width * @param height the desired CSS height */ @Override public void setSize(String width, String height) { super.setSize(width, height); shim.setSize(width, height); } /** * Adjust the shim size and attach once our widget dimensions are known. */ @Override protected void onLoad() { super.onLoad(); shim.setPixelSize(getOffsetWidth(), getOffsetHeight()); add(shim, 0, 0); } /** * Remove the shim to allow the widget to size itself when reattached. */ @Override protected void onUnload() { super.onUnload(); shim.removeFromParent(); } }