Exemplo n.º 1
0
 public override bool Edit(ElementEditEventArgs args)
 {
     using (dlgImageElementEditor dlg = new dlgImageElementEditor())
     {
         dlg.SourceEventArgs = args;
         if (dlg.ShowDialog(args.ParentWindow) == DialogResult.OK)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     //XTextImageElement img = (XTextImageElement)args.Element;
     //using (OpenFileDialog dlg = new OpenFileDialog())
     //{
     //    dlg.Filter = WriterStrings.ImageFileFilter;
     //    dlg.CheckFileExists = true;
     //    dlg.ShowReadOnly = false;
     //    if (dlg.ShowDialog(args.ParentWindow) == DialogResult.OK)
     //    {
     //        img.OwnerDocument = args.Document;
     //        XImageValue newValue = new XImageValue();
     //        if (newValue.Load(dlg.FileName) > 0 )
     //        {
     //            SizeF oldSize = new SizeF(img.Width, img.Height);
     //            XImageValue oldValue = img.Image ;
     //            img.Image = newValue;
     //            img.UpdateSize();
     //            if (args.LogUndo && args.Document.CanLogUndo )
     //            {
     //                // 记录撤销操作信息
     //                args.Document.UndoList.AddProperty("Width", oldSize.Width, img.Width, img);
     //                args.Document.UndoList.AddProperty("Height", oldSize.Height, img.Height, img);
     //                args.Document.UndoList.AddProperty("Image", oldValue, img.Image, img);
     //            }
     //            if (args.Method == ElementEditMethod.Edit)
     //            {
     //                img.ContentElement.RefreshPrivateContent(img.ViewIndex);
     //                img.UpdateContentVersion();
     //                ContentChangedEventArgs args2 = new ContentChangedEventArgs();
     //                args2.Document = args.Document;
     //                args2.Element = img;
     //                args2.LoadingDocument = false;
     //                img.Parent.RaiseBubbleOnContentChanged(args2);
     //            }
     //            return true;
     //        }
     //    }
     //}
     //return false;
 }
Exemplo n.º 2
0
        /// <summary>
        /// 调用文档元素编辑器
        /// </summary>
        /// <param name="args">编辑器命令参数对象</param>
        /// <param name="element">文档元素对象</param>
        /// <param name="method">编辑使用的方法</param>
        /// <returns>操作是否成功</returns>
        internal static bool CallElementEdtior(WriterCommandEventArgs args, DomElement element, ElementEditMethod method)
        {
            ElementEditor editor = (ElementEditor)TypeDescriptor.GetEditor(element, typeof(ElementEditor));

            if (editor != null)
            {
                ElementEditEventArgs ea = new ElementEditEventArgs();
                ea.Document     = args.Document;
                ea.Host         = args.Host;
                ea.LogUndo      = (method == ElementEditMethod.Edit);
                ea.ParentWindow = args.EditorControl;
                ea.Element      = element;
                ea.Method       = method;
                return(editor.Edit(ea));
            }
            return(false);
        }
Exemplo n.º 3
0
        protected void ElementProperties(object sender, WriterCommandEventArgs args)
        {
            if (args.Mode == WriterCommandEventMode.QueryState)
            {
                args.Enabled = args.DocumentControler != null &&
                               args.DocumentControler.CanSetStyle;
            }
            else if (args.Mode == WriterCommandEventMode.Invoke)
            {
                args.Result = false;
                DomElement element = args.Document.CurrentElement;
                if (args.Document.Selection.ContentElements.Count == 1)
                {
                    element = args.Document.Selection.ContentElements[0];
                }

                while (element != null)
                {
                    ElementEditor editor = (ElementEditor)TypeDescriptor.GetEditor(element, typeof(ElementEditor));
                    if (editor != null)
                    {
                        if (editor.IsSupportMethod(ElementEditMethod.Edit))
                        {
                            // 调用指定的编辑器
                            ElementEditEventArgs ea = new ElementEditEventArgs();
                            ea.Document = args.Document;
                            ea.Element  = element;
                            ea.Host     = args.Host;
                            ea.LogUndo  = true;
                            ea.Method   = ElementEditMethod.Edit;
                            bool changed = false;
                            args.Document.BeginLogUndo();
                            if (editor.Edit(ea))
                            {
                                // 更新元素内容版本号
                                if (element is DomContainerElement)
                                {
                                    DomContainerElement c = (DomContainerElement)element;
                                    c.EditorInvalidateContent();
                                }
                                element.UpdateContentVersion();
                                element.InvalidateView();
                                changed = true;
                            }
                            args.Document.EndLogUndo();
                            if (changed)
                            {
                                args.Result            = true;
                                args.Document.Modified = true;
                                //args.Document.OnSelectionChanged();
                                args.Document.OnDocumentContentChanged();
                                args.RefreshLevel = UIStateRefreshLevel.All;
                            }
                        }
                        return;
                    }
                    element = element.Parent;
                }//while

                element = args.Document.CurrentElement;
                if (args.Document.Selection.ContentElements.Count == 1)
                {
                    element = args.Document.Selection.ContentElements[0];
                }

                XTextElementProperties properties = null;
                while (element != null)
                {
                    properties = args.Host.CreateProperties(element.GetType());
                    if (properties != null)
                    {
                        break;
                    }
                    element = element.Parent;
                }//while
                if (properties != null)
                {
                    properties.Document = args.Document;
                    if (properties.ReadProperties(element))
                    {
                        args.SourceElement = element;
                        if (properties.PromptEditProperties(args))
                        {
                            args.Document.BeginLogUndo();
                            bool changed = false;
                            if (properties.ApplyToElement(args.Document, element, true))
                            {
                                // 更新元素内容版本号
                                if (element is DomContainerElement)
                                {
                                    DomContainerElement c = (DomContainerElement)element;
                                    c.EditorInvalidateContent();
                                }
                                element.UpdateContentVersion();
                                element.InvalidateView();
                                changed = true;
                            }
                            args.Document.EndLogUndo();
                            if (changed)
                            {
                                args.Result            = true;
                                args.Document.Modified = true;
                                //args.Document.OnSelectionChanged();
                                args.Document.OnDocumentContentChanged();
                                args.RefreshLevel = UIStateRefreshLevel.All;
                            }
                        }
                    }
                }
            }
        }