aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/main/java/com/vaadin/tests/components/MenuBarDownloadBrowserOpenerUI.java
blob: 78b339349154bb2e90d1c4af5047dfa5135fb9e2 (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
package com.vaadin.tests.components;

import com.vaadin.annotations.Widgetset;
import com.vaadin.server.BrowserWindowOpener;
import com.vaadin.server.ClassResource;
import com.vaadin.server.ConnectorResource;
import com.vaadin.server.ExternalResource;
import com.vaadin.server.FileDownloader;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.embedded.EmbeddedPdf;
import com.vaadin.tests.extensions.EventTriggerExtension;
import com.vaadin.tests.widgetset.TestingWidgetSet;
import com.vaadin.ui.Button;
import com.vaadin.ui.MenuBar;
import com.vaadin.ui.MenuBar.MenuItem;

@Widgetset(TestingWidgetSet.NAME)
public class MenuBarDownloadBrowserOpenerUI extends AbstractTestUIWithLog {

    @Override
    protected void setup(VaadinRequest request) {

        ConnectorResource downloadResource = new ClassResource(
                EmbeddedPdf.class, "test.pdf");
        ExternalResource openResource = new ExternalResource(
                "https://vaadin.com");

        MenuBar menuBar = new MenuBar();
        MenuItem download = menuBar.addItem("Download");
        MenuItem saveAsNoLog = download.addItem("Save as without logging...");
        MenuItem saveAsLog = download.addItem("Save as with logging...",
                item -> log("Download triggered"));
        FileDownloader fd = new FileDownloader(downloadResource);
        fd.extend(saveAsNoLog);
        FileDownloader fd2 = new FileDownloader(downloadResource);
        fd2.extend(saveAsLog);

        MenuItem open = menuBar.addItem("Open");
        MenuItem openNoLog = open.addItem("Open without logging...");
        MenuItem openLog = open.addItem("Open with logging...",
                item -> log("Open triggered"));

        BrowserWindowOpener bwo = new BrowserWindowOpener(openResource);
        bwo.extend(openNoLog);
        BrowserWindowOpener bwo2 = new BrowserWindowOpener(openResource);
        bwo2.extend(openLog);

        addComponent(menuBar);

        addComponent(new Button("Remove downloaders and openers", event -> {
            fd.remove();
            fd2.remove();
            bwo.remove();
            bwo2.remove();
        }));

        setupTestExtension(menuBar);

    }

    private void setupTestExtension(MenuBar menuBar) {
        EventTriggerExtension triggerable1 = new EventTriggerExtension();
        EventTriggerExtension triggerable2 = new EventTriggerExtension();

        MenuItem testExtension = menuBar.addItem("TestExtension");
        MenuItem runMe = testExtension.addItem("RunMe");
        triggerable1.extend(runMe);

        testExtension.addItem("AddTrigger", c -> triggerable2.extend(runMe));
        testExtension.addItem("RemoveTrigger", c -> triggerable2.remove());

    }

}