Package org.gwtoolbox.sample.widget.client.misc

Source Code of org.gwtoolbox.sample.widget.client.misc.MenuSample

package org.gwtoolbox.sample.widget.client.misc;

import com.google.gwt.event.dom.client.ContextMenuEvent;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.*;
import org.gwtoolbox.ioc.core.client.annotation.Component;
import org.gwtoolbox.sample.widget.client.SamplePanel;
import org.gwtoolbox.widget.client.label.BasicLabel;
import org.gwtoolbox.widget.client.menu.AbstractMenuContext;
import org.gwtoolbox.widget.client.menu.Menu;
import org.gwtoolbox.widget.client.menu.MenuItemBase;
import org.gwtoolbox.widget.client.menu.MenuPopup;
import org.gwtoolbox.widget.client.menu.item.CheckMenuItem;
import org.gwtoolbox.widget.client.menu.item.MenuItemSelectionListener;
import org.gwtoolbox.widget.client.menu.item.RadioMenuItem;
import org.gwtoolbox.widget.client.menu.item.SelectionMenuItem;
import org.gwtoolbox.widget.client.popup.Popup;

/**
* @author Uri Boness
*/
@Component
@MiscSample
public class MenuSample extends Composite implements SamplePanel {

    public MenuSample() {
        FlowPanel main = new FlowPanel();

        Menu menubar = new Menu();
        menubar.setWidth("100%");
        main.add(menubar);

        Menu fileMenu = new Menu(true);
        fileMenu.addItem("New", new AlertCommand("'New' was clicked")).setIconStyleName("menu-item-file-new");
        fileMenu.addItem("Open...", new AlertCommand("'Open...' was clicked")).setIconStyleName("menu-item-file-open");
        fileMenu.addSeparator();
        fileMenu.addItem("Save...", new AlertCommand("'Save...' was clicked")).setIconStyleName("menu-item-file-save");
        fileMenu.addItem("Save As...", new AlertCommand("'Save As...' was clicked")).setIconStyleName("menu-item-file-save");
        fileMenu.addSeparator();
        fileMenu.addItem("Exit", new AlertCommand("'Exit' was clicked")).setIconStyleName("menu-item-file-exit");
        menubar.addItem("File", fileMenu);

        Menu editMenu = new Menu(true);
        editMenu.addItem("Undo", new AlertCommand("'Undo' was clicked")).setIconStyleName("menu-item-edit-undo");
        editMenu.addItem("Redo", new AlertCommand("'Redo' was clicked")).setIconStyleName("menu-item-edit-redo");
        editMenu.addSeparator();
        editMenu.addItem("Cut", new AlertCommand("'Cut' was clicked")).setIconStyleName("menu-item-edit-cut");
        editMenu.addItem("Copy", new AlertCommand("'Copy' was clicked")).setIconStyleName("menu-item-edit-copy");
        editMenu.addItem("Paste", new AlertCommand("'Paste' was clicked")).setIconStyleName("menu-item-edit-paste");
        menubar.addItem("Edit", editMenu);

        Menu miscMenu = new Menu(true);
        menubar.addItem("Misc", miscMenu);

        final CheckMenuItem check2 = new CheckMenuItem("Option 2", true);
        final CheckMenuItem check1 = new CheckMenuItem("Enable Option 2", true);
        check1.setCommand(new Command() {
            public void execute() {
                check2.setEnabled(check1.isSelected());
            }
        });
        miscMenu.addItem(check1);
        check2.setCommand(new Command() {
            public void execute() {
                Window.alert("'Option 2' is " + (check2.isSelected() ? "checked" : "unchecked"));
            }
        });
        miscMenu.addItem(check2);

        miscMenu.addSeparator();

        Menu secondary = new Menu(true);
        secondary.addItem("Item 1", new AlertCommand("'Item 1' was clicked"));
        secondary.addItem("Item 2", new AlertCommand("'Item 2' was clicked")).setEnabled(false);
        secondary.addItem("Item 3", new AlertCommand("'Item 3' was clicked"));
        miscMenu.addItem("Items", secondary);

        miscMenu.addSeparator();

        Menu radiosMenu = new Menu(true);

        MenuItemSelectionListener listener = new MenuItemSelectionListener() {
            public void selectionChanged(SelectionMenuItem item) {
                Window.alert("'" + item.getKey() + "' was selected");
            }
        };

        RadioMenuItem radio = new RadioMenuItem("1", "Option 1", false);
        radio.addListener(listener);
        radio.setGroup("options");
        radiosMenu.addItem(radio);

        radio = new RadioMenuItem("2", "Option 2", false);
        radio.addListener(listener);
        radio.setGroup("options");
        radiosMenu.addItem(radio);

        radio = new RadioMenuItem("3", "Option 3", false);
        radio.addListener(listener);
        radio.setGroup("options");
        radiosMenu.addItem(radio);

        miscMenu.addItem("Radios", radiosMenu);


        // context menues

        final MenuPopup contextMenu = new MenuPopup(true);
        contextMenu.addItem("Item 1", new AlertCommand("'Item 1' was clicked"));
        contextMenu.addItem("Item 2", new AlertCommand("'Item 2' was clicked"));
        contextMenu.addItem("Item 3", new AlertCommand("'Item 3' was clicked"));

        Menu subMenu = new Menu(true);
        subMenu.addItem("Option 1", new AlertCommand("'Option 1' was clicked"));
        subMenu.addItem("option2", "Option 2", new AlertCommand("'Option 2' was clicked"));
        subMenu.addItem("Option 3", new AlertCommand("'Option 3' was clicked"));
        contextMenu.addSubMenu("Options", subMenu);

        BasicLabel label = new BasicLabel("Right-click Here");
        label.addContextMenuHandler(new com.google.gwt.event.dom.client.ContextMenuHandler() {
            public void onContextMenu(final ContextMenuEvent event) {
                contextMenu.setPopupPositionAndShow(new Popup.PositionCallback() {
                    public void setPosition(int offsetWidth, int offsetHeight) {
                        int x = event.getNativeEvent().getClientX();
                        int y = event.getNativeEvent().getClientY();
                        contextMenu.setPopupPosition(x, y);
                    }
                });
            }
        });
        main.add(label);
        label.setWidth("150px");
        label.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
        DOM.setStyleAttribute(label.getElement(), "cursor", "default");
        DOM.setStyleAttribute(label.getElement(), "border", "1px solid gray");
        DOM.setStyleAttribute(label.getElement(), "marginTop", "150px");

        final CheckBox checkBox = new CheckBox("Disable Option 2");
        checkBox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
            public void onValueChange(ValueChangeEvent<Boolean> event) {
                MenuItemBase item = contextMenu.getMenu().getItem("Options.option2");
                item.setEnabled(!event.getValue());
            }
        });
        main.add(checkBox);


        initWidget(main);
    }

    public String getName() {
        return "Menus";
    }

    public Widget getContentWidget() {
        return this;
    }

    public void reset() {
    }

    //================================================= Inner Classes ==================================================

    private static class AlertCommand implements Command {

        private final String message;

        private AlertCommand(String message) {
            this.message = message;
        }

        public void execute() {
            Window.alert(message);
        }
    }

    private class ContextMenuMenuContext extends AbstractMenuContext {

        private boolean enabled;

        public void update(MenuItemBase item) {
            item.setEnabled(!("option2".equals(item.getKey()) && enabled));
        }

        public void setEnabled(boolean enabled) {
            this.enabled = enabled;
            fireChange();
        }
    }

}
TOP

Related Classes of org.gwtoolbox.sample.widget.client.misc.MenuSample

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.