Search in sources :

Example 21 with MenuItem

use of com.google.gwt.user.client.ui.MenuItem in project rstudio by rstudio.

the class ChunkContextToolbar method createMenuItemForType.

private MenuItem createMenuItemForType(final AppCommand command, final String chunkType) {
    SafeHtml menuHTML = new SafeHtmlBuilder().appendHtmlConstant(command.getMenuHTML(false)).toSafeHtml();
    MenuItem menuItem = new MenuItem(menuHTML, new Command() {

        public void execute() {
            host_.switchChunk(chunkType);
        }
    });
    return menuItem;
}
Also used : AppCommand(org.rstudio.core.client.command.AppCommand) Command(com.google.gwt.user.client.Command) SafeHtml(com.google.gwt.safehtml.shared.SafeHtml) MenuItem(com.google.gwt.user.client.ui.MenuItem) SafeHtmlBuilder(com.google.gwt.safehtml.shared.SafeHtmlBuilder)

Example 22 with MenuItem

use of com.google.gwt.user.client.ui.MenuItem in project rstudio by rstudio.

the class TextEditingTargetPresentationHelper method buildSlideMenu.

public void buildSlideMenu(final String path, boolean isDirty, final EditingTarget editor, final CommandWithArg<StatusBarPopupRequest> onCompleted) {
    // rpc response handler
    SimpleRequestCallback<SlideNavigation> requestCallback = new SimpleRequestCallback<SlideNavigation>() {

        @Override
        public void onResponseReceived(SlideNavigation slideNavigation) {
            // create the menu and make sure we have some slides to return
            StatusBarPopupMenu menu = new StatusBarPopupMenu();
            if (slideNavigation.getTotalSlides() == 0) {
                onCompleted.execute(new StatusBarPopupRequest(menu, null));
                return;
            }
            MenuItem defaultMenuItem = null;
            int length = slideNavigation.getItems().length();
            for (int i = 0; i < length; i++) {
                SlideNavigationItem item = slideNavigation.getItems().get(i);
                String title = item.getTitle();
                if (StringUtil.isNullOrEmpty(title))
                    title = "(Untitled Slide)";
                StringBuilder indentBuilder = new StringBuilder();
                for (int level = 0; level < item.getIndent(); level++) indentBuilder.append("&nbsp;&nbsp;");
                SafeHtmlBuilder labelBuilder = new SafeHtmlBuilder();
                labelBuilder.appendHtmlConstant(indentBuilder.toString());
                labelBuilder.appendEscaped(title);
                final int targetSlide = i;
                final MenuItem menuItem = new MenuItem(labelBuilder.toSafeHtml(), new Command() {

                    public void execute() {
                        navigateToSlide(editor, targetSlide);
                    }
                });
                menu.addItem(menuItem);
                // see if this is the default menu item
                if (defaultMenuItem == null && item.getLine() >= (docDisplay_.getSelectionStart().getRow())) {
                    defaultMenuItem = menuItem;
                }
            }
            StatusBarPopupRequest request = new StatusBarPopupRequest(menu, defaultMenuItem);
            onCompleted.execute(request);
        }
    };
    // send code over the wire if we are dirty
    if (isDirty) {
        server_.getSlideNavigationForCode(docDisplay_.getCode(), FileSystemItem.createFile(path).getParentPathString(), requestCallback);
    } else {
        server_.getSlideNavigationForFile(path, requestCallback);
    }
}
Also used : ScheduledCommand(com.google.gwt.core.client.Scheduler.ScheduledCommand) Command(com.google.gwt.user.client.Command) StatusBarPopupMenu(org.rstudio.studio.client.workbench.views.source.editors.text.status.StatusBarPopupMenu) StatusBarPopupRequest(org.rstudio.studio.client.workbench.views.source.editors.text.status.StatusBarPopupRequest) MenuItem(com.google.gwt.user.client.ui.MenuItem) SlideNavigation(org.rstudio.studio.client.common.presentation.model.SlideNavigation) SafeHtmlBuilder(com.google.gwt.safehtml.shared.SafeHtmlBuilder) SlideNavigationItem(org.rstudio.studio.client.common.presentation.model.SlideNavigationItem) SimpleRequestCallback(org.rstudio.studio.client.common.SimpleRequestCallback)

Example 23 with MenuItem

use of com.google.gwt.user.client.ui.MenuItem in project rstudio by rstudio.

the class TextEditingTarget method addFunctionsToMenu.

private MenuItem addFunctionsToMenu(StatusBarPopupMenu menu, final JsArray<Scope> funcs, String indent, Scope defaultFunction, boolean includeNoFunctionsMessage) {
    MenuItem defaultMenuItem = null;
    if (funcs.length() == 0 && includeNoFunctionsMessage) {
        String type = fileType_.canExecuteChunks() ? "chunks" : "functions";
        MenuItem noFunctions = new MenuItem("(No " + type + " defined)", false, (Command) null);
        noFunctions.setEnabled(false);
        noFunctions.getElement().addClassName("disabled");
        menu.addItem(noFunctions);
    }
    for (int i = 0; i < funcs.length(); i++) {
        final Scope func = funcs.get(i);
        String childIndent = indent;
        if (!StringUtil.isNullOrEmpty(func.getLabel())) {
            SafeHtmlBuilder labelBuilder = new SafeHtmlBuilder();
            labelBuilder.appendHtmlConstant(indent);
            labelBuilder.appendEscaped(func.getLabel());
            final MenuItem menuItem = new MenuItem(labelBuilder.toSafeHtml(), new Command() {

                public void execute() {
                    docDisplay_.navigateToPosition(toSourcePosition(func), true);
                }
            });
            addScopeStyle(menuItem, func);
            menu.addItem(menuItem);
            childIndent = indent + "&nbsp;&nbsp;";
            if (defaultFunction != null && defaultMenuItem == null && func.getLabel().equals(defaultFunction.getLabel()) && func.getPreamble().getRow() == defaultFunction.getPreamble().getRow() && func.getPreamble().getColumn() == defaultFunction.getPreamble().getColumn()) {
                defaultMenuItem = menuItem;
            }
        }
        MenuItem childDefaultMenuItem = addFunctionsToMenu(menu, func.getChildren(), childIndent, defaultMenuItem == null ? defaultFunction : null, false);
        if (childDefaultMenuItem != null)
            defaultMenuItem = childDefaultMenuItem;
    }
    return defaultMenuItem;
}
Also used : ScheduledCommand(com.google.gwt.core.client.Scheduler.ScheduledCommand) RepeatingCommand(com.google.gwt.core.client.Scheduler.RepeatingCommand) Command(com.google.gwt.user.client.Command) AppCommand(org.rstudio.core.client.command.AppCommand) MenuItem(com.google.gwt.user.client.ui.MenuItem) JsArrayString(com.google.gwt.core.client.JsArrayString) SafeHtmlBuilder(com.google.gwt.safehtml.shared.SafeHtmlBuilder) Breakpoint(org.rstudio.studio.client.common.debugging.model.Breakpoint)

Example 24 with MenuItem

use of com.google.gwt.user.client.ui.MenuItem in project rstudio by rstudio.

the class TextEditingTarget method createMenuItemForType.

private MenuItem createMenuItemForType(final TextFileType type) {
    SafeHtmlBuilder labelBuilder = new SafeHtmlBuilder();
    labelBuilder.appendEscaped(type.getLabel());
    MenuItem menuItem = new MenuItem(labelBuilder.toSafeHtml(), new Command() {

        public void execute() {
            docUpdateSentinel_.changeFileType(type.getTypeId(), new SaveProgressIndicator(null, type, null));
            Scheduler.get().scheduleDeferred(new ScheduledCommand() {

                @Override
                public void execute() {
                    focus();
                }
            });
        }
    });
    return menuItem;
}
Also used : ScheduledCommand(com.google.gwt.core.client.Scheduler.ScheduledCommand) ScheduledCommand(com.google.gwt.core.client.Scheduler.ScheduledCommand) RepeatingCommand(com.google.gwt.core.client.Scheduler.RepeatingCommand) Command(com.google.gwt.user.client.Command) AppCommand(org.rstudio.core.client.command.AppCommand) MenuItem(com.google.gwt.user.client.ui.MenuItem) SafeHtmlBuilder(com.google.gwt.safehtml.shared.SafeHtmlBuilder)

Aggregations

MenuItem (com.google.gwt.user.client.ui.MenuItem)24 Command (com.google.gwt.user.client.Command)8 SafeHtmlBuilder (com.google.gwt.safehtml.shared.SafeHtmlBuilder)7 AppCommand (org.rstudio.core.client.command.AppCommand)7 MenuBar (com.google.gwt.user.client.ui.MenuBar)5 ScheduledCommand (com.google.gwt.core.client.Scheduler.ScheduledCommand)4 Test (org.junit.Test)4 JsArrayString (com.google.gwt.core.client.JsArrayString)3 RepeatingCommand (com.google.gwt.core.client.Scheduler.RepeatingCommand)3 ToolbarPopupMenu (org.rstudio.core.client.widget.ToolbarPopupMenu)3 StatusBarPopupMenu (org.rstudio.studio.client.workbench.views.source.editors.text.status.StatusBarPopupMenu)3 Scheduler (com.google.gwt.core.client.Scheduler)2 SafeHtml (com.google.gwt.safehtml.shared.SafeHtml)2 Event (com.google.gwt.user.client.Event)2 PositionCallback (com.google.gwt.user.client.ui.PopupPanel.PositionCallback)2 SlideNavigationItem (org.rstudio.studio.client.common.presentation.model.SlideNavigationItem)2 StatusBarPopupRequest (org.rstudio.studio.client.workbench.views.source.editors.text.status.StatusBarPopupRequest)2 JsArray (com.google.gwt.core.client.JsArray)1 Label (com.google.gwt.user.client.ui.Label)1 UIObject (com.google.gwt.user.client.ui.UIObject)1