com.gwtm.ui.client.core.widgets.PanelBase.java Source code

Java tutorial

Introduction

Here is the source code for com.gwtm.ui.client.core.widgets.PanelBase.java

Source

/*
 * Copyright (c) 2011 Zhihua (Dennis) Jiang
 * 
 * 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 com.gwtm.ui.client.core.widgets;

import java.beans.Beans;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Widget;
import com.gwtm.ui.client.core.InputController;
import com.gwtm.ui.client.core.Utils;
import com.gwtm.ui.client.events.DraggingHandler;
import com.gwtm.ui.client.events.SwipeHandler;
import com.gwtm.ui.client.widgets.ScrollPanel;

public class PanelBase extends com.google.gwt.user.client.ui.FlowPanel {

    private String uuid = null;
    private DraggingHandler draggingHandler = null;
    private ClickHandler clickHandler = null;
    private ResizeHandler resizeHandler = null;
    private SwipeHandler swipeHandler = null;

    public PanelBase() {
        uuid = Utils.UUID.uuid(8, 16);
        // this panel needs to be handled differently !! 
        // for scrollpanel, the designtime message cannot be added in this super class
        // it will be handled by its own class
        if (Beans.isDesignTime() && !(this instanceof ScrollPanel)) {
            super.add(new DesignTimePanel(this));
        }
    }

    public String getUUID() {
        return uuid;
    }

    @Override
    public void add(Widget w) {
        if (Beans.isDesignTime()) {
            if (getWidgetCount() == 1 && getWidget(0) instanceof DesignTimePanel) {
                DesignTimePanel designTimePanel = (DesignTimePanel) getWidget(0);
                if (!designTimePanel.hasError()) {
                    super.clear();
                }
            }
        }
        super.add(w);
    }

    public void addDesignTimeMessage(String message) {
        if (Beans.isDesignTime()) {
            if (getWidgetCount() == 1 && getWidget(0) instanceof DesignTimePanel) {
                DesignTimePanel designTimePanel = (DesignTimePanel) getWidget(0);
                designTimePanel.addMessage(message);
            }
        }
    }

    public void addDesignTimeError(String error) {
        if (Beans.isDesignTime()) {
            if (getWidgetCount() == 1 && getWidget(0) instanceof DesignTimePanel) {
                DesignTimePanel designTimePanel = (DesignTimePanel) getWidget(0);
                designTimePanel.addErrorMessage(error);
            }
        }
    }

    public void addDraggingHandler(DraggingHandler draggingHandler) {
        this.draggingHandler = draggingHandler;
    }

    public void removeDraggingHandler() {
        this.draggingHandler = null;
    }

    public void addSwipeHandler(SwipeHandler swipeHandler) {
        this.swipeHandler = swipeHandler;
    }

    public void removeSwipeHandler() {
        this.swipeHandler = null;
    }

    public void addClickTapHandler(ClickHandler clickHandler) {
        this.clickHandler = clickHandler;
    }

    public void removeClickTapHandler() {
        this.clickHandler = null;
    }

    public void addResizeHandler(ResizeHandler resizeHandler) {
        this.resizeHandler = resizeHandler;
    }

    public void removeResizeHandler() {
        this.resizeHandler = null;
    }

    @Override
    protected void onLoad() {
        super.onLoad();

        if (draggingHandler != null)
            InputController.get().addDraggingHandler(draggingHandler);
        if (swipeHandler != null)
            InputController.get().addSwipeHandler(swipeHandler);
        if (clickHandler != null)
            InputController.get().registerHandler(uuid + clickHandler.getClass().getName(),
                    addDomHandler(clickHandler, ClickEvent.getType()));
        if (resizeHandler != null)
            InputController.get().registerHandler(uuid + resizeHandler.getClass().getName(),
                    Window.addResizeHandler(resizeHandler));
    }

    @Override
    protected void onUnload() {
        if (draggingHandler != null) {
            InputController.get().removeDraggingHandler(draggingHandler);
        }
        if (swipeHandler != null) {
            InputController.get().removeSwipeHandler(swipeHandler);
        }
        if (clickHandler != null) {
            InputController.get().unregisterHandler(uuid + clickHandler.getClass().getName());
        }
        if (resizeHandler != null) {
            InputController.get().unregisterHandler(uuid + resizeHandler.getClass().getName());
        }
        super.onUnload();
    }

}