コード例 #1
0
        /// <summary>
        /// 把当前模型的内容,保存到某个指定的 xml 文件。
        /// </summary>
        /// <param name="odmlFile"></param>
        public static void SaveDocument(this ModelingDesigner designer, string odmlFile)
        {
            var doc = designer.GetDocument();
            var xml = doc.ToXml();

            File.WriteAllText(odmlFile, xml);
        }
コード例 #2
0
        /// <summary>
        /// 让设计器加载指定的文档对象
        /// </summary>
        /// <param name="designer"></param>
        /// <param name="document"></param>
        public static void BindDocument(this ModelingDesigner designer, ODMLDocument document)
        {
            DocumentBinder.BindDocument(designer, document);

            //绑定新的文档时,需要清空文件路径。
            designer.ClearValue(CurrentOdmlFileProperty);
        }
コード例 #3
0
        protected override void ExecuteCore(ModelingDesigner designer)
        {
            var selectedItems = designer.SelectedItems.ToArray();

            foreach (var item in selectedItems)
            {
                if (item.Kind == DesignerComponentKind.Block)
                {
                    designer.Blocks.Remove(item as BlockControl);
                }
            }

            //先删除所有的块后,如果还剩下选择的连接没有移除的话,说明用户想删除某个连接对应的关系,这时需要进行提示。
            selectedItems = designer.SelectedItems.ToArray();
            if (selectedItems.All(c => c.Kind == DesignerComponentKind.Relation))
            {
                var res = MessageBox.Show("确定删除关系?", "确认删除", MessageBoxButton.YesNo);
                if (res != MessageBoxResult.Yes)
                {
                    return;
                }
            }

            foreach (var item in selectedItems)
            {
                designer.Relations.Remove(item as BlockRelation);
            }
        }
コード例 #4
0
        /// <summary>
        /// 加载某个 xml 文件。
        /// </summary>
        /// <param name="odmlFile"></param>
        public static void LoadDocument(this ModelingDesigner designer, string odmlFile)
        {
            var xml = File.ReadAllText(odmlFile);
            var doc = string.IsNullOrEmpty(xml) ? new ODMLDocument() : ODMLDocument.Parse(xml);

            DocumentBinder.BindDocument(designer, doc);

            SetCurrentOdmlFile(designer, odmlFile);
        }
コード例 #5
0
        protected override void ExecuteCore(ModelingDesigner designer)
        {
            var file = ModelingDesignerExtension.GetCurrentOdmlFile(designer);

            if (file != null)
            {
                designer.LoadDocument(file);
            }
        }
コード例 #6
0
ファイル: DocumentBinder.cs プロジェクト: yungtau/oea
        internal static void BindDocument(ModelingDesigner designer, ODMLDocument document)
        {
            var binder = new DocumentBinder
            {
                _designer = designer,
                _document = document
            };

            binder.BindDocument();
        }
コード例 #7
0
ファイル: HideRelationCommand.cs プロジェクト: yungtau/oea
 protected override void ExecuteCore(ModelingDesigner designer)
 {
     foreach (var item in designer.SelectedItems)
     {
         if (item.Kind == DesignerComponentKind.Relation)
         {
             var relation = item as BlockRelation;
             relation.Hidden = !relation.Hidden;
         }
     }
 }
コード例 #8
0
ファイル: DeleteBlockCommand.cs プロジェクト: yungtau/oea
        protected override void ExecuteCore(ModelingDesigner designer)
        {
            var selectedItems = designer.SelectedItems.ToArray();

            foreach (var item in selectedItems)
            {
                if (item.Kind == DesignerComponentKind.Block)
                {
                    designer.Blocks.Remove(item as BlockControl);
                }
            }
        }
コード例 #9
0
        protected override void ExecuteCore(ModelingDesigner designer)
        {
            var dialog = new OpenFileDialog {
                Filter = "Rafy Domain Mackup File (*.odml)|*.odml"
            };
            var res = dialog.ShowDialog();

            if (res == true)
            {
                designer.LoadDocument(dialog.FileName);
            }
        }
コード例 #10
0
        ///// <summary>
        ///// 让设计器加载指定的文档对象
        ///// </summary>
        ///// <param name="designer"></param>
        ///// <param name="document"></param>
        //public static void LoadDocument(this ModelingDesigner designer, ODMLDocument document)
        //{
        //    DocumentHelper.LoadDocument(designer, document);
        //    designer.ClearValue(CurrentOdmlFileProperty);
        //}

        /// <summary>
        /// 获取目前绑定在设计器中的文档对象
        /// </summary>
        /// <param name="designer"></param>
        /// <returns></returns>
        public static ODMLDocument GetDocument(this ModelingDesigner designer)
        {
            var doc = designer.DataContext as ODMLDocument;

            if (doc == null)
            {
                doc = new ODMLDocument();
                BindDocument(designer, doc);
            }
            return(doc);

            //return DocumentHelper.GetDocument(designer);
        }
コード例 #11
0
        internal static CommandBinding CreateCommandBinding(ModelingDesigner designer, WPFDesignerCommand cmd)
        {
            var adpater = new WPFCommandAdapter(cmd, designer);

            var wpfCmd = cmd.GetWPFCommand();

            var binding = new CommandBinding(wpfCmd);

            binding.Executed   += adpater.binding_Executed;
            binding.CanExecute += adpater.binding_CanExecute;

            return(binding);
        }
コード例 #12
0
        /// <summary>
        /// 为设计器绑定指定的命令到指定的元素中。
        /// </summary>
        /// <typeparam name="TCommand"></typeparam>
        /// <param name="designer"></param>
        /// <param name="context">如果没有指定上下文,则使用 designer 作为上下文。</param>
        public static void Bind <TCommand>(ModelingDesigner designer, UIElement context = null)
            where TCommand : WPFDesignerCommand, new()
        {
            var command = new TCommand();

            if (context == null)
            {
                context = designer;
            }

            var binding = WPFCommandAdapter.CreateCommandBinding(designer, command);

            context.CommandBindings.Add(binding);
        }
コード例 #13
0
        protected override void ExecuteCore(ModelingDesigner designer)
        {
            var file = ModelingDesignerExtension.GetCurrentOdmlFile(designer);

            if (file == null)
            {
                var dialog = new SaveFileDialog {
                    Filter = "Rafy Domain Mackup File (*.odml)|*.odml"
                };
                var res = dialog.ShowDialog();
                if (res != true)
                {
                    return;
                }

                file = dialog.FileName;
            }

            designer.SaveDocument(file);
        }
コード例 #14
0
ファイル: EditorProperties.cs プロジェクト: yungtau/oea
 public EditorProperties(EditorPane editor)
 {
     _editor   = editor;
     _designer = editor.Designer;
 }
コード例 #15
0
 protected override void ExecuteCore(ModelingDesigner designer)
 {
     designer.SelectAll();
 }
コード例 #16
0
ファイル: DocumentBinder.cs プロジェクト: yungtau/oea
 private static bool GetIsReBinding(ModelingDesigner element)
 {
     return((bool)element.GetValue(IsReBindingProperty));
 }
コード例 #17
0
 private static void SetCurrentOdmlFile(ModelingDesigner element, string value)
 {
     element.SetValue(CurrentOdmlFileProperty, value);
 }
コード例 #18
0
 /// <summary>
 /// 检查设计器状态,返回当前是否可执行本命令。
 /// </summary>
 /// <param name="designer"></param>
 /// <returns></returns>
 protected virtual bool CanExecuteCore(ModelingDesigner designer)
 {
     return(true);
 }
コード例 #19
0
 internal WPFCommandAdapter(WPFDesignerCommand cmd, ModelingDesigner designer)
 {
     _cmd      = cmd;
     _designer = designer;
 }
コード例 #20
0
 protected override void ExecuteCore(ModelingDesigner designer)
 {
     designer.ShowHiddenRelations = !designer.ShowHiddenRelations;
 }
コード例 #21
0
 /// <summary>
 /// 检查设计器状态,返回当前是否可执行本命令。
 /// </summary>
 /// <param name="designer"></param>
 /// <returns></returns>
 public bool CanExecute(ModelingDesigner designer)
 {
     return(this.CanExecuteCore(designer));
 }
コード例 #22
0
 /// <summary>
 /// 执行本命令。
 /// </summary>
 /// <param name="designer"></param>
 public void Execute(ModelingDesigner designer)
 {
     this.ExecuteCore(designer);
 }
コード例 #23
0
ファイル: DocumentBinder.cs プロジェクト: yungtau/oea
 private static void SetIsReBinding(ModelingDesigner element, bool value)
 {
     element.SetValue(IsReBindingProperty, value);
 }
コード例 #24
0
 /// <summary>
 /// 执行本命令。
 /// </summary>
 /// <param name="designer"></param>
 protected abstract void ExecuteCore(ModelingDesigner designer);
コード例 #25
0
 internal static string GetCurrentOdmlFile(ModelingDesigner element)
 {
     return((string)element.GetValue(CurrentOdmlFileProperty));
 }