summaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/tests/book/WindowTestApplication.java
blob: 49bceb89fce9397614404a591d17d36b1527bd71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package com.itmill.toolkit.tests.book;

import java.util.HashMap;

import com.itmill.toolkit.Application;
import com.itmill.toolkit.terminal.ExternalResource;
import com.itmill.toolkit.ui.Button;
import com.itmill.toolkit.ui.Label;
import com.itmill.toolkit.ui.Link;
import com.itmill.toolkit.ui.Window;
import com.itmill.toolkit.ui.Button.ClickEvent;

public class WindowTestApplication extends Application {
    Window anotherpage = null;
    HashMap windows = new HashMap();

    @Override
    public void init() {
        final Window main = new Window("Window Test Application");
        setMainWindow(main);
        setTheme("tests-book");

        /* Create a new window. */
        final Window mywindow = new Window("Second Window");

        /* Manually set the name of the window. */
        mywindow.setName("mywindow");

        /* Add some content to the window. */
        mywindow.addComponent(new Label("This is a second window."));

        /* Add the window to the application. */
        addWindow(mywindow);

        /* Add a button to open a new window. */
        main.addComponent(new Button("Click to open new window",
                new Button.ClickListener() {
                    public void buttonClick(ClickEvent event) {
                        // Open the window.
                        main.open(new ExternalResource(mywindow.getURL()),
                                "_new");
                    }
                }));

        /* Add a link to the second window. */
        Link link = new Link("Click to open second window",
                new ExternalResource(mywindow.getURL()));
        link.setTargetName("_new");
        main.addComponent(link);

        // Add the link manually inside a Label.
        main.addComponent(new Label("Second window: <a href='"
                + mywindow.getURL() + "' target='_new'>click to open</a>",
                Label.CONTENT_XHTML));
        main.addComponent(new Label(
                "The second window can be accessed through URL: "
                        + mywindow.getURL()));

        // Add links to windows that do not yet exist, but are created
        // dynamically when the URL is called.
        main.addComponent(new Label("URLs to open item windows:"));
        final String[] items = new String[] { "mercury", "venus", "earth",
                "mars", "jupiter", "saturn", "uranus", "neptune" };

        for (int inx = 0; inx < items.length; inx++) {
            String item = items[inx];

            // We do not create window objects here, but just links to the
            // windows
            String windowUrl = getURL() + "planet-" + item;
            main.addComponent(new Label("A window about '" + item
                    + "': <a href='" + windowUrl + "' target='_new'>"
                    + windowUrl + "</a>", Label.CONTENT_XHTML));
        }
    }

    @Override
    public Window getWindow(String name) {
        if (name.startsWith("planet-")) {
            String planetName = name.substring("planet-".length());
            if (!windows.containsKey(planetName)) {
                // Create the window object on the fly.
                Window newWindow = new Window("Yet Another Page");
                newWindow.addComponent(new Label(
                        "This window contains details about " + planetName
                                + "."));
                windows.put(planetName, newWindow);

                // We must add the window to the application, it is not done
                // automatically
                addWindow(newWindow);
            }
            return (Window) windows.get(planetName);
        }

        return super.getWindow(name);
    }
}