private void GetOpenItems(TmpltBaseTreeNode treeNode, List <string> _openItems) { if (treeNode == null) { return; } foreach (TreeNode treenode in treeNode.Nodes) { TmpltBaseTreeNode node = treenode as TmpltBaseTreeNode; if (node != null && node.IsExpanded) { if (node is PartElementNode) { SnipPartXmlElement snipPartElement = ((TmpltBaseTreeNode)node).Element as SnipPartXmlElement; _openItems.Add(snipPartElement.SnipPartId); } else if (node is SnipElementNode) { SnipXmlElement snipElement = ((TmpltBaseTreeNode)node).Element as SnipXmlElement; _openItems.Add(snipElement.Id); } else if (node is TmpltElementNode) { TmpltSimpleExXmlElement tmpltElement = ((TmpltBaseTreeNode)node).Element as TmpltSimpleExXmlElement; _openItems.Add(tmpltElement.Id); } } GetOpenItems(node, _openItems); } }
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); } }
/// <summary> /// 将element里保存的数据读取到parts(递归) /// </summary> private void GetParts(SnipPagePart part, XmlElement element) { XmlNodeList _nodes = element.SelectNodes("part"); //part.ChildParts.Clear(); foreach (XmlNode node in _nodes) { SnipPartXmlElement partEle = (SnipPartXmlElement)node; SnipPagePart _part = SnipPagePart.Parse(partEle, this.Designer); part.ChildParts.Add(_part); GetParts(_part, partEle); } }
protected override void LoadChildNodes(TmpltTreeNodeType NodeFilterType) {//Part if (((SnipPartXmlElement)Element).ChildNodes == null) { return; } foreach (XmlNode node in ((SnipPartXmlElement)Element).ChildNodes) { if (node.Name == "part") { SnipPartXmlElement snipPart = node as SnipPartXmlElement; AddElementNode(snipPart, NodeFilterType); } } }
public TmpltEmptyNode(SnipPartXmlElement element) : base(element) { this.Text = "没有页面片"; }
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); }
/// <summary> /// 定位到模板/页面片/PART /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TmpltTreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { TmpltBaseTreeNode tmpltBaseNode = e.Node as TmpltBaseTreeNode; if (tmpltBaseNode == null) { return; } switch (tmpltBaseNode.NodeType) { case TreeNodeType.Tmplt: //打开(或激活)模板 Service.Workbench.OpenWorkDocument(WorkDocumentType.TmpltDesigner, ((TmpltSimpleExXmlElement)tmpltBaseNode.Element).Id); break; case TreeNodeType.Snip: { //打开页面片 //得到对应的页面片 SnipElementNode snipElementNode = tmpltBaseNode as SnipElementNode; SnipXmlElement snipElement = snipElementNode.Element as SnipXmlElement; //得到页面片所属的模板文件 TmpltElementNode tmpltElementNode = snipElementNode.Parent as TmpltElementNode; TmpltSimpleExXmlElement tmpltElement = tmpltElementNode.Element as TmpltSimpleExXmlElement; //先打开(或激活)对应的模板 如果该模板已经打开,不用打开也不用激活她,因为目的是为了打开页面片 //如果打开的话回出现令人烦的闪烁现象 if (!Service.Workbench.GetResultKeyID(WorkDocumentType.TmpltDesigner, tmpltElement.Id)) { Service.Workbench.OpenWorkDocument(WorkDocumentType.TmpltDesigner, tmpltElement.Id); } //打开(激活)页面片 Service.Workbench.OpenWorkDocument(WorkDocumentType.SnipDesigner, snipElement.Id, tmpltElement.Id); //因为如果添加一个页面片且没有保存,再重命名,新的名不能保存,模板里没有对应的内容 //所以的通知页面片设计器,将FORM的TEXT进行修改 snipElementNode.ChangeNodeText(e.Node.Text); } break; case TreeNodeType.SnipPart: { //找到PART对应的页面片 PartElementNode partElemetNode = tmpltBaseNode as PartElementNode; SnipPartXmlElement snipPartElement = partElemetNode.Element as SnipPartXmlElement; TmpltBaseTreeNode tmpltNode = (TmpltBaseTreeNode)partElemetNode; while (!(tmpltNode is SnipElementNode)) { tmpltNode = (TmpltBaseTreeNode)(tmpltNode.Parent); } //得到对应的页面片 SnipElementNode snipElementNode = tmpltNode as SnipElementNode; SnipXmlElement snipElement = snipElementNode.Element as SnipXmlElement; ////得到页面片所属的模板文件 TmpltElementNode tmpltElementNode = snipElementNode.Parent as TmpltElementNode; TmpltSimpleExXmlElement tmpltElement = tmpltElementNode.Element as TmpltSimpleExXmlElement; //先打开(或激活)对应的模板 if (!Service.Workbench.GetResultKeyID(WorkDocumentType.TmpltDesigner, tmpltElement.Id)) { Service.Workbench.OpenWorkDocument(WorkDocumentType.TmpltDesigner, tmpltElement.Id); } //打开页面片! Service.Workbench.OpenWorkDocument(WorkDocumentType.SnipDesigner, snipElement.Id, tmpltElement.Id); string [] strArray = new string[2]; strArray[0] = snipElement.Id; strArray[1] = snipPartElement.SnipPartId; SdsiteXmlDocument.OnOrientationPart(new EventArgs <string[]>(strArray)); } break; } }
public PartElementNode(SnipPartXmlElement element) : base(element) { }