1 /*
2  * AceAfterCommandExecutedEvent.java
3  *
4  * Copyright (C) 2021 by RStudio, PBC
5  *
6  * Unless you have received this program directly from RStudio pursuant
7  * to the terms of a commercial license agreement with RStudio, then
8  * this program is licensed to you under the terms of version 3 of the
9  * GNU Affero General Public License. This program is distributed WITHOUT
10  * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
11  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
12  * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
13  *
14  */
15 package org.rstudio.studio.client.workbench.views.source.editors.text.ace;
16 
17 import com.google.gwt.core.client.JavaScriptObject;
18 import com.google.gwt.event.shared.EventHandler;
19 import com.google.gwt.event.shared.GwtEvent;
20 
21 public class AceAfterCommandExecutedEvent extends GwtEvent<AceAfterCommandExecutedEvent.Handler>
22 {
AceAfterCommandExecutedEvent()23    public AceAfterCommandExecutedEvent()
24    {
25       this(nullEvent());
26    }
27 
AceAfterCommandExecutedEvent(JavaScriptObject event)28    public AceAfterCommandExecutedEvent(JavaScriptObject event)
29    {
30       event_ = event;
31    }
32 
getCommandData()33    public JavaScriptObject getCommandData()
34    {
35       return event_;
36    }
37 
isChainEvent()38    public boolean isChainEvent()
39    {
40       return isChainEvent(event_);
41    }
42 
isChainEvent(JavaScriptObject event)43    private static final native boolean isChainEvent(JavaScriptObject event) /*-{
44       if (event == null)
45          return true;
46       var command = event.command;
47       return command === "null" || command === "chainKeys";
48    }-*/;
49 
50    private final JavaScriptObject event_;
51 
nullEvent()52    private static native final JavaScriptObject nullEvent() /*-{
53       return {command: "null"};
54    }-*/;
55 
56    // Boilerplate ----
57 
58    public interface Handler extends EventHandler
59    {
onAceAfterCommandExecuted(AceAfterCommandExecutedEvent event)60       void onAceAfterCommandExecuted(AceAfterCommandExecutedEvent event);
61    }
62 
63    @Override
getAssociatedType()64    public Type<Handler> getAssociatedType()
65    {
66       return TYPE;
67    }
68 
69    @Override
dispatch(Handler handler)70    protected void dispatch(Handler handler)
71    {
72       handler.onAceAfterCommandExecuted(this);
73    }
74 
75    public static final Type<Handler> TYPE = new Type<>();
76 }
77