コード例 #1
0
ファイル: DropTarget.cs プロジェクト: polytronicgr/netrix
        private void GetMouseCursor(DragDropCommands element)
        {
            string s = "GuruComponents.Netrix.Resources.DragCursors.";

            switch (element)
            {
            case DragDropCommands.DefaultNot:
                this.htmlEditor.Cursor = (Cursor)DragCursor["DefaultNot.ico"];
                this.htmlEditor.Exec(Interop.IDM.OVERRIDE_CURSOR, true);
                break;

            case DragDropCommands.DefaultMove:
                this.htmlEditor.Cursor = (Cursor)DragCursor["DefaultMove.ico"];
                this.htmlEditor.Exec(Interop.IDM.OVERRIDE_CURSOR, true);
                break;

            case DragDropCommands.DefaultCopy:
                this.htmlEditor.Cursor = (Cursor)DragCursor["DefaultCopy.ico"];
                this.htmlEditor.Exec(Interop.IDM.OVERRIDE_CURSOR, true);
                break;

            default:
                s = String.Concat(s, DragIcons[element].ToString());
                if (DragIcons.ContainsKey(element))
                {
                    SetCursorFromRessource(s);
                }
                break;
            }
        }
コード例 #2
0
        /// <summary>
        /// Checks out if we can convert the dropsource into HTML.
        /// </summary>
        /// <param name="dataObject"></param>
        /// <returns></returns>
        public virtual DataObjectConverterInfo CanConvertToHtml(DataObject dataObject)
        {
            foreach (string format in dataObject.GetFormats())
            {
                if (format.Equals("FileDrop") || format.Equals("System.Drawing.Design.ToolboxItem"))
                {
                    return(DataObjectConverterInfo.Externally);
                }
                if (format.Equals("GuruComponents.Netrix.WebEditing.Elements.IElement"))
                {
                    GuruComponents.Netrix.WebEditing.Elements.IElement el = dataObject.GetData(format) as GuruComponents.Netrix.WebEditing.Elements.IElement;
                    if (el != null)
                    {
                        return(DataObjectConverterInfo.Native);
                    }
                }
                if (format.Equals("GuruComponents.Netrix.WebEditing.DragDrop.DragDropCommands"))
                {
                    return(DataObjectConverterInfo.CanConvert);
                }
            }
            object data = dataObject.GetData(DataFormats.Serializable);

            // can be null if internal/external dragdrop operation, so let MSHTML handle it
            if (data == null)
            {
                try
                {
                    data = dataObject.GetData(DataFormats.Text);
                    if (data != null)
                    {
                        return(DataObjectConverterInfo.Text);
                    }
                    data = dataObject.GetData(DataFormats.Html);
                    if (data != null)
                    {
                        return(DataObjectConverterInfo.Text);
                    }
                }
                catch
                {
                }
            }
            if (data is DragDropCommands)
            {
                return(DataObjectConverterInfo.CanConvert);
            }
            try
            {
                DragDropCommands command = (DragDropCommands)Enum.Parse(typeof(DragDropCommands), data.ToString(), false);
                return(DataObjectConverterInfo.CanConvert);
            }
            catch
            {
            }
            return(DataObjectConverterInfo.Unhandled);
        }
コード例 #3
0
ファイル: SequenceEditorTools.cs プロジェクト: fkavum/infated
        public static string SaveDragDropCommands()
        {
            var commands = new DragDropCommands();

            commands.audioDragDropCommand               = audioDragDropCommand;
            commands.gameObjectDragDropCommand          = gameObjectDragDropCommand;
            commands.alternateGameObjectDragDropCommand = alternateGameObjectDragDropCommand;
            return(JsonUtility.ToJson(commands));
        }
コード例 #4
0
        /// <summary>
        /// Determines a dropped data source and build HTML strings that can be inserted into the document.
        /// </summary>
        /// <param name="originalDataObject"></param>
        /// <param name="IsInAbsolutePositionMode"></param>
        /// <param name="absolutePosition"></param>
        /// <param name="newDataObject"></param>
        /// <returns>Returns <c>false</c> if the convertion fails.</returns>
        public virtual bool ConvertToHtml(DataObject originalDataObject, bool IsInAbsolutePositionMode, System.Drawing.Point absolutePosition, ref DataObject newDataObject)
        {
            object data             = originalDataObject.GetData(DataFormats.Serializable);
            string styleAbsPosition = String.Empty;

            if (IsInAbsolutePositionMode)
            {
                // prepare position
                styleAbsPosition = String.Format(@"style=""position:absolute;left:{0}px;top:{1}px""", absolutePosition.X, absolutePosition.Y);
            }
            try
            {
                newDataObject = new DataObject();
                DragDropCommands dragData = (DragDropCommands)data;
                switch (dragData)
                {
                case DragDropCommands.Anchor:
                    newDataObject.SetData(DataFormats.Html, @"<a " + styleAbsPosition + @" href=""new.html"">New Hyperlink</a>");
                    break;

                case DragDropCommands.Break:
                    newDataObject.SetData(DataFormats.Html, @"<br/>");
                    break;

                case DragDropCommands.Button:
                    newDataObject.SetData(DataFormats.Html, @"<input type=""button"" value=""Button""/>");
                    break;

                case DragDropCommands.Checkbox:
                    newDataObject.SetData(DataFormats.Html, @"<input type=""checkbox"" />");
                    break;

                case DragDropCommands.Div:
                    newDataObject.SetData(DataFormats.Html, @"<div " + styleAbsPosition + @">New Division</div>");
                    break;

                case DragDropCommands.DropDown:
                    newDataObject.SetData(DataFormats.Html, @"<select size=""1""></select>");
                    break;

                case DragDropCommands.FileButton:
                    newDataObject.SetData(DataFormats.Html, @"<input type=""file"" />");
                    break;

                case DragDropCommands.Form:
                    newDataObject.SetData(DataFormats.Html, @"<form method=""post""></form>");
                    break;

                case DragDropCommands.HorizontalRule:
                    newDataObject.SetData(DataFormats.Html, @"<hr/>");
                    break;

                case DragDropCommands.ImageButton:
                    newDataObject.SetData(DataFormats.Html, @"<input type=""image""/>");
                    break;

                case DragDropCommands.ListBox:
                    newDataObject.SetData(DataFormats.Html, @"<select size=""3""></select>");
                    break;

                case DragDropCommands.Paragraph:
                    newDataObject.SetData(DataFormats.Html, @"<p>New Paragraph</p>");
                    break;

                case DragDropCommands.Password:
                    newDataObject.SetData(DataFormats.Html, @"<input type=""password""/>");
                    break;

                case DragDropCommands.RadioButton:
                    newDataObject.SetData(DataFormats.Html, @"<input type=""radio"">");
                    break;

                case DragDropCommands.ResetButton:
                    newDataObject.SetData(DataFormats.Html, @"<input type=""reset"" value=""Reset"">");
                    break;

                case DragDropCommands.HiddenField:
                    newDataObject.SetData(DataFormats.Html, @"<input type=""hidden"" >");
                    break;

                case DragDropCommands.SubmitButton:
                    newDataObject.SetData(DataFormats.Html, @"<input type=""submit"" value=""Submit"">");
                    break;

                case DragDropCommands.TextArea:
                    newDataObject.SetData(DataFormats.Html, @"<textarea rows=""3"" cols=""40""></textarea>");
                    break;

                case DragDropCommands.Textbox:
                    newDataObject.SetData(DataFormats.Html, @"<input type=""text"">");
                    break;

                case DragDropCommands.Image:
                    newDataObject.SetData(DataFormats.Html, @"<img/>");
                    break;

                case DragDropCommands.Table:
                    newDataObject.SetData(DataFormats.Html, @"<table><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr></table>");
                    break;

                case DragDropCommands.Span:
                    newDataObject.SetData(DataFormats.Html, @"<span>New Span</span>");
                    break;

                default:
                    // TODO: Access plug-in here
                    return(false);
                }
            }
            catch
            {
                return(false);
            }
            return(true);
        }
コード例 #5
0
ファイル: DropTarget.cs プロジェクト: polytronicgr/netrix
        public int OleDrop(IntPtr pDataObj, int grfKeyState, long pt, ref int pdwEffect)
        {
            int     result = Interop.S_OK;
            Control hostControl;
            Form    hostForm;

            hostControl = this.htmlEditor;
            while (hostControl != null)
            {
                hostControl = hostControl.Parent;
                hostForm    = hostControl as Form;
                if (hostForm == null)
                {
                    continue;
                }
                hostForm.BringToFront();
                break;
            }
            int    left = (int)(pt & 0xFFFF);
            int    top  = (int)(pt >> 32) & 0xFFFF;
            long   pt2;
            object o = Marshal.GetObjectForIUnknown(pDataObj);

            _currentDataObj = new DataObject(o);
            IntPtr cptr;

            switch (this._dropInfo.ConverterInfo)
            {
            case DataObjectConverterInfo.Native:
                // Create new DataObject
                if (nativeElement == null)
                {
                    this._dropInfo.ConverterInfo = DataObjectConverterInfo.Unhandled;
                    goto case DataObjectConverterInfo.Unhandled;
                }
                string id     = nativeElement.GetAttribute("id") as string;
                string tempId = Guid.NewGuid().ToString();
                nativeElement.SetAttribute("id", tempId);
                DataObject foolcurrentDataObj = new DataObject(DataFormats.Html, nativeElement.OuterHtml);
                IntPtr     fooldataObjectPtr  = Marshal.GetIUnknownForObject(foolcurrentDataObj);
                Marshal.QueryInterface(fooldataObjectPtr, ref guid, out cptr);
                Marshal.Release(fooldataObjectPtr);
                pt2           = (left - 4) + ((long)(top - 16) << 32);
                result        = this._originalDropTarget.OleDrop(cptr, grfKeyState, pt, ref pdwEffect);
                nativeElement = htmlEditor.GetElementById(tempId);
                nativeElement.SetAttribute("id", id);
                break;

            case DataObjectConverterInfo.CanConvert:
                object data = _currentDataObj.GetData(DataFormats.Serializable);
                dragData             = (DragDropCommands)data;
                this._currentDataObj = new DataObject(DataFormats.Html, String.Empty);
                pDataObj             = Marshal.GetIUnknownForObject(this._currentDataObj);
                Marshal.QueryInterface(dataObjectPtr, ref guid, out cptr);
                Marshal.Release(dataObjectPtr);
                pt2    = (left - 4) + ((long)(top - 16) << 32);
                result = this._originalDropTarget.OleDrop(cptr, grfKeyState, pt2, ref pdwEffect);
                break;

            case DataObjectConverterInfo.Text:
            case DataObjectConverterInfo.Unhandled:
                result = this._originalDropTarget.OleDrop(pDataObj, grfKeyState, pt, ref pdwEffect);
                break;

            case DataObjectConverterInfo.Externally:
                result = Interop.S_OK;
                break;
            }
            if (nativeElement != null)
            {
                SetElementPositioning(nativeElement, left, top);
                _currentDataObj.SetData(typeof(IElement), nativeElement);
            }
            DragEventArgs drgevent = CreateEventArgs(grfKeyState, left, top, (DragDropEffects)pdwEffect, (DragDropEffects)pdwEffect);

            this.htmlEditor.OnDragDrop(drgevent);
            pdwEffect = (int)drgevent.AllowedEffect;
            return(result);
        }
コード例 #6
0
ファイル: DropTarget.cs プロジェクト: polytronicgr/netrix
        public int OleDragEnter(IntPtr pDataObj, int grfKeyState, long pt, ref int pdwEffect)
        {
            // check for AllowDrop
            if (this.htmlEditor.AllowDrop == false)
            {
                return(Interop.S_FALSE);
            }
            int left = (int)(pt & 0xFFFF);
            int top  = (int)(pt >> 32) & 0xFFFF;

            this.DragPointX = left;
            this.DragPointY = top;
            int    result = Interop.S_OK;
            object o      = Marshal.GetObjectForIUnknown(pDataObj);

            _currentDataObj = new DataObject(o);
            IntPtr cptr;

            this._dropInfo.ConverterInfo = this._dropInfo.Converter.CanConvertToHtml(_currentDataObj);
            switch (this._dropInfo.ConverterInfo)
            {
            case DataObjectConverterInfo.Native:
                nativeElement = GetElementFromData();
                if (nativeElement == null)
                {
                    this._dropInfo.ConverterInfo = DataObjectConverterInfo.Unhandled;
                    goto case DataObjectConverterInfo.Unhandled;
                }
                // let's drop HTML but keep the serialized element
                DataObject foolcurrentDataObj = new DataObject(DataFormats.Html, nativeElement.OuterHtml);
                IntPtr     fooldataObjectPtr  = Marshal.GetIUnknownForObject(foolcurrentDataObj);
                Marshal.QueryInterface(fooldataObjectPtr, ref guid, out cptr);
                Marshal.Release(fooldataObjectPtr);
                result = this._originalDropTarget.OleDragEnter(cptr, grfKeyState, pt, ref pdwEffect);
                break;

            case DataObjectConverterInfo.CanConvert:
                object data = _currentDataObj.GetData(DataFormats.Serializable);
                dragData = (DragDropCommands)data;
                GetMouseCursor(dragData);
                this._currentDataObj = new DataObject(DataFormats.Html, String.Empty);
                dataObjectPtr        = Marshal.GetIUnknownForObject(this._currentDataObj);
                Marshal.QueryInterface(dataObjectPtr, ref guid, out cptr);
                Marshal.Release(dataObjectPtr);
                result = this._originalDropTarget.OleDragEnter(cptr, grfKeyState, pt, ref pdwEffect);
                break;

            case  DataObjectConverterInfo.Disabled:
                result = Interop.S_FALSE;
                break;

            case DataObjectConverterInfo.Text:
            case DataObjectConverterInfo.Unhandled:
                try
                {
                    result = this._originalDropTarget.OleDragEnter(pDataObj, grfKeyState, pt, ref pdwEffect);

                    System.Diagnostics.Debug.WriteLine(_currentDataObj.GetData(DataFormats.Html));
                }
                catch
                {
                }
                break;

            case DataObjectConverterInfo.Externally:
                result = Interop.S_OK;
                break;
            }
            DragEventArgs drgevent = CreateEventArgs(grfKeyState, left, top, (DragDropEffects)pdwEffect, (DragDropEffects)pdwEffect);

            this.htmlEditor.OnDragEnter(drgevent);
            return(result);
        }