コード例 #1
0
ファイル: ModelViewer.xaml.cs プロジェクト: yungtau/oea
        private void btnAddClasses_Click(object sender, RoutedEventArgs e)
        {
            if (_eom == null)
            {
                //注意:从 CommonModel 中获取的实体类,是没有继承关系的。
                CommonModel.Entities.EnsureAllLoaded();
                var converter = new MetaToEOM(CommonModel.Entities.Where(m => m.EntityCategory != EntityCategory.QueryObject));
                _eom = converter.Read();
            }

            var content = new ChooseClassesControl(_eom);

            var res = App.Windows.ShowDialog(content, w =>
            {
                w.Title = "添加实体类".Translate();
                w.Width = 400;
            });

            if (res == WindowButton.Yes)
            {
                var typeList = content.SelectedEntities;
                if (typeList.Count > 0)
                {
                    var document = modelViewer.GetDocument();
                    ODMLDocumentHelper.AddToDocument(new AddToDocumentArgs
                    {
                        Docment  = document,
                        TypeList = typeList,
                        AllTypes = _eom.EntityTypes
                    });
                    modelViewer.BindDocument(document);
                }
            }
        }
コード例 #2
0
        private void btnRefreshClasses_Click(object sender, EventArgs e)
        {
            if (_owner.Project == null)
            {
                return;
            }
            ResetEOM();

            var oldDocument = designer.GetDocument();

            //创建一个新文档对象,使用它来描述最新的文档结构。
            var document = new ODMLDocument();

            //把原来显示的所有实体类型,加入到新文档对象中。
            var eom   = EOM;
            var types = oldDocument.EntityTypes.Select(el => eom.EntityTypes.Find(el.FullName))
                        .Where(t => t != null).ToArray();

            ODMLDocumentHelper.AddToDocument(new AddToDocumentArgs
            {
                Docment  = document,
                TypeList = types,
                AllTypes = eom.EntityTypes
            });

            //新的元素的位置,还原为所有旧元素的位置
            foreach (var el in document.EntityTypes)
            {
                var oldTypeEl = oldDocument.FindEntityType(el.FullName);
                el.Left   = oldTypeEl.Left;
                el.Top    = oldTypeEl.Top;
                el.Width  = oldTypeEl.Width;
                el.Height = oldTypeEl.Height;
            }
            foreach (var el in document.EnumTypes)
            {
                var oldTypeEl = oldDocument.FindEnumType(el.FullName);
                el.Left   = oldTypeEl.Left;
                el.Top    = oldTypeEl.Top;
                el.Width  = oldTypeEl.Width;
                el.Height = oldTypeEl.Height;
            }
            foreach (var el in document.Connections)
            {
                var old = oldDocument.FindConnection(el);
                if (old != null)
                {
                    el.Hidden         = old.Hidden;
                    el.ConnectionType = old.ConnectionType;
                    el.FromPointPos   = old.FromPointPos;
                    el.ToPointPos     = old.ToPointPos;
                }
            }

            //绑定新文档对象到设计器中,丢弃旧对象。
            designer.BindDocument(document);
        }
コード例 #3
0
        private void AddTypesInDocument(IList <EntityType> list)
        {
            var document = designer.GetDocument();

            ODMLDocumentHelper.AddToDocument(new AddToDocumentArgs
            {
                Docment  = document,
                TypeList = list,
                AllTypes = EOM.EntityTypes
            });

            //使用双向绑定,不再需要手动调用文档加载。
            //designer.LoadDocument(document);
        }