public FileIconControlBase(
			NativityControl nativityControl,
			FileIconControlCallback fileIconControlCallback)
		{
			this.nativityControl = nativityControl;
			this.fileIconControlCallback = fileIconControlCallback;

			this.nativityControl.RegisterMessageListener(Constants.GET_FILE_ICON_ID, this.GetFileIconId);
		}
		public static IFileIconControl GetFileIconControl(
			NativityControl nativityControl,
			FileIconControlCallback fileIconControlCallback) {

			if (OSDetector.IsApple)
			{
				return new Unix.AppleFileIconControlImpl(nativityControl, fileIconControlCallback);
			}
			/*else if (OSDetector.isWindows()) {
				return new WindowsFileIconControlImpl(nativityControl, fileIconControlCallback);
			}
			else if (OSDetector.isLinux()) {
				return new LinuxFileIconControlImpl(nativityControl, fileIconControlCallback);
			}*/
			
			return null;
		}
		public static ContextMenuControl GetContextMenuControl(
			NativityControl nativityControl,
			ContextMenuControlCallback contextMenuControlCallback) 
		{
			if (OSDetector.IsApple)
			{
				return new Unix.AppleContextMenuControlImpl(nativityControl, contextMenuControlCallback);
			}
			/*else if (OSDetector.isWindows()) {
				return new WindowsContextMenuControlImpl(
					nativityControl, contextMenuControlCallback);
			}
			else if (OSDetector.isLinux()) {
				return new LinuxContextMenuControlImpl(
					nativityControl, contextMenuControlCallback);
			}*/
			
			return null;
		}
		public UnixFileIconControlBaseImpl(
			NativityControl nativityControl,
			FileIconControlCallback fileIconControlCallback)
			: base(nativityControl, fileIconControlCallback)
		{
		}
		public AppleFileIconControlImpl(
			NativityControl nativityControl,
			FileIconControlCallback fileIconControlCallback)
			: base(nativityControl, fileIconControlCallback)
		{
		}
		public AppleContextMenuControlImpl(NativityControl nativityControl, ContextMenuControlCallback contextMenuControlCallback) 
			: base(nativityControl, contextMenuControlCallback)
		{
		}
		public ContextMenuControl(NativityControl nativityControl, ContextMenuControlCallback contextMenuControlCallback)
		{
			this.nativityControl = nativityControl;
			this.contextMenuControlCallback = contextMenuControlCallback;
		}
		public UnixContextMenuControlBaseImpl(NativityControl nativityControl, ContextMenuControlCallback contextMenuControlCallback)
			: base(nativityControl, contextMenuControlCallback)
		{
			nativityControl.RegisterMessageListener(Constants.GET_CONTEXT_MENU_ITEMS, this.GetContextMenuItems);
			nativityControl.RegisterMessageListener(Constants.FIRE_CONTEXT_MENU_ACTION, this.RaiseContextMenuItem_Selected);
		}