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; * });*/ }); }
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); } } }
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"); } }
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; }); }); }