public NativityMessage GetContextMenuItems (NativityMessage message) { var currentFilesJArray = message.Value as JArray; var currentFiles = currentFilesJArray.Cast<string>(); var contextMenuItems = this.GetContextMenuItems(currentFiles); return new NativityMessage(Constants.MENU_ITEMS, contextMenuItems); }
/// <summary> /// Triggers the appropriate registered MessageListener when messages are /// received from the native service. /// </summary> /// <returns>NativityMessage to send back to the native service. Returns null /// if no registered MessageListener is found or if no response /// needs to be sent back to the native service.</returns> /// <param name="message">NativityMessage received from the native service</param> public NativityMessage FireMessage (NativityMessage message) { // This causes too much SPAM in the log //logger.DebugFormat("Firing message: {0}", message.Command); MessageListener messageListener; lock (this.commandMap) { if (!this.commandMap.TryGetValue (message.Command, out messageListener)) { logger.WarnFormat ("Can not handle message: {0}", message.Command); return null; } } return messageListener (message); }
private NativityMessage GetFileIconId (NativityMessage message) { var icon = -1; try { if (null != message) { if (null != message.Value) { string filePath = null; if (message.Value is JArray) { var filePaths = ((JArray)message.Value).Cast<string>(); filePath = filePaths.FirstOrDefault(); } else { filePath = message.Value.ToString(); } icon = this.GetIconForFile(filePath); } else { log.WarnFormat("message value is null, message: {0}\n{1}", message.Command, Environment.StackTrace); } } else { log.WarnFormat("message is null\n{0}", Environment.StackTrace); } } catch (Exception e) { log.Warn("Can not get an icon overlay", e); } return new NativityMessage(Constants.GET_FILE_ICON_ID, icon); }
public override int RegisterMenuIcon (string path) { var message = new NativityMessage (Constants.REGISTER_MENU_ICON, path); var reply = nativityControl.SendMessage (message); if (string.IsNullOrEmpty (reply)) { return -1; } int replyInt; if (int.TryParse (reply, out replyInt)) { return replyInt; } else { return -1; } }
public NativityMessage RaiseContextMenuItem_Selected (NativityMessage nativityMessage) { var message = nativityMessage.Value as JObject; if (null == message) { return null; } JToken uuidToken; if (message.TryGetValue("uuid", out uuidToken)) { Guid uuid; try { uuid = (Guid)uuidToken; } catch { log.ErrorFormat("{0}, ({1}), is not a valid Guid", uuidToken, uuidToken.GetType()); return null; } JToken filesToken; if (message.TryGetValue("files", out filesToken)) { if (filesToken is JArray) { var files = ((JArray)filesToken).Cast<string>(); this.RaiseContextMenu_Selected(uuid, files); } } } return null; }
public override void EnableFileIcons() { var message = new NativityMessage(Constants.ENABLE_FILE_ICONS_WITH_CALLBACK, true); this.nativityControl.SendMessage(message); }
public override void RemoveFileIcons (IEnumerable<string> paths) { var list = new List<string> (LinuxFileIconControlBaseImpl.MESSAGE_BUFFER_SIZE); foreach (var path in paths) { list.Add (path); if (list.Count >= LinuxFileIconControlBaseImpl.MESSAGE_BUFFER_SIZE) { var message = new NativityMessage (Constants.REMOVE_FILE_ICONS, list); this.nativityControl.SendMessage (message); list.Clear (); } } if (list.Count > 0) { var message = new NativityMessage (Constants.REMOVE_FILE_ICONS, list); this.nativityControl.SendMessage (message); } }
public override void RemoveFileIcon(string path) { var message = new NativityMessage(Constants.REMOVE_FILE_ICONS, new string[] { path }); this.nativityControl.SendMessage(message); }
public override void DisableFileIcons() { var message = new NativityMessage(Constants.ENABLE_FILE_ICONS, false); this.nativityControl.SendMessage(message); }
public override void UnregisterIcon(int id) { var message = new NativityMessage(Constants.UNREGISTER_ICON, id); this.nativityControl.SendMessage(message); }
public override void SetFileIcons(IDictionary<string, int> fileIconsMap) { var message = new NativityMessage(Constants.REPAINT_ALL_ICONS, string.Empty); this.nativityControl.SendMessage(message); }
public override void CheckSocketConnection(object state) { try { if((this.commandSocket.Available == 0 && commandSocket.Client.Poll((int)SOCKETCONNECTED_POLL_TIME.TotalMilliseconds, SelectMode.SelectRead)) || this.callbackSocket.Available == 0 && callbackSocket.Client.Poll((int)SOCKETCONNECTED_POLL_TIME.TotalMilliseconds, SelectMode.SelectRead)) { logger.Error("CheckConnection failed restarting connection."); this.Disconnect(); this.OnSocketRestart (); return; } else { var message = new NativityMessage(Constants.CHECK_SOCKET_CONNECTION, string.Empty); var checkMessageString = JsonConvert.SerializeObject(message); this.callbackOutputStream.WriteLine(checkMessageString); } UnixNativityControlBaseImpl.timer.Change (this.checkSocketConnectionInterval, UnixNativityControlBaseImpl.infiniteTimeSpan); } catch(Exception ex) { logger.Error("CheckConnection failed restarting connection", ex); this.Disconnect(); this.OnSocketRestart (); } return; }
public override void RemoveFileIcons(IEnumerable <string> paths) { var message = new NativityMessage(Constants.REPAINT_ALL_ICONS, string.Empty); this.nativityControl.SendMessage(message); }
public override void RemoveFileIcons (IEnumerable<string> paths) { var message = new NativityMessage (Constants.REPAINT_ALL_ICONS, string.Empty); this.nativityControl.SendMessage (message); }
public override void SetFileIcon(string path, int iconId) { var message = new NativityMessage(Constants.REPAINT_ALL_ICONS, string.Empty); this.nativityControl.SendMessage(message); }
public override string SendMessage(NativityMessage message) { if (false == this.connected) { logger.Warn("SendMessage : LiferayNativity is not connected"); this.Disconnect(); this.OnSocketRestart (); return string.Empty; } try { var messageString = JsonConvert.SerializeObject(message); this.commandOutputStream.WriteLine(messageString); /* log4net doesn't support trace if (_logger.isTraceEnabled()) { _logger.trace( "Sent on socket {}: {}", _commandSocketPort, messageString); }*/ var reply = this.commandBufferedReader.ReadLine(); /* log4net doesn't support trace if (_logger.isTraceEnabled()) { _logger.trace( "Received on socket {}: {}", _commandSocketPort, reply); }*/ if (reply == null) { this.commandSocket.Close(); this.OnSocketClosed(); } return reply; } catch (IOException e) { logger.Error("SendMessage : LiferayNativity is not connected", e); this.connected = false; this.OnSocketClosed(); return string.Empty; } }
public override void RemoveAllFileIcons() { var message = new NativityMessage(Constants.REMOVE_ALL_FILE_ICONS, string.Empty); this.nativityControl.SendMessage(message); }
public override void SetFileIcon(string path, int iconId) { var map = new Dictionary<string, int>(1); map[path] = iconId; var message = new NativityMessage(Constants.SET_FILE_ICONS, map); this.nativityControl.SendMessage(message); }
public override void SetFileIcons(IDictionary<string, int> fileIconsMap) { var map = new Dictionary<string, int>(LinuxFileIconControlBaseImpl.MESSAGE_BUFFER_SIZE); foreach (var entry in fileIconsMap) { map[entry.Key] = entry.Value; if (map.Count >= LinuxFileIconControlBaseImpl.MESSAGE_BUFFER_SIZE) { var message = new NativityMessage(Constants.SET_FILE_ICONS, map); this.nativityControl.SendMessage(message); map.Clear(); } } if (map.Count > 0) { var message = new NativityMessage(Constants.SET_FILE_ICONS, map); this.nativityControl.SendMessage(message); } }
/// <summary> /// Mac only /// /// Used by modules to send messages to the native service. /// </summary> /// <returns>response from the native service</returns> /// <param name="message">NativityMessage to send to the native service</param> public virtual string SendMessage(NativityMessage message) { return string.Empty; }