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);
        }
Exemplo n.º 2
0
 /// <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;
         }
     }
 }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 5
0
 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);
         }
     }
 }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
 public UseMaterialParser(IElementGroup elementGroup)
 {
     _elementGroup = elementGroup;
 }
Exemplo n.º 10
0
 public UseMaterialParser(IElementGroup elementGroup)
 {
     _elementGroup = elementGroup;
 }
Exemplo n.º 11
0
 public ElementRefGroup(IElementGroup <TItem> items, bool copy)
     : base()
 {
     Elements = copy ? new ElementGroup <TItem>(items) : items;
 }