/*
* Ext GWT - Ext for GWT
* Copyright(c) 2007-2009, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.samples.client;
import java.util.Map;
import com.extjs.gxt.samples.client.examples.model.Category;
import com.extjs.gxt.samples.client.examples.model.Entry;
import com.extjs.gxt.themes.client.Slate;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.core.FastMap;
import com.extjs.gxt.ui.client.core.XDOM;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.util.ThemeManager;
import com.extjs.gxt.ui.client.widget.HtmlContainer;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.custom.ThemeSelector;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.RootPanel;
public class Examples implements EntryPoint {
public static boolean isExplorer() {
String test = Window.Location.getPath();
if (test.indexOf("pages") != -1) {
return false;
}
return true;
}
public static final String SERVICE = "service";
public static final String FILE_SERVICE = "fileservice";
public static final String MODEL = "model";
private Viewport viewport;
public void onModuleLoad() {
String name = GWT.getModuleName();
if (!"com.extjs.gxt.samples.Examples".equals(name)) {
return;
}
ExampleServiceAsync service = (ExampleServiceAsync) GWT.create(ExampleService.class);
ServiceDefTarget endpoint = (ServiceDefTarget) service;
String moduleRelativeURL = SERVICE;
endpoint.setServiceEntryPoint(moduleRelativeURL);
Registry.register(SERVICE, service);
FileServiceAsync fileservice = (FileServiceAsync) GWT.create(FileService.class);
endpoint = (ServiceDefTarget) fileservice;
moduleRelativeURL = FILE_SERVICE;
endpoint.setServiceEntryPoint(moduleRelativeURL);
Registry.register(FILE_SERVICE, fileservice);
Map<String, Entry> examples = new FastMap<Entry>();
ExamplesModel model = new ExamplesModel();
for (int i = 0; i < model.getChildren().size(); i++) {
Category cat = (Category) model.getChildren().get(i);
for (int j = 0; j < cat.getChildren().size(); j++) {
Entry entry = (Entry) cat.getChildren().get(j);
examples.put(entry.getId(), entry);
}
}
Registry.register(MODEL, model);
String id = Window.Location.getParameter("id");
if (id == null) {
id = XDOM.getBody().getId();
}
Entry entry = examples.get(id);
if (entry == null) {
return;
}
viewport = new Viewport();
viewport.setLayout(new BorderLayout());
createNorth();
TabPanel panel = new TabPanel();
panel.setResizeTabs(true);
TabItem example = new TabItem("Example");
example.setScrollMode(Scroll.AUTO);
if (entry.isFill()) {
example.setLayout(new FitLayout());
example.setScrollMode(Scroll.NONE);
}
TabItem source = new TabItem("View Source");
source.setUrl(entry.getSourceUrl());
panel.add(example);
panel.add(source);
ToolBar toolBar = new ToolBar();
Button item = new Button("View Source");
toolBar.add(new FillToolItem());
toolBar.add(item);
example.add(entry.getExample());
viewport.add(panel, new BorderLayoutData(LayoutRegion.CENTER));
RootPanel.get().add(viewport);
}
private void createNorth() {
StringBuffer sb = new StringBuffer();
sb.append("<div id='demo-header' class='x-small-editor'><div id='demo-theme'></div><div id=demo-title>Ext GWT Examples</div></div>");
HtmlContainer northPanel = new HtmlContainer(sb.toString());
northPanel.setStateful(false);
ThemeManager.register(Slate.SLATE);
ThemeSelector selector = new ThemeSelector();
selector.setWidth(125);
northPanel.add(selector, "#demo-theme");
BorderLayoutData data = new BorderLayoutData(LayoutRegion.NORTH, 33);
data.setMargins(new Margins());
viewport.add(northPanel, data);
}
}