org.rstudio.studio.client.workbench.ui.DelayLoadTabShim.java Source code

Java tutorial

Introduction

Here is the source code for org.rstudio.studio.client.workbench.ui.DelayLoadTabShim.java

Source

/*
 * DelayLoadTabShim.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.ui;

import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
import org.rstudio.core.client.AsyncShim;
import org.rstudio.core.client.events.*;

public abstract class DelayLoadTabShim<T extends IsWidget, TParentTab extends DelayLoadWorkbenchTab<T>>
        extends AsyncShim<T> {

    protected final TParentTab getParentTab() {
        return parentTab_;
    }

    @SuppressWarnings("unchecked")
    public void setParentTab(DelayLoadWorkbenchTab<T> parentTab) {
        parentTab_ = (TParentTab) parentTab;
    }

    @Override
    protected void onDelayLoadSuccess(T obj) {
        super.onDelayLoadSuccess(obj);
        final Widget child = obj.asWidget();

        if (child instanceof HasEnsureVisibleHandlers) {
            ((HasEnsureVisibleHandlers) child).addEnsureVisibleHandler(new EnsureVisibleHandler() {
                public void onEnsureVisible(EnsureVisibleEvent event) {
                    parentTab_.ensureVisible(event.getActivate());
                }
            });
        }

        if (child instanceof HasEnsureHeightHandlers) {
            ((HasEnsureHeightHandlers) child).addEnsureHeightHandler(new EnsureHeightHandler() {
                @Override
                public void onEnsureHeight(EnsureHeightEvent event) {
                    parentTab_.ensureHeight(event.getHeight());
                }
            });
        }

        if (child instanceof HasEnsureHiddenHandlers) {
            ((HasEnsureHiddenHandlers) child).addEnsureHiddenHandler(new EnsureHiddenHandler() {
                public void onEnsureHidden(EnsureHiddenEvent event) {
                    parentTab_.ensureHidden();
                }
            });
        }

        child.setSize("100%", "100%");
        parentTab_.getPanel().add(child);
    }

    public abstract void onBeforeUnselected();

    public abstract void onBeforeSelected();

    public abstract void onSelected();

    private TParentTab parentTab_;
}