Package com.gwtmobile.ui.client.widgets

Source Code of com.gwtmobile.ui.client.widgets.HeaderPanel

/*
* Copyright (c) 2010 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.gwtmobile.ui.client.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.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
import com.gwtmobile.ui.client.CSS.StyleNames.Primary;

public class HeaderPanel extends PanelBase {

  ClickHandler _leftButtonClickHandler;
  ClickHandler _rightButtonClickHandler;

    public HeaderPanel() {
      super.add(new SimplePanel())//left button placeholder
      super.add(new FlowPanel());    //contents
      super.add(new SimplePanel())//right button placeholder
        setStyleName(Primary.HeaderPanel);
        if (Beans.isDesignTime()) {
            add(new Label("Empty HeaderPanel. " + getDesignTimeMessage()));
        }
    }

    @Override
    protected String getDesignTimeMessage() {
      return "Set caption and left/right button properties.";
    }

    @Override
    public void add(Widget w) {
      FlowPanel contents = (FlowPanel)getWidget(1);
      if (Beans.isDesignTime() && contents.getWidgetCount() > 0) {
        Widget widget = contents.getWidget(0);
        if (widget instanceof Label && ((Label)widget).getText().contains(getDesignTimeMessage())) {
          contents.clear();
        }
      }
      contents.add(w);
    }

    public void setCaption(String caption) {
      if (!caption.isEmpty()) {
          FlowPanel contents = (FlowPanel)getWidget(1);
          contents.clear();
        contents.add(new HTML(caption));
      }
    }

    public String getCaption() {
      FlowPanel contents = (FlowPanel)getWidget(1);
      if (contents.getWidgetCount() > 0) {
          HTML w = (HTML) contents.getWidget(0);
          return w.getHTML();
      }
      return "";
    }

    public void setLeftButton(String buttonName) {
      if (!buttonName.isEmpty()) {
          SimplePanel leftButton = (SimplePanel)getWidget(0);
          ClickHandler clickHandler = new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            onLeftButtonClick(event);
          }
        };
          if (buttonName.toUpperCase().equals("BACK")) {
            leftButton.setWidget(new BackButton(buttonName, clickHandler));
          }
          else {
            leftButton.setWidget(new Button(buttonName, clickHandler));
          }
      }
    }

    /**
     * Sets the back button.
     *
     * Frank Mena: This is needed because the method setLeftButton() method
     * only allows setting the text "BACK" to create a left arrow button.
     * If you want to add a back button with the text "Cancel", the method
     * above will not allow it.
     *
     * @param buttonName the new back button
     */
    public void setBackButton(String buttonName) {
      if (!buttonName.isEmpty()) {
        SimplePanel leftButton = (SimplePanel)getWidget(0);
        ClickHandler clickHandler = new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            onLeftButtonClick(event);
          }
        };
      leftButton.setWidget(new BackButton(buttonName, clickHandler));
      }
    }

    public void setRightButton(String buttonName) {
      if (!buttonName.isEmpty()) {
          SimplePanel rightButton = (SimplePanel)getWidget(2);
          ClickHandler clickHandler = new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            onRightButtonClick(event);
          }
        };
          if (buttonName.toUpperCase().equals("NEXT")) {
            rightButton.setWidget(new NextButton(buttonName, clickHandler));
          }
          else {
            rightButton.setWidget(new Button(buttonName, clickHandler));
          }
      }
    }

    public Button getLeftButton() {
      SimplePanel leftButton = (SimplePanel)getWidget(0);
      return (Button) leftButton.getWidget();
    }

    public Button getRightButton() {
      SimplePanel rightButton = (SimplePanel)getWidget(2);
      return (Button) rightButton.getWidget();
    }

    void onLeftButtonClick(ClickEvent event) {
      if (_leftButtonClickHandler != null) {
          _leftButtonClickHandler.onClick(event);
      }
      else {
        Button leftButton = getLeftButton();
        if (leftButton != null && leftButton.getClass() == BackButton.class) {
          ((BackButton)leftButton).onClick(event);
        }
      }
    }

    void onRightButtonClick(ClickEvent event) {
      if (_rightButtonClickHandler != null) {
          _rightButtonClickHandler.onClick(event);
      }
    }

    public void setLeftButtonClickHandler(ClickHandler handler) {
      _leftButtonClickHandler = handler;
    }

    public void setRightButtonClickHandler(ClickHandler handler) {
      _rightButtonClickHandler = handler;
    }

}
TOP

Related Classes of com.gwtmobile.ui.client.widgets.HeaderPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.