]> source.dussan.org Git - vaadin-framework.git/commitdiff
#7178 moved Liferay theme test portlet to com.vaadin.tests.integration
authorHenri Sara <henri.sara@itmill.com>
Wed, 10 Aug 2011 14:58:13 +0000 (14:58 +0000)
committerHenri Sara <henri.sara@itmill.com>
Wed, 10 Aug 2011 14:58:13 +0000 (14:58 +0000)
svn changeset:20277/svn branch:6.7

WebContent/WEB-INF/portlet.xml
tests/src/com/vaadin/tests/integration/LiferayThemeDemo.java [new file with mode: 0644]

index 5d333da67ef683c60dc6a78a5578d15a13d0a662..18f7a1049087abe6981e244f2b5f35b4d5f442e7 100644 (file)
@@ -86,7 +86,7 @@
         <portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet2</portlet-class>
         <init-param>
             <name>application</name>
-            <value>com.vaadin.demo.themes.LiferayThemeDemo</value>
+            <value>com.vaadin.tests.integration.LiferayThemeDemo</value>
         </init-param>
         
         <supports>
diff --git a/tests/src/com/vaadin/tests/integration/LiferayThemeDemo.java b/tests/src/com/vaadin/tests/integration/LiferayThemeDemo.java
new file mode 100644 (file)
index 0000000..4267a7e
--- /dev/null
@@ -0,0 +1,721 @@
+package com.vaadin.tests.integration;
+
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Locale;
+
+import com.vaadin.Application;
+import com.vaadin.event.Action;
+import com.vaadin.terminal.ExternalResource;
+import com.vaadin.terminal.Resource;
+import com.vaadin.terminal.ThemeResource;
+import com.vaadin.ui.AbstractSelect;
+import com.vaadin.ui.Accordion;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.DateField;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.HorizontalSplitPanel;
+import com.vaadin.ui.InlineDateField;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Layout;
+import com.vaadin.ui.ListSelect;
+import com.vaadin.ui.MenuBar;
+import com.vaadin.ui.MenuBar.Command;
+import com.vaadin.ui.MenuBar.MenuItem;
+import com.vaadin.ui.NativeButton;
+import com.vaadin.ui.NativeSelect;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.PopupView;
+import com.vaadin.ui.Slider;
+import com.vaadin.ui.Slider.ValueOutOfBoundsException;
+import com.vaadin.ui.TabSheet;
+import com.vaadin.ui.TabSheet.SelectedTabChangeEvent;
+import com.vaadin.ui.TabSheet.Tab;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.Tree;
+import com.vaadin.ui.TwinColSelect;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.VerticalSplitPanel;
+import com.vaadin.ui.Window;
+import com.vaadin.ui.Window.Notification;
+import com.vaadin.ui.themes.LiferayTheme;
+
+@SuppressWarnings("serial")
+public class LiferayThemeDemo extends Application {
+
+    @SuppressWarnings("deprecation")
+    private static final Date DATE = new Date(2009 - 1900, 6 - 1, 2);
+
+    private static final Resource ICON_GLOBE = new ThemeResource(
+            "../runo/icons/16/globe.png");
+    private static final Resource ICON_OK = new ThemeResource(
+            "../runo/icons/16/ok.png");
+
+    private Window main;
+    private VerticalLayout mainLayout;
+    private TabSheet tabs;
+
+    private Action.Handler handler = new Action.Handler() {
+
+        public void handleAction(Action action, Object sender, Object target) {
+            // NOP
+        }
+
+        public Action[] getActions(Object target, Object sender) {
+            return new Action[] {
+                    new Action("Open"),
+                    new Action("Delete", new ThemeResource(
+                            "../runo/icons/16/trash.png")) };
+        }
+    };
+
+    @Override
+    public void init() {
+        main = new Window("Vaadin Liferay Theme");
+        mainLayout = (VerticalLayout) main.getContent();
+        mainLayout.setMargin(false);
+        setMainWindow(main);
+
+        // setTheme("liferay");
+
+        buildMainView();
+    }
+
+    void buildMainView() {
+        mainLayout.setWidth("100%");
+        mainLayout.setHeight("400px");
+        mainLayout.addComponent(getTopMenu());
+
+        CssLayout margin = new CssLayout();
+        margin.setMargin(false, true, true, true);
+        margin.setSizeFull();
+        tabs = new TabSheet();
+        tabs.setSizeFull();
+        margin.addComponent(tabs);
+        mainLayout.addComponent(margin);
+        mainLayout.setExpandRatio(margin, 1);
+
+        tabs.addComponent(buildLabels());
+        tabs.addComponent(buildButtons());
+        tabs.addComponent(buildTextFields());
+        tabs.addComponent(buildSelects());
+        tabs.addComponent(buildDateFields());
+        tabs.addComponent(buildSliders());
+        tabs.addComponent(buildTabSheets());
+        tabs.addComponent(buildAccordions());
+        tabs.addComponent(buildPanels());
+        tabs.addComponent(buildTables());
+        tabs.addComponent(buildTrees());
+        tabs.addComponent(buildWindows());
+        tabs.addComponent(buildSplitPanels());
+        tabs.addComponent(buildNotifications());
+        tabs.addComponent(buildPopupViews());
+    }
+
+    Layout buildLabels() {
+        final GridLayout l = new GridLayout(2, 1);
+        l.setWidth("560px");
+        l.setSpacing(true);
+        l.setMargin(true);
+        l.setCaption("Labels");
+
+        l.addComponent(new Label("Normal Label", Label.CONTENT_XHTML));
+        l.addComponent(new Label(
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit."));
+        return l;
+    }
+
+    Layout buildButtons() {
+        GridLayout l = new GridLayout(3, 1);
+        l.setCaption("Buttons");
+        l.setMargin(true);
+        l.setSpacing(true);
+
+        Button b = new Button("Normal Button");
+        b.setDescription("This is a tooltip!");
+        l.addComponent(b);
+
+        b = new NativeButton("Native Button");
+        b.setDescription("<h2><img src=\"/html/VAADIN/themes/runo/icons/16/globe.png\"/>A richtext tooltip</h2>"
+                + "<ul>"
+                + "<li>HTML formatting</li><li>Images<br/>"
+                + "</li><li>etc...</li></ul>");
+        l.addComponent(b);
+
+        b = new CheckBox("Checkbox");
+        l.addComponent(b);
+
+        b = new Button("Disabled");
+        b.setEnabled(false);
+        l.addComponent(b);
+
+        b = new NativeButton("Disabled");
+        b.setEnabled(false);
+        l.addComponent(b);
+
+        b = new CheckBox("Disabled");
+        b.setEnabled(false);
+        l.addComponent(b);
+
+        b = new Button("OK");
+        b.setIcon(ICON_OK);
+        l.addComponent(b);
+
+        b = new NativeButton("OK");
+        b.setIcon(ICON_OK);
+        l.addComponent(b);
+
+        b = new CheckBox("OK");
+        b.setIcon(ICON_OK);
+        l.addComponent(b);
+
+        b = new Button("Link Button");
+        b.setStyleName(LiferayTheme.BUTTON_LINK);
+        l.addComponent(b);
+
+        b = new NativeButton("Link Button");
+        b.setStyleName(LiferayTheme.BUTTON_LINK);
+        l.addComponent(b);
+
+        l.newLine();
+
+        b = new Button("Link Button");
+        b.setIcon(ICON_OK);
+        b.setStyleName(LiferayTheme.BUTTON_LINK);
+        l.addComponent(b);
+
+        b = new NativeButton("Link Button");
+        b.setIcon(ICON_OK);
+        b.setStyleName(LiferayTheme.BUTTON_LINK);
+        l.addComponent(b);
+
+        return l;
+    }
+
+    Layout buildTextFields() {
+        GridLayout l = new GridLayout(2, 1);
+        l.setCaption("Text fields");
+        l.setMargin(true);
+        l.setSpacing(true);
+        l.setWidth("400px");
+        l.setColumnExpandRatio(0, 1);
+
+        l.addComponent(new Label("Normal TextField", Label.CONTENT_XHTML));
+        TextField tf = new TextField();
+        tf.setInputPrompt("Enter text");
+        l.addComponent(tf);
+
+        l.addComponent(new Label("Normal TextArea", Label.CONTENT_XHTML));
+
+        tf = new TextField();
+        tf.setHeight("5em");
+        tf.setInputPrompt("Enter text");
+        l.addComponent(tf);
+
+        return l;
+    }
+
+    Layout buildSelects() {
+        VerticalLayout l = new VerticalLayout();
+        l.setCaption("Selects");
+        l.setMargin(true);
+        l.setSpacing(true);
+
+        HorizontalLayout hl = new HorizontalLayout();
+        hl.setSpacing(true);
+        hl.setMargin(true, false, false, false);
+        l.addComponent(hl);
+
+        AbstractSelect cb = new ComboBox();
+        AbstractSelect nat = new NativeSelect();
+        AbstractSelect list = new ListSelect();
+        AbstractSelect twincol = new TwinColSelect();
+
+        for (int i = 0; i < 50; i++) {
+            cb.addItem("Item " + i);
+            nat.addItem("Item " + i);
+            list.addItem("Item " + i);
+            twincol.addItem("Item " + i);
+        }
+
+        hl.addComponent(cb);
+        hl.addComponent(nat);
+        hl.addComponent(list);
+        hl.addComponent(twincol);
+
+        return l;
+    }
+
+    Layout buildDateFields() {
+        VerticalLayout l = new VerticalLayout();
+        l.setCaption("Date fields");
+        l.setMargin(true);
+        l.setSpacing(true);
+
+        HorizontalLayout hl = new HorizontalLayout();
+        hl.setSpacing(true);
+        hl.setMargin(true, false, false, false);
+        l.addComponent(hl);
+
+        DateField df = new DateField();
+        df.setValue(DATE);
+        df.setResolution(DateField.RESOLUTION_MIN);
+        hl.addComponent(df);
+
+        df = new InlineDateField();
+        df.setLocale(new Locale("fi", "FI"));
+        df.setShowISOWeekNumbers(true);
+        df.setValue(DATE);
+        df.setResolution(DateField.RESOLUTION_DAY);
+        hl.addComponent(df);
+
+        df = new InlineDateField();
+        df.setValue(DATE);
+        df.setResolution(DateField.RESOLUTION_YEAR);
+        hl.addComponent(df);
+
+        return l;
+    }
+
+    Layout buildTabSheets() {
+        VerticalLayout l = new VerticalLayout();
+        l.setCaption("Tabs");
+        l.setMargin(true);
+        l.setSpacing(true);
+        l.setWidth("400px");
+
+        CheckBox closable = new CheckBox("Closable tabs");
+        closable.setImmediate(true);
+        l.addComponent(closable);
+
+        final TabSheet ts = new TabSheet();
+        ts.setHeight("100px");
+        l.addComponent(ts);
+
+        for (int i = 1; i < 10; i++) {
+            Tab t = ts.addTab(new Label(), "Tab " + i);
+            if (i % 2 == 0) {
+                t.setIcon(ICON_GLOBE);
+            }
+            if (i == 2) {
+                t.setEnabled(false);
+            }
+        }
+
+        closable.addListener(new Button.ClickListener() {
+            public void buttonClick(ClickEvent event) {
+                Iterator<Component> it = ts.getComponentIterator();
+                for (; it.hasNext();) {
+                    Component c = it.next();
+                    ts.getTab(c).setClosable(event.getButton().booleanValue());
+                }
+            }
+        });
+
+        return l;
+    }
+
+    Layout buildPanels() {
+        GridLayout l = new GridLayout(2, 1);
+        l.setCaption("Panels");
+        l.setMargin(true);
+        l.setSpacing(true);
+        l.setWidth("700px");
+        l.setColumnExpandRatio(0, 2);
+        l.setColumnExpandRatio(1, 5);
+
+        l.addComponent(new Label("Normal Panel", Label.CONTENT_XHTML));
+
+        Panel p = new Panel("Normal Panel");
+        p.setHeight("100px");
+        p.addComponent(new Label("Panel content"));
+        l.addComponent(p);
+
+        l.addComponent(new Label(
+                "Light Style (<code>LiferayTheme.PANEL_LIGHT</code>)",
+                Label.CONTENT_XHTML));
+
+        Panel p2 = new Panel("Light Style Panel");
+        p2.setStyleName(LiferayTheme.PANEL_LIGHT);
+        p2.addComponent(new Label("Panel content"));
+        l.addComponent(p2);
+
+        return l;
+    }
+
+    Layout buildTables() {
+        GridLayout l = new GridLayout(1, 1);
+        l.setCaption("Tables");
+        l.setMargin(true);
+        l.setSpacing(true);
+
+        Table t = new Table();
+        t.setWidth("700px");
+        t.setPageLength(4);
+        t.setSelectable(true);
+        t.setColumnCollapsingAllowed(true);
+        t.setColumnReorderingAllowed(true);
+        t.addActionHandler(handler);
+
+        t.addContainerProperty("First", String.class, null, "First",
+                ICON_GLOBE, Table.ALIGN_RIGHT);
+        t.addContainerProperty("Second", String.class, null);
+        t.addContainerProperty("Third", String.class, null);
+        t.addContainerProperty("Fourth", TextField.class, null);
+        t.setColumnCollapsed("Fourth", true);
+
+        int sum = 0;
+        for (int j = 0; j < 100; j++) {
+            t.addItem(new Object[] { j, "Bar value " + j,
+                    "Last column value " + j, new TextField() }, j);
+            sum += j;
+        }
+
+        t.setFooterVisible(true);
+        t.setColumnFooter("First", "" + sum);
+
+        l.addComponent(t);
+
+        return l;
+    }
+
+    Layout buildWindows() {
+        final CssLayout l = new CssLayout();
+        l.setCaption("Windows");
+
+        final Window w = new Window("Normal window");
+        w.setWidth("280px");
+        w.setHeight("180px");
+        w.setPositionX(40);
+        w.setPositionY(160);
+
+        final Window w2 = new Window("Window, no resize");
+        w2.setResizable(false);
+        w2.setWidth("280px");
+        w2.setHeight("180px");
+        w2.setPositionX(350);
+        w2.setPositionY(160);
+        w2.addComponent(new Label("<code>Window.setResizable(false)</code>",
+                Label.CONTENT_XHTML));
+
+        tabs.addListener(new TabSheet.SelectedTabChangeListener() {
+            public void selectedTabChange(SelectedTabChangeEvent event) {
+                if (event.getTabSheet().getSelectedTab() == l) {
+                    getMainWindow().addWindow(w);
+                    getMainWindow().addWindow(w2);
+                } else {
+                    getMainWindow().removeWindow(w);
+                    getMainWindow().removeWindow(w2);
+                }
+            }
+        });
+
+        return l;
+    }
+
+    Layout buildSplitPanels() {
+        final GridLayout l = new GridLayout(2, 1);
+        l.setCaption("Split panels");
+        l.setMargin(true);
+        l.setSpacing(true);
+        l.setWidth("700px");
+        l.setHeight("100%");
+        l.setColumnExpandRatio(1, 1);
+
+        CheckBox lockCheckBox = new CheckBox("Lock SplitPanels");
+        lockCheckBox.setImmediate(true);
+        l.addComponent(lockCheckBox, 1, 0);
+        l.newLine();
+
+        Label label = new Label("Normal SplitPanel", Label.CONTENT_XHTML);
+        label.setWidth(null);
+        l.addComponent(label);
+        final HorizontalSplitPanel sp = new HorizontalSplitPanel();
+        sp.setWidth("100%");
+        sp.setHeight("100px");
+        final VerticalSplitPanel sp2 = new VerticalSplitPanel();
+        sp2.setSizeFull();
+        sp.setSecondComponent(sp2);
+        l.addComponent(sp);
+
+        label = new Label(
+                "Small Style<br />(<code>LiferayTheme.SPLITPANEL_SMALL</code>)",
+                Label.CONTENT_XHTML);
+        label.setWidth(null);
+        l.addComponent(label);
+
+        final HorizontalSplitPanel sp3 = new HorizontalSplitPanel();
+        sp3.setStyleName(LiferayTheme.SPLITPANEL_SMALL);
+        sp3.setWidth("100%");
+        sp3.setHeight("100px");
+        final VerticalSplitPanel sp4 = new VerticalSplitPanel();
+        sp4.setStyleName(LiferayTheme.SPLITPANEL_SMALL);
+        sp4.setSizeFull();
+        sp3.setSecondComponent(sp4);
+        l.addComponent(sp3);
+
+        lockCheckBox.addListener(new ClickListener() {
+            public void buttonClick(ClickEvent event) {
+                sp.setLocked(event.getButton().booleanValue());
+                sp2.setLocked(event.getButton().booleanValue());
+                sp3.setLocked(event.getButton().booleanValue());
+                sp4.setLocked(event.getButton().booleanValue());
+            }
+        });
+
+        return l;
+    }
+
+    Layout buildAccordions() {
+        final GridLayout l = new GridLayout(2, 1);
+        l.setCaption("Accordions");
+        l.setMargin(true);
+        l.setSpacing(true);
+        l.setWidth("700px");
+
+        Accordion a = new Accordion();
+        a.setWidth("100%");
+        a.setHeight("170px");
+        l.addComponent(a);
+
+        for (int i = 1; i < 5; i++) {
+            Tab t = a.addTab(new Label(), "Sheet " + i);
+            if (i % 2 == 0) {
+                t.setIcon(ICON_GLOBE);
+            }
+            if (i == 2) {
+                t.setEnabled(false);
+            }
+        }
+
+        return l;
+    }
+
+    Layout buildSliders() {
+        final GridLayout l = new GridLayout(2, 1);
+        l.setCaption("Sliders");
+        l.setMargin(true);
+        l.setSpacing(true);
+        l.setWidth("400px");
+        l.setColumnExpandRatio(0, 1);
+
+        l.addComponent(new Label("Horizontal Slider", Label.CONTENT_XHTML));
+        Slider s = new Slider();
+        s.setWidth("200px");
+        try {
+            s.setValue(50);
+        } catch (ValueOutOfBoundsException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        l.addComponent(s);
+
+        l.addComponent(new Label("Vertical Slider", Label.CONTENT_XHTML));
+        s = new Slider();
+        s.setOrientation(Slider.ORIENTATION_VERTICAL);
+        s.setHeight("200px");
+        try {
+            s.setValue(50);
+        } catch (ValueOutOfBoundsException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        l.addComponent(s);
+
+        return l;
+    }
+
+    Layout buildTrees() {
+        final GridLayout l = new GridLayout(1, 1);
+        l.setMargin(true);
+        l.setCaption("Trees");
+
+        Tree tree = new Tree();
+        l.addComponent(tree);
+        tree.addItem("Item 1");
+        tree.setItemIcon("Item 1", ICON_GLOBE);
+        tree.addItem("Child 1");
+        tree.setItemIcon("Child 1", ICON_GLOBE);
+        tree.setParent("Child 1", "Item 1");
+        tree.addItem("Child 2");
+        tree.setParent("Child 2", "Item 1");
+        tree.addItem("Child 3");
+        tree.setChildrenAllowed("Child 3", false);
+        tree.setItemIcon("Child 3", ICON_GLOBE);
+        tree.setParent("Child 3", "Item 1");
+        tree.addItem("Child 4");
+        tree.setChildrenAllowed("Child 4", false);
+        tree.setParent("Child 4", "Item 1");
+        tree.addItem("Item 2");
+        tree.addItem("Item 3");
+        tree.setItemIcon("Item 3", ICON_GLOBE);
+        tree.setChildrenAllowed("Item 3", false);
+        tree.addItem("Item 4");
+        tree.setChildrenAllowed("Item 4", false);
+
+        tree.addActionHandler(handler);
+
+        return l;
+    }
+
+    Layout buildNotifications() {
+        final GridLayout l = new GridLayout(2, 1);
+        l.setCaption("Notifications");
+        l.setMargin(true);
+        l.setSpacing(true);
+        l.setWidth("400px");
+        l.setColumnExpandRatio(0, 1);
+
+        final TextField title = new TextField("Notification caption");
+        title.setValue("Brown Fox!");
+        final TextField message = new TextField("Notification description");
+        message.setValue("Jumped over the lazy dog.");
+        message.setWidth("15em");
+
+        l.addComponent(new Label("<h3>Type</h3>", Label.CONTENT_XHTML));
+        l.addComponent(new Label("<h3>Preview</h3>", Label.CONTENT_XHTML));
+
+        l.addComponent(new Label("Humanized", Label.CONTENT_XHTML));
+        Button show = new Button("Humanized Notification",
+                new Button.ClickListener() {
+                    public void buttonClick(ClickEvent event) {
+                        event.getButton()
+                                .getWindow()
+                                .showNotification((String) title.getValue(),
+                                        (String) message.getValue());
+
+                    }
+                });
+        l.addComponent(show);
+
+        l.addComponent(new Label("Warning", Label.CONTENT_XHTML));
+        show = new Button("Warning Notification", new Button.ClickListener() {
+            public void buttonClick(ClickEvent event) {
+                event.getButton()
+                        .getWindow()
+                        .showNotification((String) title.getValue(),
+                                (String) message.getValue(),
+                                Notification.TYPE_WARNING_MESSAGE);
+
+            }
+        });
+        l.addComponent(show);
+
+        l.addComponent(new Label("Error", Label.CONTENT_XHTML));
+        show = new Button("Error Notification", new Button.ClickListener() {
+            public void buttonClick(ClickEvent event) {
+                event.getButton()
+                        .getWindow()
+                        .showNotification((String) title.getValue(),
+                                (String) message.getValue(),
+                                Notification.TYPE_ERROR_MESSAGE);
+
+            }
+        });
+        l.addComponent(show);
+
+        l.addComponent(new Label("Tray", Label.CONTENT_XHTML));
+        show = new Button("Tray Notification", new Button.ClickListener() {
+            public void buttonClick(ClickEvent event) {
+                event.getButton()
+                        .getWindow()
+                        .showNotification((String) title.getValue(),
+                                (String) message.getValue(),
+                                Notification.TYPE_TRAY_NOTIFICATION);
+
+            }
+        });
+        l.addComponent(show);
+
+        l.addComponent(title);
+        l.addComponent(message);
+
+        return l;
+    }
+
+    Layout buildPopupViews() {
+        final GridLayout l = new GridLayout(1, 1);
+        l.setCaption("PopupViews");
+        l.setMargin(true);
+        l.setSpacing(true);
+        l.setWidth("400px");
+
+        Label content = new Label(
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+        content.setWidth("200px");
+
+        PopupView pw = new PopupView("Click me!", content);
+        l.addComponent(pw);
+
+        return l;
+    }
+
+    MenuBar getTopMenu() {
+        MenuBar menubar = new MenuBar();
+        menubar.setWidth("100%");
+        final MenuBar.MenuItem file = menubar.addItem("File", null);
+        final MenuBar.MenuItem newItem = file.addItem("New", null);
+        file.addItem("Open file...", new ThemeResource(
+                "../runo/icons/16/folder.png"), null);
+        file.addSeparator();
+
+        newItem.addItem("File", null);
+        newItem.addItem("Folder", null);
+        newItem.addItem("Project...", null);
+
+        file.addItem("Close", null);
+        file.addItem("Close All", null);
+        file.addSeparator();
+
+        file.addItem("Save", null);
+        file.addItem("Save As...", null);
+        file.addItem("Save All", null);
+
+        final MenuBar.MenuItem edit = menubar.addItem("Edit", null);
+        edit.addItem("Undo", null);
+        edit.addItem("Redo", null).setEnabled(false);
+        edit.addSeparator();
+
+        edit.addItem("Cut", null);
+        edit.addItem("Copy", null);
+        edit.addItem("Paste", null);
+        edit.addSeparator();
+
+        final MenuBar.MenuItem find = edit.addItem("Find/Replace", null);
+
+        find.addItem("Google Search", new Command() {
+            public void menuSelected(MenuItem selectedItem) {
+                getMainWindow().open(
+                        new ExternalResource("http://www.google.com"));
+            }
+        });
+        find.addSeparator();
+        find.addItem("Find/Replace...", null);
+        find.addItem("Find Next", null);
+        find.addItem("Find Previous", null);
+
+        final MenuBar.MenuItem view = menubar.addItem("View",
+                new ThemeResource("../runo/icons/16/user.png"), null);
+        MenuItem statusBarItem = view.addItem("Show/Hide Status Bar", null);
+        statusBarItem.setCheckable(true);
+        statusBarItem.setChecked(true);
+        view.addItem("Customize Toolbar...", null);
+        view.addSeparator();
+
+        view.addItem("Actual Size", null);
+        view.addItem("Zoom In", null);
+        view.addItem("Zoom Out", null);
+
+        menubar.addItem("Help", null).setEnabled(false);
+
+        return menubar;
+    }
+}