コード例 #1
0
        protected ListBoxPart(SnipPageDesigner designer)
            : base(designer)
        {
            StyleType = StyleType.GeneralPageListPart;

            Init();
        }
コード例 #2
0
        /// <summary>
        /// 获取设计器的预览框
        /// </summary>
        //public WebBrowser WebBrowser
        //{
        //    get { return previewBrowser; }
        //}

        #endregion

        #region 构造函数与Form的初始化

        /// <summary>
        /// 页面片设计器
        /// </summary>
        public MdiSnipDesignerForm(string tmpltID, string snipID)
        {
            ///赋初值
            ///
            _snipId  = snipID;
            _tmpltID = tmpltID;

            InitializeComponent();

            ///从所属的模板窗体里获取当前页面片的XmlElement。
            _ownerTmpltForm = Service.Workbench.GetWorkDocumentById(tmpltID, WorkDocumentType.TmpltDesigner) as MdiTmpltDesignForm;
            if (_ownerTmpltForm == null)
            {
                Debug.Fail("此页面片对应的模板窗口不存在。");
                return;
            }

            ///通过所属的模板窗口和传入的SnipID,获得SnipXmlElement
            SnipElement = _ownerTmpltForm.TmpltDoc.GetSnipElementById(_snipId);

            ///通过SnipXmlElement创建DesignerPanel(DesignerPanel构造函数将创建SnipPageDesigner)
            this._designerPanel = new DesignerPanel(_ownerTmpltForm.TmpltDoc.HasAutoKeyWordsSequenceType);

            this._designerPanel.BackColor = SoftwareOption.SnipDesigner.FormBackColor;// System.Drawing.Color.DarkGray;
            this._designerPanel.Dock      = System.Windows.Forms.DockStyle.Fill;
            this._designerPanel.Location  = new System.Drawing.Point(0, 0);
            this._designerPanel.Name      = "workPanel";
            this._designerPanel.Size      = new System.Drawing.Size(747, 528);
            this._designerPanel.TabIndex  = 0;
            this._designerPanel.Text      = "designerPanel1";

            this.SnipPageDesigner.MouseDoubleClick     += new MouseEventHandler(SnipPageDesigner_MouseDoubleClick);
            this.SnipPageDesigner.SelectedPartsChanged += new EventHandler(SnipPageDesigner_SelectedPartsChanged);

            this.Controls.Add(this._designerPanel);

            ///导航栏的初始化
            this.BottomNavigation                = new NavigationStrip();
            this.BottomNavigation.Dock           = DockStyle.Bottom;
            this.BottomNavigation.NavigateTarget = this.SnipPageDesigner;
            this.Controls.Add(this.BottomNavigation);

            this.ShowIcon = true;
            this.Icon     = Icon.FromHandle(ResourceService.GetResourceImage("tree.img.SnipPage2").GetHicon());

            _timer.Interval = 100;
            _timer.Tick    += new EventHandler(_timer_Tick);

            SnipPageDesigner.Load(SnipElement);
            Text = SnipPageDesigner.Text;
            SnipPageDesigner.DesignerReseted += new EventHandler(SnipPageDesigner_DesignerReseted);
            SnipPageDesigner.PartsLayouted   += new EventHandler(SnipPageDesigner_PartsLayouted);
            this.SizeChanged += new EventHandler(MdiSnipDesignerForm_SizeChanged);

            // add by fenggy 2006-06-13 增加处理PART定位的函数
            SdsiteXmlDocument.OrientationPart += new EventHandler <EventArgs <string[]> >(SdsiteXmlDocument_OrientationPart);

            // add by fenggy 2006-06-17 更改FORM的TEXT
            SdsiteXmlDocument.SnipDesignerFormTextChange += new EventHandler <EventArgs <string[]> >(SdsiteXmlDocument_SnipDesignerFormTextChange);
        }
コード例 #3
0
        public void AddExecClearSelectCommand(SnipPageDesigner designer)
        {
            ClearSelectCommand cmd = new ClearSelectCommand(designer);

            cmd.Execute();
            AddCommand(cmd);
        }
コード例 #4
0
        public override bool Save()
        {
            ///得到Document里的相应页面片Element
            SnipXmlElement snipEleNew = _ownerTmpltForm.TmpltDoc.GetSnipElementById(SnipElement.Id);

            ///两个Element不是同一个对象,则更新
            if (!object.ReferenceEquals(SnipElement, snipEleNew))
            {
                SnipElement = snipEleNew;
            }

            //add by fenggy 2008-06-19
            //Snip的NAME有能修改,如果该页面片增加时没有保存且修改了NAME,以后在保存,这样的话,
            //NAME 是保存不上的,所以在这里在将修改过的名字重新赋值给页面片
            if (!string.IsNullOrEmpty(_newSnipName))
            {
                this.SnipElement.SnipName = _newSnipName;
            }

            ///得到页面片保存的Element
            SnipPageDesigner.SaveToElement(this.SnipElement);
            SnipPageDesigner.IsModified = false;

            OnSaved(EventArgs.Empty);

            return(true);
        }
コード例 #5
0
 protected ListPart(SnipPageDesigner designer)
     : base(designer)
 {
     Width_Css    = "100%";
     SequenceType = SequenceType.None;
     ChannelIDs   = new List <string>();
 }
コード例 #6
0
 public AddChannelPartForm(bool isAddNewPart, SnipPageDesigner designer)
 {
     InitializeComponent();
     SnipPageDesigner = designer;
     _isAddNewPart    = isAddNewPart;
     Init();
 }
コード例 #7
0
        public void AddExecClearPartCommand(SnipPageDesigner designer)
        {
            ClearPartCommand cmd = new ClearPartCommand(designer);

            cmd.Execute();
            AddCommand(cmd);
            Designer.IsModified = true;
        }
コード例 #8
0
 public SetPropertyDesignerCommand(SnipPageDesigner designer, T oldValue, T newValue, SetPropertyCore <T> setCoreMethod, PartAction action)
 {
     this._designer      = designer;
     this._oldValue      = oldValue;
     this._newValue      = newValue;
     this._setCoreMethod = setCoreMethod;
     this._action        = action;
 }
コード例 #9
0
        public void AddExecSetPropertyDesignerCommand <T>(SnipPageDesigner designer, T oldValue, T newValue, SetPropertyCore <T> setCoreMethod, PartAction action)
        {
            SetPropertyDesignerCommand <T> cmd = new SetPropertyDesignerCommand <T>(designer, oldValue, newValue, setCoreMethod, action);

            cmd.Execute();
            AddCommand(cmd);
            Designer.IsModified = true;
        }
コード例 #10
0
 /// <summary>
 /// add by fenggy 2006-06-13 处理PART的定位
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void SdsiteXmlDocument_OrientationPart(object sender, EventArgs <string[]> e)
 {                                                                               //
     //因为所有打开的页面片设计器都回相应该事件,所以只处理目标页面片!其他的过滤掉
     if (this._snipId.Equals(e.Item[0].ToString()))                              //e.Item[0]页面片ID
     {
         SnipPagePart part = SnipPageDesigner.GetPartByID(e.Item[1].ToString()); //e.Item[1]欲定位PART 的ID
         if (part != null)
         {
             this.SnipPageDesigner.SelectPartAndCheck(part);
         }
     }
 }
コード例 #11
0
        public DesignerPanel(bool hasAutoKeyWordsSequenceType)
        {
            this.SuspendLayout();

            ///初始化属性
            Designer = new SnipPageDesigner(hasAutoKeyWordsSequenceType);

            ///创建并设置滚动条的相关属性
            VScroll               = new VScrollBar();
            HScroll               = new HScrollBar();
            VScroll.Dock          = DockStyle.Right;
            HScroll.Dock          = DockStyle.Bottom;
            VScroll.Scroll       += new ScrollEventHandler(VScroll_Scroll);
            HScroll.Scroll       += new ScrollEventHandler(HScroll_Scroll);
            HScroll.ValueChanged += delegate
            {
                Designer.Location = new Point(HScroll.Value * -1, Designer.Location.Y);
            };
            VScroll.ValueChanged += delegate
            {
                Designer.Location = new Point(Designer.Location.X, VScroll.Value * -1);
            };

            ///控件大小改变,则重新计算Scroll的大小位置
            EventHandler resetScrollHandler = new EventHandler(
                delegate
            {
                ResetScroll();
            }
                );

            HScroll.SizeChanged  += resetScrollHandler;
            VScroll.SizeChanged  += resetScrollHandler;
            Designer.SizeChanged += resetScrollHandler;
            this.Controls.Add(VScroll);
            this.Controls.Add(HScroll);
            this.Controls.Add(Designer);

            //Designer.Resize += new EventHandler(Designer_Resize);
            //Designer.SizeChanged += new EventHandler(Designer_SizeChanged);

            this.ResumeLayout();
        }
コード例 #12
0
 void SnipPageDesigner_MouseDoubleClick(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left && Control.ModifierKeys != Keys.Control)
     {
         SnipPagePart part = SnipPageDesigner.GetPartAt(SnipPageDesigner.PointToClient(Control.MousePosition), true);
         if (part != null)
         {
             SnipPageDesigner.EditPart(part, false);
             // from:郑浩 计划改为 双击后 “编辑” 2008.03.03早
             ////Point point = SnipPageDesigner.PointToClient(Control.MousePosition);
             ////if (part.HitTest(point))
             ////{
             //CssSetupForm form = new CssSetupForm(part.Css, CurType.Part);
             //if (form.ShowDialog() == DialogResult.OK)
             //{
             //    part.Css = form.CSSText;
             //}
             ////}
         }
     }
 }
コード例 #13
0
        protected SnipPagePart(SnipPageDesigner designer)
        {
            ResourcesReader.SetObjectResourcesHelper(this);
            _designer           = designer;
            Text                = "";
            Padding             = new System.Windows.Forms.Padding(0);
            Index               = -1;
            HtmlTagName         = "div";
            FactLines           = 2;
            _cssSection         = new CssSection();
            PartType            = SnipPartType.Static;
            ChildParts          = new SnipPagePartCollection(this);
            _classPartContainer = new ClassPartContainer(this);
            Random random = new Random();

            //BackColor = System.Drawing.Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256));
            _cssSection.Properties["width"]  = "100%";
            _cssSection.Properties["height"] = "20px";
            _cssSection.Properties["float"]  = "left";
            BoxIconXOffset = 0;
            BoxIconYOffset = -8;
            BoxIconSize    = new Size(16, 16);
        }
コード例 #14
0
 public override void Undo()
 {
     SnipPageDesigner.Undo();
 }
コード例 #15
0
 public override bool CanRedo()
 {
     return(SnipPageDesigner.CanRedo());
 }
コード例 #16
0
        static public SnipPagePart Parse(SnipPartXmlElement ele, SnipPageDesigner designer)
        {
            SnipPartType type = ele.SnipPartType;
            SnipPagePart part = null;

            switch (type)
            {
            case SnipPartType.Static:
            {
                part = SnipPagePart.Create(designer, type);
                ((StaticPart)part).PageText = ele.CDataValue;
                break;
            }

            case SnipPartType.Box:
            {
                part = SnipPagePart.Create(designer, type);
                break;
            }

            case SnipPartType.List:
            {
                ListPart listPart = (ListPart)SnipPagePart.Create(designer, SnipPartType.List);
                part = listPart;
                break;
            }

            case SnipPartType.ListBox:
            {
                ListBoxPart listBoxPart = (ListBoxPart)SnipPagePart.Create(designer, SnipPartType.ListBox);
                listBoxPart.StyleType = ele.StyleType;
                part = listBoxPart;
                break;
            }

            case SnipPartType.Navigation:
            {
                NavigationPart nPart = (NavigationPart)SnipPagePart.Create(designer, SnipPartType.Navigation);
                nPart.ChannelID = ele.GetAttribute("channelId");
                nPart.Text      = ele.CDataValue;
                part            = nPart;
                break;
            }

            case SnipPartType.Attribute:
            {
                AttributePart attributepart = (AttributePart)SnipPagePart.Create(designer, SnipPartType.Attribute);
                attributepart.AttributeName = ele.AttributeName;
                attributepart.Text          = ele.CDataValue;
                part = attributepart;
                break;
            }

            case SnipPartType.Path:
            {
                PathPart pathPart = (PathPart)SnipPagePart.Create(designer, SnipPartType.Path);
                pathPart.LinkDisplayType = (DisplayType)Enum.Parse(typeof(DisplayType), ele.GetAttribute("linkDisplayType"));
                pathPart.SeparatorCode   = ele.GetAttribute("separatorCode");
                part = pathPart;
                break;
            }

            default:
                throw new Exception("开发期异常。未知的SnipPartType:" + type);
            }
            part.PartType = type;
            part.Css      = ele.SnipPartCss;
            part.PartID   = ele.SnipPartId;
            part.CustomID = ele.CustomId;
            part.AElement = ele.AElement;
            return(part);
        }
コード例 #17
0
        /// <summary>
        /// 简单工厂,创建不同SnipPartType的Part
        /// </summary>
        static public SnipPagePart Create(SnipPageDesigner designer, SnipPartType type)
        {
            SnipPagePart part;

            switch (type)
            {
            case SnipPartType.None:
            case SnipPartType.Static:
            {
                part       = new StaticPart(designer);
                part.Title = StringParserService.Parse("${res:snipDesign.text.staticPartText}");
                break;
            }

            case SnipPartType.Box:
            {
                part       = new SnipPagePart(designer);
                part.Title = StringParserService.Parse("${res:snipDesign.text.box}");
                break;
            }

            case SnipPartType.Navigation:
            {
                part       = new NavigationPart(designer);
                part.Title = StringParserService.Parse("${res:snipDesign.text.navigationPartText}");
                break;
            }

            case SnipPartType.List:
            {
                part       = ListPart.Create(designer);
                part.Title = StringParserService.Parse("${res:snipDesign.text.listPartText}");
                break;
            }

            case SnipPartType.ListBox:
            {
                part       = ListBoxPart.Create(designer);
                part.Title = StringParserService.Parse("${res:snipDesign.text.listBoxPartText}");
                break;
            }

            case SnipPartType.Attribute:
            {
                part       = AttributePart.Create(designer);
                part.Title = StringParserService.Parse("${res:snipDesign.text.attributePartText}");
                break;
            }

            case SnipPartType.Path:
            {
                part       = new PathPart(designer);
                part.Title = StringParserService.Parse("${res:snipDesign.text.pathPartText}");
                break;
            }

            default:
                throw new Exception("开发期异常。未知的SnipPartType:" + type);
            }
            part.PartID   = XmlUtilService.CreateIncreaseId();
            part.PartType = type;
            return(part);
        }
コード例 #18
0
 public PathPart(SnipPageDesigner designer)
     : base(designer)
 {
     LinkDisplayType = DisplayType.Default;
     SeparatorCode   = ">>";
 }
コード例 #19
0
        public ClearPartCommand(SnipPageDesigner designer)
        {
            _designer = designer;

            _partLists = _designer.ChildParts.ToArray();
        }
コード例 #20
0
 public CommandManager(SnipPageDesigner designer)
 {
     _designer = designer;
 }
コード例 #21
0
 /// <summary>
 /// 创建ListBoxPart
 /// </summary>
 /// <param name="designer"></param>
 /// <returns></returns>
 static internal ListBoxPart Create(SnipPageDesigner designer)
 {
     return(new ListBoxPart(designer));
 }
コード例 #22
0
 public StaticPart(SnipPageDesigner designer)
     : base(designer)
 {
 }
コード例 #23
0
 static internal AttributePart Create(SnipPageDesigner designer)
 {
     return(new AttributePart(designer));
 }
コード例 #24
0
 void SnipPageDesigner_DesignerReseted(object sender, EventArgs e)
 {
     WorkbenchForm.MainForm.MainPreviewPad.DocumentText =
         SnipPageDesigner.ToHtmlPreview();
 }
コード例 #25
0
 public SelectedSnipPagePartCollection(SnipPageDesigner designer)
 {
     Designer = designer;
 }
コード例 #26
0
 public override void Redo()
 {
     SnipPageDesigner.Redo();
 }
コード例 #27
0
 public NavigationBoxPart(SnipPageDesigner designer)
     : base(designer)
 {
 }
コード例 #28
0
        private void GetParts(SnipPagePartCollection snipPagePartCollection, XmlElement partsEle, SnipPageDesigner designer)
        {
            XmlNodeList _nodes = partsEle.SelectNodes("part");

            foreach (XmlNode node in _nodes)
            {
                SnipPartXmlElement partEle = (SnipPartXmlElement)node;
                SnipPagePart       part    = SnipPagePart.Parse(partEle, designer);

                snipPagePartCollection.Add(part);
                GetParts(part.ChildParts, partEle, designer);
            }
        }
コード例 #29
0
 private void SnipDesignerForm_Load(object sender, EventArgs e)
 {
     SnipPageDesigner.LayoutParts();
     WorkbenchForm.MainForm.MainPreviewPad.DocumentText =
         SnipPageDesigner.ToHtmlPreview();
 }
コード例 #30
0
 public ClearSelectCommand(SnipPageDesigner designer)
 {
     this._designer      = designer;
     this._selectedParts = designer.SelectedParts.ToArray();
 }