Example usage for com.vaadin.ui CssLayout CssLayout

List of usage examples for com.vaadin.ui CssLayout CssLayout

Introduction

In this page you can find the example usage for com.vaadin.ui CssLayout CssLayout.

Prototype

public CssLayout() 

Source Link

Document

Constructs an empty CssLayout.

Usage

From source file:org.jug.montpellier.sonni.about.AboutPerspectiveContribution.java

License:Apache License

private Component getAboutDialog() {
    CssLayout titleLayout = new CssLayout();
    titleLayout.addStyleName("transparent-frame");
    titleLayout.setWidth("90%");
    Label title = new Label("Sonni - Dynamic Vaadin OSGi Demo");
    title.setWidth("100%");
    title.addStyleName("about-title");
    titleLayout.addComponent(title);//from   w w w .ja v a2 s. co  m
    Label description = new Label(
            "<br/>Copyright (c) Developer <a href='mailto:eric.taix@gmail.com'>Eric Taix</a> - <a href='http://www.montpellier-jug.org'>Montpellier JUG</a><br>"
                    + "<br/><br/>This application aims to demonstrate how to develop a dynamic application with <a href='http://www.vaadin.com'>Vaadin</a> and OSGi<br/>"
                    + "All buttons in the left panel are loaded dynamically from components stored in differents bundles. Play with the parameter view to activate or desactivate components."
                    // + "This application can be forked from <a href='https://github.com/eric-taix/sonni'>gitHub</a>."
                    + "<br/><br/><br/>The Montpellier Java User Group's goals are:"
                    + "<li>Create an independent community 'In Real Life' (the JUG is not intended to be another virtual community built around an electronic forum)</li>"
                    + "<li>Promote exchanges between industry, academia and students</li>"
                    + "<li>Share knowledge and experiences around Java</li>"
                    + "<li>Promote Java and associated technologies</li>"
                    + "All in a professional and user-friendly form.<br/><br><br/>"

                    + "Licensed under Apache Software Foundation 2.0 license (ASF)<br>"
                    + "This software contains modules licenced under the Apache Software Foundation 2.0 license (ASF) and EPL<br>"
                    + "Many thanks to Siemens AG, Kai Tdter, Chris Brind, Neil Bartlett, "
                    + " Petter Holmstrm and others for their OSGi and Vaadin"
                    + " related work, blogs, and bundles."
                    + "<br/><br/><br/>Why <b>Sonni</b>?<br/>'Sonni' is the finish translation for bulls. Finland has a lot of reinders and in our county we have a lot of bulls !<br/><br/>");
    description.addStyleName("about");
    description.setWidth("100%");
    description.setContentMode(Label.CONTENT_XHTML);

    titleLayout.addComponent(description);
    return titleLayout;
}

From source file:org.kani.Application.java

License:Apache License

private void loadProtectedResources() {
    String applicationTitle = getMessage("title");
    main = new Window(applicationTitle);
    mainLayout = (VerticalLayout) main.getContent();
    mainLayout.setMargin(false);/*from  w w  w  . j a  va  2  s  .c o  m*/
    mainLayout.setStyleName("blue");
    setMainWindow(main);

    mainLayout.setSizeFull();
    mainLayout.addComponent(getMenu());

    HorizontalLayout header = new HorizontalLayout();

    header.addComponent(getHeader());
    header.addComponent(getToolbar());
    mainLayout.addComponent(header);

    CssLayout margin = new CssLayout();
    margin.setMargin(false, true, true, true);
    margin.setSizeFull();
    tabSheet = new TabSheet();
    tabSheet.setSizeFull();
    margin.addComponent(tabSheet);
    mainLayout.addComponent(margin);
    mainLayout.setExpandRatio(margin, 1);

    for (String viewKey : views.keySet()) {
        Object view = views.get(viewKey);
        String viewName = getMessage(viewKey, "title");
        Method createMethod;
        try {
            createMethod = view.getClass().getMethod("create", org.kani.Application.class);
            Component viewContent = (Component) createMethod.invoke(view, this);

            String viewIconPath = getMessage(viewKey, "icon");
            Resource viewIcon = new ClassResource(viewIconPath, this);

            tabSheet.addTab(viewContent, viewName, viewIcon);
        } catch (Exception e) {
            logger.log(Level.SEVERE, String.format("Could not initialize view %s", viewKey), e);
        }
    }
}

From source file:org.kani.Application.java

License:Apache License

private Layout getHeader() {
    HorizontalLayout header = new HorizontalLayout();
    header.setWidth("100%");
    header.setMargin(true);//from   w  w w.  j av  a 2s . c o m
    header.setSpacing(true);

    CssLayout titleLayout = new CssLayout();

    String applicationTitle = getMessage("title");
    H1 title = new H1(applicationTitle);
    titleLayout.addComponent(title);

    String applicationDescription = getMessage("description");
    SmallText description = new SmallText(applicationDescription);
    description.setSizeUndefined();
    titleLayout.addComponent(description);
    titleLayout.addComponent(description);

    header.addComponent(titleLayout);

    return header;
}

From source file:org.kani.Application.java

License:Apache License

private Window getAboutDialog() {
    if (aboutWindow == null) {
        aboutWindow = new Window("About...");
        aboutWindow.setModal(true);//from ww w  .j  ava  2 s  .  c o m
        aboutWindow.setWidth("400px");

        VerticalLayout layout = (VerticalLayout) aboutWindow.getContent();
        layout.setMargin(true);
        layout.setSpacing(true);
        layout.setStyleName("blue");

        CssLayout titleLayout = new CssLayout();
        H2 title = new H2("Dynamic Vaadin OSGi Demo");
        titleLayout.addComponent(title);
        SmallText description = new SmallText("<br>Copyright ?? and others.<br>"
                + "The icons are from the Silk icon set by Mark James<br>"
                + "<a href=\"http://www.famfamfam.com/lab/icons/silk/\">http://www.famfamfam.com/lab/icons/silk/</a>");
        description.setSizeUndefined();
        description.setContentMode(Label.CONTENT_XHTML);

        titleLayout.addComponent(description);
        aboutWindow.addComponent(titleLayout);

        Button close = new Button("Close", new Button.ClickListener() {
            public void buttonClick(ClickEvent event) {
                (aboutWindow.getParent()).removeWindow(aboutWindow);
            }

        });
        layout.addComponent(close);
        layout.setComponentAlignment(close, Alignment.MIDDLE_RIGHT);
    }
    return aboutWindow;
}

From source file:org.lucidj.browser.AbstractCell.java

License:Apache License

private Component build_left_panel() {
    left_panel = new CssLayout();
    left_panel.setWidth(32, Sizeable.Unit.PIXELS);
    left_panel.addStyleName("cell-panel-left");
    left_panel.setHeight(100, Sizeable.Unit.PERCENTAGE);

    String icon_url = "/VAADIN/~/formulas/impossible.png";
    String icon_title = "The Unknown";

    ComponentInterface component_interface = Aggregate.adapt(ComponentInterface.class, source_object);
    if (component_interface != null) {
        // If it is a valid component, displays its icon on the top left corner of the cell
        ComponentDescriptor descriptor = (ComponentDescriptor) component_interface
                .getProperty(ComponentDescriptor.DESCRIPTOR);

        if (descriptor != null) {
            icon_url = descriptor.getIconUrl();
            icon_title = descriptor.getIconTitle();
        }//from w  w  w  .  ja  va 2  s .  c  om
    }

    String component_icon_html = "<img class='component-icon' src='" + icon_url + "' title='"
            + SafeHtmlUtils.htmlEscape(icon_title) + "'/>";
    component_icon = new Label(component_icon_html, ContentMode.HTML);
    left_panel.addComponent(component_icon);

    // Put the component in a D&D wrapper and allow dragging it
    final DragAndDropWrapper panel_dd_wrap = new DragAndDropWrapper(left_panel);
    panel_dd_wrap.setDragStartMode(DragAndDropWrapper.DragStartMode.COMPONENT_OTHER);
    panel_dd_wrap.setDragImageComponent(component_icon);
    panel_dd_wrap.addStyleName("no-horizontal-drag-hints");
    panel_dd_wrap.addStyleName("no-box-drag-hints");

    // Set the wrapper to wrap tightly around the component
    panel_dd_wrap.setHeight(100, Sizeable.Unit.PERCENTAGE);
    panel_dd_wrap.setWidthUndefined();
    panel_dd_wrap.setId("test");

    // Setup DD handlers for component insertion
    panel_dd_wrap.setData(this);
    panel_dd_wrap.setDropHandler(this);

    // While left_panel is kept in order to be customized, here we return D&D wrapper
    return (panel_dd_wrap);
}

From source file:org.lucidj.browser.AbstractCell.java

License:Apache License

private CssLayout build_right_panel() {
    right_panel = new CssLayout();
    right_panel.addStyleName("cell-panel-right");
    right_panel.setHeight(100, Sizeable.Unit.PERCENTAGE);
    right_panel.setWidth(32, Sizeable.Unit.PIXELS);

    String running_html = "*";
    //"<img src='/VAADIN/formulas/running.gif'/>";
    running = new Label(running_html, ContentMode.HTML);
    running.addStyleName("component-task-state");
    running.setWidth(32, Sizeable.Unit.PIXELS);
    running.setVisible(false);//from  w  w  w .j a  va2  s.  com
    right_panel.addComponent(running);

    ComponentState source_state = Aggregate.adapt(ComponentState.class, source_object);
    if (source_state != null) {
        source_state.addStateListener(this);
        setRunning(true, source_state);
    } else {
        setRunning(true, null);
    }

    return (right_panel);
}

From source file:org.lucidj.browser.BrowserView.java

License:Apache License

private void build_toolbar() {
    current_toolbar = new CssLayout();

    CssLayout local_toolbar = new CssLayout();
    current_toolbar.addComponent(local_toolbar);

    CssLayout navigation = new CssLayout();
    navigation.addStyleName("v-component-group");
    navigation.addStyleName("ui-toolbar-spacer");
    createButton(navigation, "prev-smartbox", FontAwesome.CHEVRON_LEFT, null, ShortcutAction.KeyCode.ARROW_UP,
            ShortcutAction.ModifierKey.CTRL);
    createButton(navigation, "next-smartbox", FontAwesome.CHEVRON_RIGHT, null,
            ShortcutAction.KeyCode.ARROW_DOWN, ShortcutAction.ModifierKey.CTRL);
    local_toolbar.addComponent(navigation);

    createButton(local_toolbar, "save", FontAwesome.SAVE).addStyleName("ui-toolbar-spacer");
    //        createButton (local_toolbar, "test", FontAwesome.MAGIC)
    //            .addStyleName("ui-toolbar-spacer");
    //        createButton (local_toolbar, "test2", FontAwesome.FLASK)
    //                .addStyleName("ui-toolbar-spacer");

    CssLayout edition = new CssLayout();
    edition.addStyleName("v-component-group");
    edition.addStyleName("ui-toolbar-spacer");
    createButton(edition, "undo-cell-edit", FontAwesome.UNDO, "Undo");
    createButton(edition, "redo-cell-edit", FontAwesome.REPEAT, null);
    createButton(edition, "delete-cell", FontAwesome.TRASH_O, null);
    local_toolbar.addComponent(edition);

    CssLayout view_controls = new CssLayout();
    view_controls.addStyleName("v-component-group");
    view_controls.addStyleName("ui-toolbar-spacer");
    createButton(view_controls, VM_NOTEBOOK,
            new ExternalResource("vaadin://~/Browser_libraries/notebook-view.png"));
    createButton(view_controls, VM_SINGLE, new ExternalResource("vaadin://~/Browser_libraries/single-view.png"),
            null, ShortcutAction.KeyCode.INSERT, ShortcutAction.ModifierKey.CTRL);
    local_toolbar.addComponent(view_controls);

    // TODO: CTRL+ENTER => RUN AND SKIP TO NEXT
    // TODO: SELECTION + SHIFT+ENTER => RUN ONLY SELECTED STATEMENTS

    final Button source_view = new Button();
    source_view.setId("output");
    source_view.addStyleName("ui-toolbar-spacer");
    source_view.setHtmlContentAllowed(true);
    String ico = "<path class=\"path1\" d=\"M1088 128h-64v-64c0-35.2-28.8-64-64-64h-896c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h64v64c0 35.2 28.8 64 64 64h896c35.2 0 64-28.8 64-64v-768c0-35.2-28.8-64-64-64zM128 192v640h-63.886c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h895.77c0.040 0.034 0.082 0.076 0.116 0.116v63.884h-768c-35.2 0-64 28.8-64 64v0zM1088 959.884c-0.034 0.040-0.076 0.082-0.116 0.116h-895.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h895.77c0.040 0.034 0.082 0.076 0.116 0.116v767.768z\"></path>\n"
            + "<path class=\"path2\" d=\"M960 352c0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96 96 42.98 96 96z\"></path>\n"
            + "<path class=\"path3\" d=\"M1024 896h-768v-128l224-384 256 320h64l224-192z\"></path>";
    source_view.setCaption(/*w  w w .  ja  v  a2  s  .  c  o m*/
            "<svg style=\"fill: currentColor; width: 1.5em; margin-top:0.3em;\" viewBox=\"0 0 1152 1024\">"
                    + ico + "</svg>");
    source_view.addStyleName("tiny");
    source_view.addStyleName("toolbar");
    source_view.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent clickEvent) {
            handle_button_click(source_view);
        }
    });
    local_toolbar.addComponent(source_view);

    //        Button output_view = new Button ();
    //        output_view.setHtmlContentAllowed(true);
    //        String ico2 = "<path d=\"M249.649 792.806l-107.776 166.4 11.469 54.426 54.272-11.622 107.725-166.298c-11.469-6.144-22.835-12.698-33.843-19.968-11.162-7.219-21.811-14.95-31.846-22.938zM705.943 734.694c0.717-1.485 1.178-3.123 1.843-4.71 2.714-5.99 5.12-11.981 7.066-18.278 0.307-1.126 0.461-2.253 0.819-3.277 1.997-6.963 3.686-13.824 5.018-20.89 0-0.358 0-0.614 0-1.075 9.984-59.853-7.424-126.618-47.258-186.931l56.832-87.757c65.485 8.346 122.112-8.141 149.35-50.278 47.258-72.858-10.24-194.15-128.256-271.002-118.118-76.902-252.058-80.128-299.213-7.373-27.341 42.189-19.354 100.71 15.002 157.338l-56.934 87.757c-71.117-11.93-139.059-0.819-189.594 32.768-0.307 0.102-0.666 0.205-0.87 0.41-5.888 3.994-11.622 8.397-16.998 13.005-0.87 0.717-1.894 1.382-2.611 2.099-5.018 4.301-9.523 9.114-13.875 13.926-1.024 1.229-2.458 2.304-3.43 3.584-5.427 6.195-10.445 12.749-14.848 19.712-70.861 109.21-10.394 274.483 134.81 369.101 145.306 94.618 320.512 82.637 391.219-26.573 4.454-6.912 8.55-14.131 11.93-21.555zM664.215 224.845c-45.414-29.542-67.584-76.134-49.408-104.243 18.125-28.006 69.683-26.726 114.995 2.816 45.517 29.542 67.482 76.237 49.408 104.243s-69.53 26.726-114.995-2.816z\"></path>";
    //        output_view.setCaption("<svg style=\"fill: currentColor; width: 1.5em; margin-top:0.3em;\" viewBox=\"0 0 1024 1024\">" + ico2 + "</svg>");
    //        output_view.addStyleName("tiny");
    //        view_controls.addComponent (output_view);
    //
    //        Button run = new Button ();
    //        run.setHtmlContentAllowed(true);
    //        String ico3 = "<path class=\"path1\" d=\"M192 128l640 384-640 384z\"></path>";
    //        run.setCaption("<svg style=\"fill: currentColor; width: 1.5em; margin-top:0.3em;\" viewBox=\"0 0 1024 1024\">" + ico3 + "</svg>");
    //        run.addStyleName("tiny");
    //        view_controls.addComponent (run);

}

From source file:org.lucidj.browser.BrowserView.java

License:Apache License

private void build_view() {
    setMargin(new MarginInfo(true, false, true, false));

    build_toolbar();// ww  w . j  av  a  2 s .  c o m
    build_sidebar();

    insert_here_cell = new Cell(null);

    // TODO: THIS BLOCK IS ACTUALLY A FILE HEADER OBJECT
    //+++
    HorizontalLayout header = new HorizontalLayout();
    header.setWidth(100, Unit.PERCENTAGE);
    {
        CssLayout left_panel = new CssLayout();
        left_panel.setWidth(40, Unit.PIXELS);
        header.addComponent(left_panel);

        final HorizontalLayout caption = new HorizontalLayout();
        caption.setSpacing(true);
        caption.addStyleName("formula-header");
        caption.setWidth(100, Unit.PERCENTAGE);
        {
            //caption.addComponent (get_icon ("freepik-saturn.png"));

            VerticalLayout title_area = new VerticalLayout();
            {
                final TextField title = new TextField();
                title.setWidth(100, Unit.PERCENTAGE);
                title.setValue("Default");

                //                    final ShortcutListener handle_enter = new ShortcutListener
                //                        ("EnterShortcut", ShortcutAction.KeyCode.ENTER, null)
                //                    {
                //                        @Override
                //                        public void handleAction (Object o, Object o1)
                //                        {
                //                            Notification.show ("New title: " + title.getValue());
                //                            unfocus (title);
                //
                //                        }
                //                    };
                //
                //                    title.addFocusListener (new FieldEvents.FocusListener ()
                //                    {
                //                        @Override
                //                        public void focus (FieldEvents.FocusEvent focusEvent)
                //                        {
                //                            title.addShortcutListener (handle_enter);
                //                        }
                //                    });
                //
                //                    title.addBlurListener (new FieldEvents.BlurListener ()
                //                    {
                //                        @Override
                //                        public void blur (FieldEvents.BlurEvent blurEvent)
                //                        {
                //                            title.removeShortcutListener (handle_enter);
                //                        }
                //                    });
                title_area.addComponent(title);
            }

            caption.addComponent(title_area);
            caption.setExpandRatio(title_area, 1.0f);
        }
        header.addComponent(caption);

        CssLayout right_panel = new CssLayout();
        right_panel.setWidth(36, Unit.PIXELS);
        header.addComponent(right_panel);
        header.setExpandRatio(caption, 1.0f);
    }
    addComponent(header);
    //---

    content = new VerticalLayout();
    content.addStyleName("formula-cells");
    addComponent(content);

    synchronize_cell_view();

    // Set focus to first available object
    update_cell_focus(null, true);
}

From source file:org.lucidj.html_renderer.HtmlRenderer.java

License:Apache License

private void init_toolbar() {
    editor_toolbar = new CssLayout();

    CssLayout group = new CssLayout();
    group.addStyleName("v-component-group");

    Button output_view = new Button();
    output_view.setHtmlContentAllowed(true);
    String ico2 = "<path d=\"M249.649 792.806l-107.776 166.4 11.469 54.426 54.272-11.622 107.725-166.298c-11.469-6.144-22.835-12.698-33.843-19.968-11.162-7.219-21.811-14.95-31.846-22.938zM705.943 734.694c0.717-1.485 1.178-3.123 1.843-4.71 2.714-5.99 5.12-11.981 7.066-18.278 0.307-1.126 0.461-2.253 0.819-3.277 1.997-6.963 3.686-13.824 5.018-20.89 0-0.358 0-0.614 0-1.075 9.984-59.853-7.424-126.618-47.258-186.931l56.832-87.757c65.485 8.346 122.112-8.141 149.35-50.278 47.258-72.858-10.24-194.15-128.256-271.002-118.118-76.902-252.058-80.128-299.213-7.373-27.341 42.189-19.354 100.71 15.002 157.338l-56.934 87.757c-71.117-11.93-139.059-0.819-189.594 32.768-0.307 0.102-0.666 0.205-0.87 0.41-5.888 3.994-11.622 8.397-16.998 13.005-0.87 0.717-1.894 1.382-2.611 2.099-5.018 4.301-9.523 9.114-13.875 13.926-1.024 1.229-2.458 2.304-3.43 3.584-5.427 6.195-10.445 12.749-14.848 19.712-70.861 109.21-10.394 274.483 134.81 369.101 145.306 94.618 320.512 82.637 391.219-26.573 4.454-6.912 8.55-14.131 11.93-21.555zM664.215 224.845c-45.414-29.542-67.584-76.134-49.408-104.243 18.125-28.006 69.683-26.726 114.995 2.816 45.517 29.542 67.482 76.237 49.408 104.243s-69.53 26.726-114.995-2.816z\"></path>";
    output_view.setCaption(//  w  w w  . j a v a  2 s  .  c o m
            "<svg style=\"fill: currentColor; width: 1.5em; margin-top:0.3em;\" viewBox=\"0 0 1024 1024\">"
                    + ico2 + "</svg>");
    output_view.addStyleName("tiny");
    group.addComponent(output_view);

    output_view.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent clickEvent) {
            show_hide_rich_text();
        }
    });

    Button run = new Button();
    run.setHtmlContentAllowed(true);
    String ico3 = "<path class=\"path1\" d=\"M192 128l640 384-640 384z\"></path>";
    run.setCaption(
            "<svg style=\"fill: currentColor; width: 1.5em; margin-top:0.3em;\" viewBox=\"0 0 1024 1024\">"
                    + ico3 + "</svg>");
    run.addStyleName("tiny");
    group.addComponent(run);

    run.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent clickEvent) {
            render_html_from_rich_text();
        }
    });

    run.addShortcutListener(new AbstractField.FocusShortcut(run, ShortcutAction.KeyCode.ENTER,
            ShortcutAction.ModifierKey.SHIFT) {
        @Override
        public void handleAction(Object sender, Object target) {
            render_html_from_rich_text();
        }
    });

    editor_toolbar.addComponent(group);
}

From source file:org.lucidj.markdown_renderer.MarkdownRenderer.java

License:Apache License

private void init_toolbar() {
    editor_toolbar = new CssLayout();

    CssLayout group = new CssLayout();
    group.addStyleName("v-component-group");

    Button output_view = new Button();
    output_view.setHtmlContentAllowed(true);
    String ico2 = "<path d=\"M249.649 792.806l-107.776 166.4 11.469 54.426 54.272-11.622 107.725-166.298c-11.469-6.144-22.835-12.698-33.843-19.968-11.162-7.219-21.811-14.95-31.846-22.938zM705.943 734.694c0.717-1.485 1.178-3.123 1.843-4.71 2.714-5.99 5.12-11.981 7.066-18.278 0.307-1.126 0.461-2.253 0.819-3.277 1.997-6.963 3.686-13.824 5.018-20.89 0-0.358 0-0.614 0-1.075 9.984-59.853-7.424-126.618-47.258-186.931l56.832-87.757c65.485 8.346 122.112-8.141 149.35-50.278 47.258-72.858-10.24-194.15-128.256-271.002-118.118-76.902-252.058-80.128-299.213-7.373-27.341 42.189-19.354 100.71 15.002 157.338l-56.934 87.757c-71.117-11.93-139.059-0.819-189.594 32.768-0.307 0.102-0.666 0.205-0.87 0.41-5.888 3.994-11.622 8.397-16.998 13.005-0.87 0.717-1.894 1.382-2.611 2.099-5.018 4.301-9.523 9.114-13.875 13.926-1.024 1.229-2.458 2.304-3.43 3.584-5.427 6.195-10.445 12.749-14.848 19.712-70.861 109.21-10.394 274.483 134.81 369.101 145.306 94.618 320.512 82.637 391.219-26.573 4.454-6.912 8.55-14.131 11.93-21.555zM664.215 224.845c-45.414-29.542-67.584-76.134-49.408-104.243 18.125-28.006 69.683-26.726 114.995 2.816 45.517 29.542 67.482 76.237 49.408 104.243s-69.53 26.726-114.995-2.816z\"></path>";
    output_view.setCaption(// ww  w .j a v a  2  s  .com
            "<svg style=\"fill: currentColor; width: 1.5em; margin-top:0.3em;\" viewBox=\"0 0 1024 1024\">"
                    + ico2 + "</svg>");
    output_view.addStyleName("tiny");
    group.addComponent(output_view);

    output_view.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent clickEvent) {
            show_hide_rich_text();
        }
    });

    Button run = new Button();
    run.setHtmlContentAllowed(true);
    String ico3 = "<path class=\"path1\" d=\"M192 128l640 384-640 384z\"></path>";
    run.setCaption(
            "<svg style=\"fill: currentColor; width: 1.5em; margin-top:0.3em;\" viewBox=\"0 0 1024 1024\">"
                    + ico3 + "</svg>");
    run.addStyleName("tiny");
    group.addComponent(run);

    run.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent clickEvent) {
            render_html_from_markdown();
        }
    });

    run.addShortcutListener(new AbstractField.FocusShortcut(run, ShortcutAction.KeyCode.ENTER,
            ShortcutAction.ModifierKey.SHIFT) {
        @Override
        public void handleAction(Object sender, Object target) {
            render_html_from_markdown();
        }
    });

    editor_toolbar.addComponent(group);
}