Esempio n. 1
0
        internal Docking(Finsemble _bridge, string channel)
        {
            Application.Current.Dispatcher.Invoke(delegate             //main thread
            {
                this.bridge                 = _bridge;
                routerClient                = bridge.RouterClient;
                this.dockingChannel         = channel;
                this.dockingWindow          = bridge.window;
                this.dockingWindowName      = bridge.windowName;
                dockingWindow.Loaded       += Window_Loaded;
                dockingWindow.Closing      += Window_Closing;
                dockingWindow.Activated    += Window_Activated;
                dockingWindow.StateChanged += DockingWindow_StateChanged;
                bridge.Subscribe(dockingChannel, Got_Docking_Message);                                                    // Finsemble 2.3
                routerClient.AddListener("FinsembleNativeActions." + bridge.windowName, Got_Docking_Message_Over_Router); // Finsemble 2.5+
                //dockingWindow.GotMouseCapture += DockingWindow_GotMouseCapture;
                //dockingWindow.LostMouseCapture += DockingWindow_LostMouseCapture;
                //MouseWatcher.OnMouseInput += MouseWatcher_OnMouseInput;

                /*routerClient.AddListener("LauncherService.shutdownRequest", (s, e) =>
                 * {
                 *      sendCloseToFinsemble = false;
                 * });*/
            });
        }
Esempio n. 2
0
        private void UpdateListeners()
        {
            //if (_useExplicitChannels) return;
            // Remove listeners
            for (var i = channelListenerList.Count - 1; i >= 0; i--)
            {
                var item = channelListenerList[i];
                if (channels.Where(jt => jt.Value <string>() == item.ToString()).Count() == 0)
                {
                    channelListenerList.RemoveAt(i);
                    routerClient.RemoveListener(item.ToString(), handleListeners);
                }
            }

            // Add new ones
            foreach (var item in channels)
            {
                if (!channelListenerList.Contains(item.ToString()))
                {
                    channelListenerList.Add(item.ToString());
                    routerClient.AddListener(item.ToString(), handleListeners);
                }
            }
        }
Esempio n. 3
0
        private void RPC(string endpoint, List <JToken> args, EventHandler <FinsembleEventArgs> cb)
        {
            switch (endpoint)
            {
            case "RouterClient.transmit":
                RouterClient.Transmit((string)args[0], args[1]);
                break;

            case "RouterClient.addListener":
                RouterClient.AddListener((string)args[0], cb);
                break;

            case "RouterClient.removeListener":
                RouterClient.RemoveListener((string)args[0], cb);
                break;

            case "RouterClient.publish":
                RouterClient.Publish((string)args[0], args[1]);
                break;

            case "RouterClient.subscribe":
                RouterClient.Subscribe((string)args[0], cb);
                break;

            case "RouterClient.unsubscribe":
                RouterClient.Unsubscribe((string)args[0], cb);
                break;

            case "RouterClient.query":
                RouterClient.Query((string)args[0], args[1], args[2] as JObject, cb);
                break;

            case "LinkerClient.publish":
                LinkerClient.Publish(args[0] as JObject);
                break;

            case "LinkerClient.subscribe":
                LinkerClient.Subscribe((string)args[0], cb);
                break;

            case "LauncherClient.spawn":
                LauncherClient.Spawn((string)args[0], args[1] as JObject, cb);
                break;

            case "LauncherClient.showWindow":
                LauncherClient.ShowWindow(args[0] as JObject, args[1] as JObject, cb);
                break;

            case "ConfigClient.getValue":
                ConfigClient.GetValue(args[0] as JObject, cb);
                break;

            case "AuthenticationClient.publishAuthorization":
                authenticationClient.PublishAuthorization <JObject>((string)args[0], args[1] as JObject);
                break;

            case "AuthenticationClient.getCurrentCredentials":
                authenticationClient.GetCurrentCredentials <JObject>((s, a) =>
                {
                    cb(this, new FinsembleEventArgs(null, a));
                });
                break;

            case "Logger.error":
                JToken[] argsArray = args.ToArray();
                logger.Error(argsArray);
                break;

            case "Logger.warn":
                logger.Warn(args.ToArray());
                break;

            case "Logger.log":
                logger.Log(args.ToArray());
                break;

            case "Logger.info":
                logger.Info(args.ToArray());
                break;

            case "Logger.debug":
                logger.Debug(args.ToArray());
                break;

            case "Logger.verbose":
                logger.Verbose(args.ToArray());
                break;

            default:
                throw new Exception("This API does not exist or is not yet supported");
            }
        }
Esempio n. 4
0
        public DragAndDropClient(Finsemble bridge)
        {
            this.bridge  = bridge;
            routerClient = bridge.RouterClient;

            routerClient.AddListener(DRAG_START_CHANNEL, (s, args) =>
            {
                if (scrim == null)
                {
                    return;
                }
                var dataBeingShared = (args.response?["data"] as JArray).ToObject <List <string> >();
                dynamic a           = scrim;
                if ((string)args.response["header"]["origin"] != "RouterClient." + bridge.windowName && CanReceiveData(dataBeingShared))
                {
                    Application.Current.Dispatcher.Invoke(delegate
                    {
                        scrim.AllowDrop = true;
                        try
                        {
                            a.Text = "*";
                        }
                        catch
                        {
                            try
                            {
                                a.Content = "*";
                            }
                            catch
                            {
                            }
                        }
                        scrim.Background = new SolidColorBrush(Color.FromArgb(237, 32, 104, 195));
                        scrim.Visibility = Visibility.Visible;
                    });
                }
                else
                {
                    Application.Current.Dispatcher.Invoke(delegate
                    {
                        scrim.AllowDrop = false;
                        try
                        {
                            a.Text = "D";
                        }
                        catch
                        {
                            try
                            {
                                a.Content = "D";
                            }
                            catch
                            {
                            }
                        }
                        scrim.Background = new SolidColorBrush(Color.FromArgb(237, 150, 10, 5));
                        scrim.Visibility = Visibility.Visible;
                    });
                }
            });

            routerClient.AddListener(DRAG_END_CHANNEL, (s, args) =>
            {
                if (scrim == null)
                {
                    return;
                }
                Application.Current.Dispatcher.Invoke(delegate
                {
                    scrim.Visibility = Visibility.Hidden;
                });
            });
        }