Search in sources :

Example 1 with SlideNavigationItem

use of org.rstudio.studio.client.common.presentation.model.SlideNavigationItem in project rstudio by rstudio.

the class SlideNavigationPresenter method onSlideNavigationChanged.

@Override
public void onSlideNavigationChanged(SlideNavigationChangedEvent event) {
    slideNavigation_ = event.getNavigation();
    SlideNavigationMenu navigationMenu = view_.getNavigationMenu();
    navigationMenu.clear();
    if (slideNavigation_ != null) {
        JsArray<SlideNavigationItem> items = slideNavigation_.getItems();
        for (int i = 0; i < items.length(); i++) {
            // get slide
            final SlideNavigationItem item = items.get(i);
            // build html
            SafeHtmlBuilder menuHtml = new SafeHtmlBuilder();
            for (int j = 0; j < item.getIndent(); j++) menuHtml.appendHtmlConstant("&nbsp;&nbsp;&nbsp;");
            menuHtml.appendEscaped(item.getTitle());
            navigationMenu.addItem(new MenuItem(menuHtml.toSafeHtml(), new Command() {

                @Override
                public void execute() {
                    view_.navigate(item.getIndex());
                }
            }));
        }
        navigationMenu.setVisible(true);
        navigationMenu.setDropDownVisible(slideNavigation_.getItems().length() > 1);
    } else {
        navigationMenu.setVisible(false);
    }
}
Also used : Command(com.google.gwt.user.client.Command) MenuItem(com.google.gwt.user.client.ui.MenuItem) SafeHtmlBuilder(com.google.gwt.safehtml.shared.SafeHtmlBuilder) SlideNavigationItem(org.rstudio.studio.client.common.presentation.model.SlideNavigationItem)

Example 2 with SlideNavigationItem

use of org.rstudio.studio.client.common.presentation.model.SlideNavigationItem 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)

Aggregations

SafeHtmlBuilder (com.google.gwt.safehtml.shared.SafeHtmlBuilder)2 Command (com.google.gwt.user.client.Command)2 MenuItem (com.google.gwt.user.client.ui.MenuItem)2 SlideNavigationItem (org.rstudio.studio.client.common.presentation.model.SlideNavigationItem)2 ScheduledCommand (com.google.gwt.core.client.Scheduler.ScheduledCommand)1 SimpleRequestCallback (org.rstudio.studio.client.common.SimpleRequestCallback)1 SlideNavigation (org.rstudio.studio.client.common.presentation.model.SlideNavigation)1 StatusBarPopupMenu (org.rstudio.studio.client.workbench.views.source.editors.text.status.StatusBarPopupMenu)1 StatusBarPopupRequest (org.rstudio.studio.client.workbench.views.source.editors.text.status.StatusBarPopupRequest)1