private ILayerItem GetGroupLayerItems(IElementGroup group) { ILayerItemGroup itemGroup = new LayerItemGroup(group.Name ?? string.Empty, group.Name ?? string.Empty); (itemGroup as LayerItemGroup).Tag = group; itemGroup.IsSelected = group.IsSelected; itemGroup.IsVisible = group.Visible; foreach (IElement it in group.Elements) { if (it is IElementGroup) { ILayerItem layer = GetGroupLayerItems(it as IElementGroup); itemGroup.Items.Add(layer); } else { LayerItemLayout item = new LayerItemLayout(); item.Name = it.Name; item.IsVisible = it.Visible; item.IsSelected = it.IsSelected; item.Tag = it; if (it.Icon != null) { item.Image = it.Icon; } itemGroup.Items.Add(item); } } return(itemGroup); }
/// <summary> /// 左对齐 /// </summary> /// <param name="group"></param> public static void ArrangeLeft(IElementGroup group, ILayoutHost host) { if (group == null) { return; } IElement[] eles = group.Elements.ToArray(); ArrangeLeft(eles, host); }
//调整二级及以上节点顺序 public void AdjustOrder(int insertIndex, ILayerItem item, ILayerItem parentItem) { if (parentItem == null) { return; } (parentItem as ILayerItemGroup).Items.Remove(item); (parentItem as ILayerItemGroup).Items.Insert(insertIndex, item); foreach (IElement ele in _viewer.LayoutHost.LayoutRuntime.Layout.Elements) { if (ele is ILayerObjectContainer) { ILayerObjectContainer container = ele as ILayerObjectContainer; //ILayerObjectBase insertObj = item.Tag as ILayerObjectBase; foreach (ILayerObjectBase obj in container.LayerObjects) { if (obj is ILayerObject) { ILayerObject layerObj = obj as ILayerObject; if (layerObj.Tag.Equals(item.Tag)) { container.LayerObjects.Remove(layerObj); container.LayerObjects.Insert(insertIndex, layerObj); RefreshViewer(); return; } } if (obj is ILayerObjecGroup) { ILayerObjecGroup layerGrp = obj as ILayerObjecGroup; foreach (ILayerObjectBase it in layerGrp.Children) { if ((it as ILayerObject).Tag.Equals(item.Tag)) { layerGrp.Children.Remove(it); layerGrp.Children.Insert(insertIndex, it); RefreshViewer(); return; } } } } } if (ele.Equals(parentItem) && ele is IElementGroup) { IElementGroup group = ele as IElementGroup; group.Elements.Remove(item.Tag as IElement); group.Elements.Insert(insertIndex, item.Tag as IElement); RefreshViewer(); return; } } }
private void DeleteElement(IElement ele, ILayout layout) { if (ele.IsLocked) { return; } IElementGroup group = layout.FindParent(ele) as IElementGroup; if (group != null) { group.Elements.Remove(ele); ele.Dispose(); } }
private void FindParent(IElement element, IElementGroup root, ref IElement retElement) { if (root.Elements.Contains(element)) { retElement = root; return; } foreach (IElement sub in root.Elements) { if (sub is IElementGroup) { FindParent(element, sub as IElementGroup, ref retElement); } } }
private static void CreatNodesFromElements(ILayoutTemplate template, XmlDocument doc, XmlNode node, List <IElement> elements, ILayout layout) { object[] attSubs; XmlNode subNode; XmlAttribute illuAttr = doc.CreateAttribute("type"); foreach (IElement ele in elements) { string[] names = ele.GetType().ToString().Split('.'); subNode = doc.CreateElement(names[names.Length - 1]); //保存经纬网格 if (ele is IDataFrame) { (ele as IDataFrame).SyncAttrbutes(); XElement gridXml = (ele as IDataFrame).GetGridXml(); if (gridXml != null) { subNode.InnerXml = gridXml.ToString(); } else { subNode.InnerXml = GetGridXmlFromTemplate(template, (ele as IDataFrame).Name); } } //获取对象被序列化的属性 attSubs = GetAttsFromObject(doc, subNode, ele, layout); if (attSubs == null || attSubs.Length == 0) { continue; } foreach (object attSub in attSubs) { subNode.Attributes.Append(attSub as XmlAttribute); } node.AppendChild(subNode); IElementGroup eleGroup = ele as ElementGroup; if (eleGroup == null) { continue; } if (eleGroup.Elements == null || eleGroup.Elements.Count == 0) { continue; } CreatNodesFromElements(template, doc, subNode, eleGroup.Elements, layout); } }
private static void CreateInstanceFromElement(XElement node, IElement element) { if (node != null && node.Name != null && node.Name == "GeoGridLayer") { return; } string type = node.Attribute(XName.Get("type")).Value; string[] parts = type.Split(':'); string fname = AppDomain.CurrentDomain.BaseDirectory + parts[0]; if (!File.Exists(fname)) { return; } Assembly assembly = Assembly.LoadFile(fname); if (assembly == null) { return; } object obj = assembly.CreateInstance(parts[1]); IPersitable persitable = obj as IPersitable; persitable.InitByXml(node); IElementGroup group = element as IElementGroup; if (group != null) { group.Elements.Add(persitable as IElement); } //递归 IEnumerable <XElement> elements = node.Elements(); if (elements == null || elements.Count() == 0) { return; } foreach (XElement ele in elements) { CreateInstanceFromElement(ele, persitable as IElement); } return; }
private static void UnGroupSizableGroup(ISizableElementGroup group, ILayoutHost host) { if (group == null) { return; } List <IElement> eles = group.Elements; IElementGroup parent = host.LayoutRuntime.Layout.FindParent(group) as IElementGroup; if (parent == null) { return; } foreach (IElement e in eles) { parent.Elements.Add(e); } parent.Elements.Remove(group); }
public UseMaterialParser(IElementGroup elementGroup) { _elementGroup = elementGroup; }
public UseMaterialParser(IElementGroup elementGroup) { _elementGroup = elementGroup; }
public ElementRefGroup(IElementGroup <TItem> items, bool copy) : base() { Elements = copy ? new ElementGroup <TItem>(items) : items; }