Search in sources :

Example 1 with AttachEvent

use of com.google.gwt.event.logical.shared.AttachEvent in project rstudio by rstudio.

the class TextEditingTargetIdleMonitor method beginMonitoring.

public void beginMonitoring() {
    endMonitoring();
    monitors_.add(display_.addEditorModeChangedHandler(new EditorModeChangedEvent.Handler() {

        @Override
        public void onEditorModeChanged(EditorModeChangedEvent event) {
            Scheduler.get().scheduleDeferred(new ScheduledCommand() {

                @Override
                public void execute() {
                    refreshCommands();
                }
            });
        }
    }));
    monitors_.add(display_.addCursorChangedHandler(new CursorChangedHandler() {

        @Override
        public void onCursorChanged(CursorChangedEvent event) {
            mouseMovedLast_ = false;
            timer_.schedule(DELAY_MS);
        }
    }));
    monitors_.add(display_.addAttachHandler(new AttachEvent.Handler() {

        @Override
        public void onAttachOrDetach(AttachEvent event) {
            if (!event.isAttached())
                onDetach();
        }
    }));
}
Also used : EditorModeChangedEvent(org.rstudio.studio.client.workbench.views.source.editors.text.events.EditorModeChangedEvent) ScheduledCommand(com.google.gwt.core.client.Scheduler.ScheduledCommand) AttachEvent(com.google.gwt.event.logical.shared.AttachEvent) CursorChangedHandler(org.rstudio.studio.client.workbench.views.source.editors.text.events.CursorChangedHandler) NativePreviewHandler(com.google.gwt.user.client.Event.NativePreviewHandler) CursorChangedHandler(org.rstudio.studio.client.workbench.views.source.editors.text.events.CursorChangedHandler) CursorChangedEvent(org.rstudio.studio.client.workbench.views.source.editors.text.events.CursorChangedEvent)

Example 2 with AttachEvent

use of com.google.gwt.event.logical.shared.AttachEvent in project rstudio by rstudio.

the class EventBus method addHandler.

/**
    * Similar to 2-arg form of addHandler, but automatically removes handler
    * when the HasAttachHandlers object detaches.
    *
    * If the HasAttachHandlers object detaches and reattaches, the handler
    * will NOT automatically resubscribe.
    */
public <H extends EventHandler> void addHandler(HasAttachHandlers removeWhenDetached, Type<H> type, H handler) {
    final HandlerRegistration reg = addHandler(type, handler);
    removeWhenDetached.addAttachHandler(new Handler() {

        @Override
        public void onAttachOrDetach(AttachEvent event) {
            if (!event.isAttached())
                reg.removeHandler();
        }
    });
}
Also used : HandlerRegistration(com.google.gwt.event.shared.HandlerRegistration) AttachEvent(com.google.gwt.event.logical.shared.AttachEvent) EventHandler(com.google.gwt.event.shared.EventHandler) Handler(com.google.gwt.event.logical.shared.AttachEvent.Handler)

Example 3 with AttachEvent

use of com.google.gwt.event.logical.shared.AttachEvent in project rstudio by rstudio.

the class ModifyKeyboardShortcutsWidget method createMainWidget.

@Override
protected Widget createMainWidget() {
    resetState();
    setEscapeDisabled(true);
    setEnterDisabled(true);
    previewHandler_ = Event.addNativePreviewHandler(new NativePreviewHandler() {

        @Override
        public void onPreviewNativeEvent(NativePreviewEvent preview) {
            if (swallowNextKeyUpEvent_ && preview.getTypeInt() == Event.ONKEYUP) {
                swallowNextKeyUpEvent_ = false;
                preview.cancel();
                preview.getNativeEvent().stopPropagation();
                preview.getNativeEvent().preventDefault();
            } else if (preview.getTypeInt() == Event.ONKEYDOWN) {
                int keyCode = preview.getNativeEvent().getKeyCode();
                if (keyCode == KeyCodes.KEY_ESCAPE || keyCode == KeyCodes.KEY_ENTER) {
                    // If the DataGrid (or an underlying element) has focus, let it
                    // handle the escape / enter key.
                    Element target = preview.getNativeEvent().getEventTarget().cast();
                    Element foundTable = DomUtils.findParentElement(target, new ElementPredicate() {

                        @Override
                        public boolean test(Element el) {
                            return el.equals(table_.getElement());
                        }
                    });
                    if (foundTable != null)
                        return;
                    // the widget.
                    if (filterWidget_.isFocused()) {
                        if (keyCode == KeyCodes.KEY_ENTER) {
                            table_.setKeyboardSelectedRow(0);
                            table_.setKeyboardSelectedColumn(0);
                            return;
                        } else if (keyCode == KeyCodes.KEY_ESCAPE) {
                            focusOkButton();
                            return;
                        }
                    }
                    // Otherwise, handle Enter / Escape 'modally' as we might normally do.
                    preview.cancel();
                    preview.getNativeEvent().stopPropagation();
                    preview.getNativeEvent().preventDefault();
                    if (keyCode == KeyCodes.KEY_ENTER) {
                        clickOkButton();
                        return;
                    } else if (keyCode == KeyCodes.KEY_ESCAPE) {
                        closeDialog();
                        return;
                    }
                }
            }
        }
    });
    addAttachHandler(new AttachEvent.Handler() {

        @Override
        public void onAttachOrDetach(AttachEvent event) {
            if (event.isAttached())
                ;
            else
                previewHandler_.removeHandler();
        }
    });
    VerticalPanel container = new VerticalPanel();
    FlowPanel headerPanel = new FlowPanel();
    Label radioLabel = new Label("Show:");
    radioLabel.getElement().getStyle().setFloat(Style.Float.LEFT);
    radioLabel.getElement().getStyle().setMarginRight(8, Unit.PX);
    headerPanel.add(radioLabel);
    headerPanel.add(radioAll_);
    radioAll_.setValue(true);
    headerPanel.add(radioCustomized_);
    filterWidget_.getElement().getStyle().setFloat(Style.Float.LEFT);
    filterWidget_.getElement().getStyle().setMarginLeft(10, Unit.PX);
    filterWidget_.getElement().getStyle().setMarginTop(-1, Unit.PX);
    headerPanel.add(filterWidget_);
    HelpLink link = new HelpLink("Customizing Keyboard Shortcuts", "custom_keyboard_shortcuts");
    link.getElement().getStyle().setFloat(Style.Float.RIGHT);
    headerPanel.add(link);
    container.add(headerPanel);
    FlowPanel spacer = new FlowPanel();
    spacer.setWidth("100%");
    spacer.setHeight("4px");
    container.add(spacer);
    DockPanel dockPanel = new DockPanel();
    dockPanel.add(table_, DockPanel.CENTER);
    container.add(dockPanel);
    return container;
}
Also used : NativePreviewHandler(com.google.gwt.user.client.Event.NativePreviewHandler) NativePreviewEvent(com.google.gwt.user.client.Event.NativePreviewEvent) VerticalPanel(com.google.gwt.user.client.ui.VerticalPanel) AttachEvent(com.google.gwt.event.logical.shared.AttachEvent) DockPanel(com.google.gwt.user.client.ui.DockPanel) Element(com.google.gwt.dom.client.Element) TableRowElement(com.google.gwt.dom.client.TableRowElement) FlowPanel(com.google.gwt.user.client.ui.FlowPanel) Label(com.google.gwt.user.client.ui.Label) HelpLink(org.rstudio.studio.client.common.HelpLink) ElementPredicate(org.rstudio.core.client.dom.DomUtils.ElementPredicate)

Aggregations

AttachEvent (com.google.gwt.event.logical.shared.AttachEvent)3 NativePreviewHandler (com.google.gwt.user.client.Event.NativePreviewHandler)2 ScheduledCommand (com.google.gwt.core.client.Scheduler.ScheduledCommand)1 Element (com.google.gwt.dom.client.Element)1 TableRowElement (com.google.gwt.dom.client.TableRowElement)1 Handler (com.google.gwt.event.logical.shared.AttachEvent.Handler)1 EventHandler (com.google.gwt.event.shared.EventHandler)1 HandlerRegistration (com.google.gwt.event.shared.HandlerRegistration)1 NativePreviewEvent (com.google.gwt.user.client.Event.NativePreviewEvent)1 DockPanel (com.google.gwt.user.client.ui.DockPanel)1 FlowPanel (com.google.gwt.user.client.ui.FlowPanel)1 Label (com.google.gwt.user.client.ui.Label)1 VerticalPanel (com.google.gwt.user.client.ui.VerticalPanel)1 ElementPredicate (org.rstudio.core.client.dom.DomUtils.ElementPredicate)1 HelpLink (org.rstudio.studio.client.common.HelpLink)1 CursorChangedEvent (org.rstudio.studio.client.workbench.views.source.editors.text.events.CursorChangedEvent)1 CursorChangedHandler (org.rstudio.studio.client.workbench.views.source.editors.text.events.CursorChangedHandler)1 EditorModeChangedEvent (org.rstudio.studio.client.workbench.views.source.editors.text.events.EditorModeChangedEvent)1