/*
* Copyright 2007 Google 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 com.google.gwt.gen2.demo.collapsiblepanel.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.gen2.complexpanel.client.CollapsiblePanel;
import com.google.gwt.gen2.complexpanel.client.FastTree;
import com.google.gwt.gen2.complexpanel.client.FastTreeItem;
import com.google.gwt.gen2.complexpanel.client.CollapsiblePanel.CollapsedStateEvent;
import com.google.gwt.gen2.complexpanel.client.CollapsiblePanel.CollapsedStateHandler;
import com.google.gwt.gen2.complexpanel.client.CollapsiblePanel.ExpandedStateEvent;
import com.google.gwt.gen2.complexpanel.client.CollapsiblePanel.ExpandedStateHandler;
import com.google.gwt.gen2.logging.shared.Log;
import com.google.gwt.i18n.client.LocaleInfo;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.Window.Location;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.ToggleButton;
/**
* {@link CollapsiblePanel} demo.
*/
public class CollapsiblePanelDemo implements EntryPoint {
private ToggleButton controlButton;
/**
* This is the entry point method.
*/
public void onModuleLoad() {
try {
// Some random contents to make the tree interesting.
Panel contents = createSchoolNavBar();
FastTree.injectDefaultCss();
CollapsiblePanel.injectDefaultCss();
// The panel.
final CollapsiblePanel panel = new CollapsiblePanel();
panel.addCollapsedStateHandler(new CollapsedStateHandler() {
public void onCollapsedState(CollapsedStateEvent e) {
Window.alert("panel collapsed");
}
});
panel.addExpandedStateHandler(new ExpandedStateHandler() {
public void onExpandedState(ExpandedStateEvent e) {
Window.alert("panel expanded");
}
});
String value = Location.getParameter("collapsed");
if (value != null) {
value = value.trim();
if (value.equals("true")) {
panel.setCollapsedState(true);
} else if (value.equals("false")) {
// do nothing, default.
} else {
Window.alert("collapsed should not be given " + value
+ " use true or false instead");
}
}
RootPanel.get("collapsible-panel").add(panel);
panel.add(contents);
panel.setHeight(Window.getClientHeight() - 1 + "px");
panel.hookupControlToggle(controlButton);
} catch (RuntimeException e) {
if (GWT.isScript()) {
Log.severe(e.getMessage());
}
throw e;
}
}
private Panel createSchoolNavBar() {
controlButton = new ToggleButton();
if (LocaleInfo.getCurrentLocale().isRTL()) {
controlButton.getUpFace().setHTML("<i>click to pin ← </i>");
controlButton.getDownFace().setHTML("<i> → click to collapse</i> ");
} else {
controlButton.getUpFace().setHTML("<i>click to pin →</i>");
controlButton.getDownFace().setHTML("<i>← click to collapse</i> ");
}
FlowPanel navBar = new FlowPanel();
navBar.setSize("200px", "");
navBar.add(controlButton);
controlButton.setStylePrimaryName("CollapsibleTitle");
final FastTree contents = new FastTree();
navBar.add(contents);
FastTreeItem students = contents.addItem("Students");
students.addItem("Jill");
students.addItem("Jack");
students.addItem("Molly");
students.addItem("Ms. Muffat");
FastTreeItem teachers = contents.addItem("Teachers");
teachers.addItem("Mrs Black");
teachers.addItem("Mr White");
FastTreeItem admin = contents.addItem("Administrators");
admin.addItem("The Soup Nazi");
admin.addItem("The Grand High Supreme Master Pubba");
return navBar;
}
}