Java tutorial
package org.senchalabs.gwt.gwtdriver.gxt.models.client; /* * #%L * Sencha GXT classes for gwt-driver * %% * Copyright (C) 2012 - 2013 Sencha Labs * %% * 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. * #L% */ import com.google.gwt.core.client.EntryPoint; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootPanel; import com.sencha.gxt.core.client.ToStringValueProvider; import com.sencha.gxt.data.shared.LabelProvider; import com.sencha.gxt.data.shared.ListStore; import com.sencha.gxt.data.shared.ModelKeyProvider; import com.sencha.gxt.data.shared.TreeStore; import com.sencha.gxt.dnd.core.client.DND.Feedback; import com.sencha.gxt.dnd.core.client.DND.Operation; import com.sencha.gxt.dnd.core.client.TreeDragSource; import com.sencha.gxt.dnd.core.client.TreeDropTarget; import com.sencha.gxt.theme.blue.client.tabs.BluePlainTabPanelBottomAppearance; import com.sencha.gxt.theme.gray.client.tabs.GrayPlainTabPanelBottomAppearance; import com.sencha.gxt.widget.core.client.ContentPanel; import com.sencha.gxt.widget.core.client.PlainTabPanel; import com.sencha.gxt.widget.core.client.TabItemConfig; import com.sencha.gxt.widget.core.client.TabPanel; import com.sencha.gxt.widget.core.client.Window; import com.sencha.gxt.widget.core.client.button.TextButton; import com.sencha.gxt.widget.core.client.event.SelectEvent; import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; import com.sencha.gxt.widget.core.client.form.ComboBox; import com.sencha.gxt.widget.core.client.form.FieldLabel; import com.sencha.gxt.widget.core.client.form.FieldSet; import com.sencha.gxt.widget.core.client.info.DefaultInfoConfig; import com.sencha.gxt.widget.core.client.info.Info; import com.sencha.gxt.widget.core.client.menu.Menu; import com.sencha.gxt.widget.core.client.menu.MenuBar; import com.sencha.gxt.widget.core.client.menu.MenuBarItem; import com.sencha.gxt.widget.core.client.menu.MenuItem; import com.sencha.gxt.widget.core.client.tree.Tree; /** * */ public class App implements EntryPoint { public void onModuleLoad() { start(com.google.gwt.user.client.Window.Location.getQueryString().substring(1)); } public native void start(String key) /*-{ switch (key) { case "window": this.@org.senchalabs.gwt.gwtdriver.gxt.models.client.App::window()(); break; case "menubar": this.@org.senchalabs.gwt.gwtdriver.gxt.models.client.App::menubar()(); break; case "tree": this.@org.senchalabs.gwt.gwtdriver.gxt.models.client.App::tree()(); break; case "tabPanel": this.@org.senchalabs.gwt.gwtdriver.gxt.models.client.App::tabPanel()(); break; case "combo": this.@org.senchalabs.gwt.gwtdriver.gxt.models.client.App::combo()(); break; case "info": this.@org.senchalabs.gwt.gwtdriver.gxt.models.client.App::info()(); break; case "treednd": this.@org.senchalabs.gwt.gwtdriver.gxt.models.client.App::treednd()(); break; case "fieldset": this.@org.senchalabs.gwt.gwtdriver.gxt.models.client.App::fieldset()(); break; case "panel": this.@org.senchalabs.gwt.gwtdriver.gxt.models.client.App::panel()(); break; default: this.@org.senchalabs.gwt.gwtdriver.gxt.models.client.App::error(Ljava/lang/String;)(key); } }-*/; private void error(String key) { com.google.gwt.user.client.Window.alert("Could not parse key " + key); } private void window() { Window a = new Window(); a.setHeadingText("Test Window A"); a.setTitleCollapse(true); a.setCollapsible(true); a.setWidget(new Label("Contents")); Window b = new Window(); b.setHeadingText("Another Test Window"); b.setTitleCollapse(false); b.setCollapsible(true); b.setWidget(new Label("Contents")); Window c = new Window(); c.setHeadingText("Bottom Window for Testing"); c.setCollapsible(false); c.setWidget(new Label("Contents")); //open in reverse so A is above B is above C c.show(); c.setPagePosition(0, 0); c.setPixelSize(200, 200); b.show(); b.setPagePosition(0, 150); b.setPixelSize(200, 200); a.show(); a.setPagePosition(150, 0); a.setPixelSize(200, 200); } private void menubar() { MenuBar menuBar = new MenuBar(); MenuBarItem file = new MenuBarItem("File"); file.setMenu(new Menu()); MenuItem newItem = new MenuItem("New"); newItem.setSubMenu(new Menu()); newItem.getSubMenu().add(new MenuItem("Project")); newItem.getSubMenu().add(new MenuItem("Object")); newItem.getSubMenu().add(new MenuItem("Database")); file.getMenu().add(newItem); MenuItem open = new MenuItem("Open..."); file.getMenu().add(open); menuBar.add(file); MenuBarItem edit = new MenuBarItem("Edit"); edit.setMenu(new Menu()); edit.getMenu().add(new MenuItem("Copy")); edit.getMenu().add(new MenuItem("Paste")); MenuItem find = new MenuItem("Find"); find.setSubMenu(new Menu()); find.getSubMenu().add(new MenuItem("Find In Project")); find.getSubMenu().add(new MenuItem("Find In File")); edit.getMenu().add(find); menuBar.add(edit); RootPanel.get().add(menuBar); menuBar.setWidth(500); } private void tree() { TreeStore<String> store = new TreeStore<String>(new ModelKeyProvider<String>() { @Override public String getKey(String item) { return item; } }); store.add("root"); store.add("root", "foo"); store.add("foo", "bar"); store.add("root", "baz"); store.add("other root"); Tree<String, String> tree = new Tree<String, String>(store, new ToStringValueProvider<String>()); tree.setPixelSize(1000, 1000); RootPanel.get().add(tree); } private void tabPanel() { //testing several panel setups to be sure that different structure doesn't affect the finder TabPanel panel1 = new TabPanel(); appendTabPanel(panel1, "First"); TabPanel panel2 = new PlainTabPanel(); appendTabPanel(panel2, "Second"); TabPanel panel3 = new TabPanel(new BluePlainTabPanelBottomAppearance()); appendTabPanel(panel3, "Third"); TabPanel panel4 = new PlainTabPanel(new GrayPlainTabPanelBottomAppearance()); appendTabPanel(panel4, "Fourth"); } private void appendTabPanel(TabPanel panel, String text) { panel.setCloseContextMenu(true); SelectHandler error = new SelectHandler() { @Override public void onSelect(SelectEvent event) { com.google.gwt.user.client.Window.alert("Button was clicked, shouldn't have been"); } }; panel.add(new TextButton(text, error), new TabItemConfig(text + " plain", true)); TabItemConfig config1 = new TabItemConfig(); config1.setClosable(true); // Bug in GXT 3.0.1 //config1.setHTML(new SafeHtmlBuilder().appendHtmlConstant("<b>").appendEscaped(text + " bold").appendHtmlConstant("</b>").toSafeHtml()); config1.setHTML(SafeHtmlUtils.fromString(text + " bold")); panel.add(new TextButton("bold", error), config1); TabItemConfig config2 = new TabItemConfig(); config2.setClosable(true); // config2.setHTML(new SafeHtmlBuilder().appendHtmlConstant("<i><span><span>").appendEscaped(text + " italic").appendHtmlConstant("</span></span></i>").toSafeHtml()); config2.setHTML(SafeHtmlUtils.fromString(text + " italic")); panel.add(new TextButton("italic", error), config2); panel.setPixelSize(400, 200); RootPanel.get().add(panel); } private void combo() { ComboBox<String> c = new ComboBox<String>(new ListStore<String>(new ModelKeyProvider<String>() { @Override public String getKey(String item) { return item; } }), new LabelProvider<String>() { @Override public String getLabel(String item) { return item; } }); c.getStore().add("One"); c.getStore().add("Two"); c.getStore().add("Three"); c.getStore().add("Four"); RootPanel.get().add(new FieldLabel(c, "ComboBox")); } private void info() { Info.display(makeConfig("Initial message", "First!")); new Timer() { int count = 1; @Override public void run() { if (count == 6) { return; } Info.display(makeConfig("Message #" + count, "test" + count)); count++; schedule(100); } }.schedule(100); } private DefaultInfoConfig makeConfig(String title, String message) { DefaultInfoConfig config = new DefaultInfoConfig(title, message); config.setDisplay(10000); return config; } private void treednd() { TreeStore<String> store = new TreeStore<String>(new ModelKeyProvider<String>() { @Override public String getKey(String item) { return item; } }); store.add("root"); store.add("root", "foo"); store.add("foo", "bar"); store.add("root", "baz"); store.add("other root"); Tree<String, String> tree = new Tree<String, String>(store, new ToStringValueProvider<String>()); tree.setPixelSize(1000, 1000); TreeDragSource<String> source = new TreeDragSource<String>(tree); TreeDropTarget<String> target = new TreeDropTarget<String>(tree); target.setAllowSelfAsSource(true); target.setFeedback(Feedback.BOTH); target.setOperation(Operation.MOVE); RootPanel.get().add(tree); } private void fieldset() { FieldSet fieldset1 = new FieldSet(); fieldset1.setHeadingText("a boring heading"); fieldset1.setWidget(new Label("reused text")); FieldSet fieldset2 = new FieldSet(); fieldset2.setHeadingText("reused heading"); RootPanel.get().add(fieldset1); RootPanel.get().add(fieldset2); } private void panel() { ContentPanel panel1 = new ContentPanel(); panel1.setHeadingText("a boring heading"); panel1.setWidget(new Label("reused text")); ContentPanel panel2 = new ContentPanel(); panel2.setHeadingText("reused heading"); RootPanel.get().add(panel1); RootPanel.get().add(panel2); } }