/*
* 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.util.Iterator;
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.HasWidgets;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
public class HeaderPanel extends WidgetBase implements HasWidgets {
ClickHandler _leftButtonClickHandler;
ClickHandler _rightButtonClickHandler;
public HeaderPanel() {
FlowPanel container = new FlowPanel();
container.add(new SimplePanel()); //left button placeholder
container.add(new FlowPanel()); //contents
container.add(new SimplePanel()); //right button placeholder
initWidget(container);
setStyleName("HeaderPanel");
}
@Override
public void add(Widget w) {
FlowPanel contents = ((FlowPanel)((FlowPanel)getWidget()).getWidget(1));
contents.add(w);
}
public void setCaption(String caption) {
FlowPanel contents = ((FlowPanel)((FlowPanel)getWidget()).getWidget(1));
contents.clear();
contents.add(new HTML(caption));
}
public String getCaption() {
FlowPanel contents = ((FlowPanel)((FlowPanel)getWidget()).getWidget(1));
if (contents.getWidgetCount() > 0) {
HTML w = (HTML) contents.getWidget(0);
return w.getHTML();
}
return "";
}
public void setLeftButton(String buttonName) {
SimplePanel leftButton = ((SimplePanel)((FlowPanel)getWidget()).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));
}
}
public void setRightButton(String buttonName) {
SimplePanel rightButton = ((SimplePanel)((FlowPanel)getWidget()).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)((FlowPanel)getWidget()).getWidget(0));
return (Button) leftButton.getWidget();
}
public Button getRightButton() {
SimplePanel rightButton = ((SimplePanel)((FlowPanel)getWidget()).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;
}
@Override
public void clear() {
// TODO Auto-generated method stub
}
@Override
public Iterator<Widget> iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean remove(Widget w) {
// TODO Auto-generated method stub
return false;
}
}