示例#1
0
        // ========================================
        // property
        // ========================================

        // ========================================
        // method
        // ========================================
        public override void ConfigureDetailForm(DetailSettingsForm detailForm)
        {
            if (_detailFormConfigurator != null)
            {
                _detailFormConfigurator(detailForm);
            }
        }
示例#2
0
        // ========================================
        // method
        // ========================================
        public override void ConfigureDetailForm(DetailSettingsForm detailForm)
        {
            /// file detail page
            var memoFile = _owner.Model;
            var filePage = new FileDetailPage(_owner.Host);

            filePage.Title      = memoFile.Name;
            filePage.Path       = memoFile.IsEmbedded? "": memoFile.Path;
            filePage.IsModified = false;
            detailForm.RegisterPage("ファイル", filePage);
        }
        public override void ConfigureDetailForm(DetailSettingsForm detailForm)
        {
            var fig = _owner.Figure;

            /// line detail page
            var borderPage = new EdgeLineDetailPage(new [] { _owner.Host });

            borderPage.LineColor     = fig.LineColor;
            borderPage.LineWidth     = fig.LineWidth;
            borderPage.LineDashStyle = fig.LineDashStyle;
            borderPage.IsModified    = false;
            detailForm.RegisterPage("線", borderPage);
        }
示例#4
0
        // ========================================
        // property
        // ========================================

        // ========================================
        // method
        // ========================================
        public override void ConfigureDetailForm(DetailSettingsForm detailForm)
        {
            /// property detail page
            var propObj = new PropObj()
            {
                Name       = _operation.Name,
                Stereotype = _operation.Stereotype,
                Type       = _operation.TypeName,
                Parameters = _operation.Parameters,
                IsAbstract = _operation.IsAbstract,
                IsStatic   = _operation.IsStatic,
                Visibility = _operation.Visibility,
            };

            Func <object, ICommand> updateCmdProvider = obj => {
                var old = new PropObj()
                {
                    Name       = _operation.Name,
                    Stereotype = _operation.Stereotype,
                    Type       = _operation.TypeName,
                    Parameters = _operation.Parameters,
                    IsAbstract = _operation.IsAbstract,
                    IsStatic   = _operation.IsStatic,
                    Visibility = _operation.Visibility,
                };
                return(new DelegatingCommand(
                           () => {
                    _operation.Name = propObj.Name;
                    _operation.Stereotype = propObj.Stereotype;
                    _operation.TypeName = propObj.Type;
                    _operation.Parameters = propObj.Parameters;
                    _operation.IsAbstract = propObj.IsAbstract;
                    _operation.IsStatic = propObj.IsStatic;
                    _operation.Visibility = propObj.Visibility;
                },
                           () => {
                    _operation.Name = old.Name;
                    _operation.Stereotype = old.Stereotype;
                    _operation.TypeName = old.Type;
                    _operation.Parameters = old.Parameters;
                    _operation.IsAbstract = old.IsAbstract;
                    _operation.IsStatic = old.IsStatic;
                    _operation.Visibility = old.Visibility;
                }
                           ));
            };
            var propPage = new PropertyDetailSettingsPage(propObj, updateCmdProvider);

            detailForm.RegisterPage("モデル", propPage);
        }
示例#5
0
        public override void ConfigureDetailForm(DetailSettingsForm detailForm)
        {
            var fig = _owner.Figure;

            /// border detail page
            var borderPage = new NodeBorderDetailPage(new[] { _owner.Host });

            borderPage.IsBorderEnabled = fig.IsForegroundEnabled;
            borderPage.LineColor       = fig.Foreground;
            borderPage.LineWidth       = fig.BorderWidth;
            borderPage.LineDashStyle   = fig.BorderDashStyle;
            borderPage.IsModified      = false;
            detailForm.RegisterPage("枠線", borderPage);
        }
示例#6
0
        private void _optionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var form = new DetailSettingsForm();

            try {
                form.Text  = "オプション";
                form.Size  = new Size(500, 400);
                form.Theme = _theme;

                var basic = new BasicSettingsDetailPage(
                    _app.Settings, _app.WindowSettings, _app.MainForm.ToolRegistry
                    );
                form.RegisterPage("基本", basic);

                var background = new BackgroundSettingsDetailPage(_app.Settings, _app.WindowSettings);
                form.RegisterPage("背景", background);

                var confirm = new ConfirmSettingsDetailPage(_app.Settings);
                form.RegisterPage("確認", confirm);

                var folder = new FolderSettingsDetailPage(_app.BootstrapSettings, _app.WindowSettings);
                form.RegisterPage("フォルダ", folder);

                var hotkey = new HotKeySettingsDetailPage(_app.HotKey, _app.WindowSettings);
                form.RegisterPage("ホットキー", hotkey);

                var abbrev = new AbbrevSettingDetailPage(_app._AbbrevWordPersister);
                form.RegisterPage("単語補完", abbrev);

                var misc = new MiscSettingsDetailPage(_app.Settings, _app.WindowSettings);
                form.RegisterPage("その他", misc);

                if (form.ShowDialog(this) == DialogResult.OK)
                {
                    var cmd = form.GetUpdateCommand();
                    if (cmd != null)
                    {
                        cmd.Execute();
                        MessageBox.Show(this, "一部の設定はアプリケーションを再起動するまで反映されません。", "設定の変更");
                    }
                }
            } finally {
                form.Dispose();
            }
        }
        public override void ConfigureDetailForm(DetailSettingsForm detailForm)
        {
            /// property detail page
            var propObj = new PropObj()
            {
                Name       = _Classifier.Name,
                Stereotype = _Classifier.Stereotype,
                IsAbstract = _Classifier.IsAbstract,
                Visibility = _Classifier.Visibility,
            };

            Func <object, ICommand> updateCmdProvider = obj => {
                var old = new PropObj()
                {
                    Name       = _Classifier.Name,
                    Stereotype = _Classifier.Stereotype,
                    IsAbstract = _Classifier.IsAbstract,
                    Visibility = _Classifier.Visibility,
                };
                return(new DelegatingCommand(
                           () => {
                    _Classifier.Name = propObj.Name;
                    _Classifier.Stereotype = propObj.Stereotype;
                    _Classifier.IsAbstract = propObj.IsAbstract;
                    _Classifier.Visibility = propObj.Visibility;
                },
                           () => {
                    _Classifier.Name = old.Name;
                    _Classifier.Stereotype = old.Stereotype;
                    _Classifier.IsAbstract = old.IsAbstract;
                    _Classifier.Visibility = old.Visibility;
                }
                           ));
            };
            var propPage = new PropertyDetailSettingsPage(propObj, updateCmdProvider);

            detailForm.RegisterPage("モデル", propPage);

            base.ConfigureDetailForm(detailForm);
        }
        public override void ConfigureDetailForm(DetailSettingsForm detailForm)
        {
            /// background detail page
            var bgPage = new NodeBackgroundDetailPage(new[] { _owner.Host });

            bgPage.Background = _node.IsBackgroundEnabled? _node.Background: null;
            bgPage.IsModified = false;
            detailForm.RegisterPage("背景", bgPage);

            /// border detail page
            var borderPage = new NodeBorderLineDetailPage(
                new [] {
                _owner.Host,
                _owner.Host.Children.ElementAt(0),
                _owner.Host.Children.ElementAt(1),
            }
                );

            borderPage.LineColor     = _node.Foreground;
            borderPage.LineWidth     = _node.BorderWidth;
            borderPage.LineDashStyle = _node.BorderDashStyle;
            borderPage.IsModified    = false;
            detailForm.RegisterPage("枠線", borderPage);
        }
        private void InitItems()
        {
            _remove        = new ToolStripMenuItem();
            _remove.Text   = "削除(&R)";
            _remove.Click += (sender, e) => {
                using (_owner.CommandExecutor.BeginChain()) {
                    var req  = new RemoveRequest();
                    var cmds = new CompositeCommand();

                    var parent = default(IEditor);
                    foreach (var editor in _owner.SelectionManager.SelectedEditors)
                    {
                        if (parent == null)
                        {
                            parent = editor.Parent;
                        }
                        if (editor.CanUnderstand(req))
                        {
                            cmds.Children.Add(editor.GetCommand(req));
                        }
                    }
                    _owner.CommandExecutor.Execute(cmds);
                    if (parent != null)
                    {
                        parent.RequestSelect(SelectKind.True, true);
                    }
                }
            };

            _clone        = new ToolStripMenuItem();
            _clone.Text   = "複製(&C)";
            _clone.Click += (sender, e) => {
                var cloning = new List <IEditor>(_owner.SelectionManager.SelectedEditors);
                var req     = new CloneRequest(cloning);
                req.MoveDelta = CloneMoveDelta;

                if (cloning.Any())
                {
                    var target = cloning.First().Parent;
                    var cmd    = target.PerformRequest(req) as CloneCommand;
                    if (cmd != null && cmd.ClonedEditors != null)
                    {
                        _owner.SelectionManager.DeselectAll();
                        foreach (var cloned in cmd.ClonedEditors)
                        {
                            cloned.RequestSelect(SelectKind.True, false);
                        }
                    }
                }
            };

            _cut        = new ToolStripMenuItem();
            _cut.Text   = "切り取り(&X)";
            _cut.Click += (sender, e) => {
                var cmd = GetCutCommand();
                _owner.CommandExecutor.Execute(cmd);
            };

            _copy        = new ToolStripMenuItem();
            _copy.Text   = "コピー(&C)";
            _copy.Click += (sender, e) => {
                var targets = _owner.SelectionManager.SelectedEditors;
                var req     = new CopyRequest(targets);
                var list    = new EditorBundle(targets);
                list.PerformGroupRequest(req, _owner.CommandExecutor);
            };

            _copyAsImage        = new ToolStripMenuItem();
            _copyAsImage.Text   = "画像としてコピー(&I)";
            _copyAsImage.Click += (sender, e) => {
                _owner.CopySelectedAsImage();
            };

            _paste        = new ToolStripMenuItem();
            _paste.Text   = "貼り付け(&P)";
            _paste.Click += (sender, e) => {
                var found = _owner.RootEditor.FindEnabledEditor(
                    _currentEvent.Location
                    );
                if (found != null)
                {
                    var cmd = found.RequestPaste(_currentEvent.Location, null) as PasteCommand;
                    if (cmd != null && cmd.PastedEditors != null)
                    {
                        _owner.SelectionManager.DeselectAll();
                        foreach (var editor in cmd.PastedEditors)
                        {
                            editor.RequestSelect(SelectKind.True, false);
                        }
                    }
                }
            };

            _pasteInBlock        = new ToolStripMenuItem();
            _pasteInBlock.Text   = "段落内に貼り付け(&P)";
            _pasteInBlock.Click += (sender, e) => {
                var found = _owner.RootEditor.FindEnabledEditor(
                    _currentEvent.Location
                    );
                if (found != null)
                {
                    var cmd = found.RequestPaste(
                        _currentEvent.Location, EditorConsts.InBlockPasteDescription
                        ) as PasteCommand;
                    if (cmd != null && cmd.PastedEditors != null)
                    {
                        _owner.SelectionManager.DeselectAll();
                        foreach (var editor in cmd.PastedEditors)
                        {
                            editor.RequestSelect(SelectKind.True, false);
                        }
                    }
                }
            };


            _front        = new ToolStripMenuItem();
            _front.Text   = "前面に移動(&F)";
            _front.Click += (sender, e) => {
                var found = _owner.RootEditor.FindEnabledEditor(
                    _currentEvent.Location
                    );
                if (found != null)
                {
                    found.RequestReorder(ReorderKind.Front);
                }
            };

            _frontMost        = new ToolStripMenuItem();
            _frontMost.Text   = "最前面に移動(&F)";
            _frontMost.Click += (sender, e) => {
                var found = _owner.RootEditor.FindEnabledEditor(
                    _currentEvent.Location
                    );
                if (found != null)
                {
                    found.RequestReorder(ReorderKind.FrontMost);
                }
            };

            _back        = new ToolStripMenuItem();
            _back.Text   = "背面に移動(&B)";
            _back.Click += (sender, e) => {
                var found = _owner.RootEditor.FindEnabledEditor(
                    _currentEvent.Location
                    );
                if (found != null)
                {
                    found.RequestReorder(ReorderKind.Back);
                }
            };

            _backMost        = new ToolStripMenuItem();
            _backMost.Text   = "最背面に移動(&B)";
            _backMost.Click += (sender, e) => {
                var found = _owner.RootEditor.FindEnabledEditor(
                    _currentEvent.Location
                    );
                if (found != null)
                {
                    found.RequestReorder(ReorderKind.BackMost);
                }
            };

            _arrangeHLeft        = new ToolStripMenuItem("左揃え(&L)");
            _arrangeHLeft.Click += (sender, e) => {
                var editors = _owner.SelectionManager.SelectedEditors;
                var rect    = editors.Select(ed => ed.Figure.Bounds).Aggregate((r1, r2) => Rectangle.Union(r1, r2));
                using (_owner.CommandExecutor.BeginChain()) {
                    foreach (var edi in editors)
                    {
                        var left = rect.Left;
                        edi.RequestMove(new Size(left - edi.Figure.Left, 0));
                    }
                }
            };

            _arrangeHCenter        = new ToolStripMenuItem("左右中央揃え(&C)");
            _arrangeHCenter.Click += (sender, e) => {
                var editors = _owner.SelectionManager.SelectedEditors;
                var rect    = editors.Select(ed => ed.Figure.Bounds).Aggregate((r1, r2) => Rectangle.Union(r1, r2));
                var center  = RectUtil.GetCenter(rect);
                using (_owner.CommandExecutor.BeginChain()) {
                    foreach (var edi in editors)
                    {
                        var left = center.X - edi.Figure.Width / 2;
                        edi.RequestMove(new Size(left - edi.Figure.Left, 0));
                    }
                }
            };

            _arrangeHRight        = new ToolStripMenuItem("右揃え(&R)");
            _arrangeHRight.Click += (sender, e) => {
                var editors = _owner.SelectionManager.SelectedEditors;
                var rect    = editors.Select(ed => ed.Figure.Bounds).Aggregate((r1, r2) => Rectangle.Union(r1, r2));
                using (_owner.CommandExecutor.BeginChain()) {
                    foreach (var edi in editors)
                    {
                        var left = rect.Right - edi.Figure.Width;
                        edi.RequestMove(new Size(left - edi.Figure.Left, 0));
                    }
                }
            };

            _arrangeVTop        = new ToolStripMenuItem("上揃え(&T)");
            _arrangeVTop.Click += (sender, e) => {
                var editors = _owner.SelectionManager.SelectedEditors;
                var rect    = editors.Select(ed => ed.Figure.Bounds).Aggregate((r1, r2) => Rectangle.Union(r1, r2));
                using (_owner.CommandExecutor.BeginChain()) {
                    foreach (var edi in editors)
                    {
                        var top = rect.Top;
                        edi.RequestMove(new Size(0, top - edi.Figure.Top));
                    }
                }
            };

            _arrangeVMiddle        = new ToolStripMenuItem("上下中央揃え(&M)");
            _arrangeVMiddle.Click += (sender, e) => {
                var editors = _owner.SelectionManager.SelectedEditors;
                var rect    = editors.Select(ed => ed.Figure.Bounds).Aggregate((r1, r2) => Rectangle.Union(r1, r2));
                var center  = RectUtil.GetCenter(rect);
                using (_owner.CommandExecutor.BeginChain()) {
                    foreach (var edi in editors)
                    {
                        var top = center.Y - edi.Figure.Height / 2;
                        edi.RequestMove(new Size(0, top - edi.Figure.Top));
                    }
                }
            };

            _arrangeVBottom        = new ToolStripMenuItem("下揃え(&B)");
            _arrangeVBottom.Click += (sender, e) => {
                var editors = _owner.SelectionManager.SelectedEditors;
                var rect    = editors.Select(ed => ed.Figure.Bounds).Aggregate((r1, r2) => Rectangle.Union(r1, r2));
                using (_owner.CommandExecutor.BeginChain()) {
                    foreach (var edi in editors)
                    {
                        var top = rect.Bottom - edi.Figure.Height;
                        edi.RequestMove(new Size(0, top - edi.Figure.Top));
                    }
                }
            };


            _detailForm        = new ToolStripMenuItem();
            _detailForm.Text   = "設定(&S)";
            _detailForm.Click += (sender, e) => {
                var found = _owner.RootEditor.FindEnabledEditor(
                    _currentEvent.Location
                    );
                if (found != null)
                {
                    if (found.Controller != null && found.Controller.UIProvider != null)
                    {
                        var ui   = found.Controller.UIProvider;
                        var form = new DetailSettingsForm();
                        try {
                            form.Size  = _detailFormSize;
                            form.Theme = _owner.Theme;
                            ui.ConfigureDetailForm(form);
                            if (form.ShowDialog() == DialogResult.OK)
                            {
                                var cmd = form.GetUpdateCommand();
                                if (cmd != null)
                                {
                                    _owner.CommandExecutor.Execute(cmd);
                                }
                            }
                        } finally {
                            form.Dispose();
                        }
                    }
                }
            };
        }
        // ========================================
        // property
        // ========================================

        // ========================================
        // method
        // ========================================
        public override void ConfigureDetailForm(DetailSettingsForm detailForm)
        {
            /// property detail page
            var propObj = new PropObj()
            {
                Name             = _property.Name,
                Stereotype       = _property.Stereotype,
                Type             = _property.TypeName,
                IsStatic         = _property.IsStatic,
                IsDerived        = _property.IsDerived,
                IsReadOnly       = _property.IsReadOnly,
                IsUnique         = _property.IsUnique,
                IsOrdered        = _property.IsOrdered,
                IsUpperUnlimited = _property.IsUpperUnlimited,
                Upper            = _property.Upper,
                Lower            = _property.Lower,
                Default          = _property.Default,
                Visibility       = _property.Visibility,
            };

            Func <object, ICommand> updateCmdProvider = obj => {
                var old = new PropObj()
                {
                    Name             = _property.Name,
                    Stereotype       = _property.Stereotype,
                    Type             = _property.TypeName,
                    IsStatic         = _property.IsStatic,
                    IsDerived        = _property.IsDerived,
                    IsReadOnly       = _property.IsReadOnly,
                    IsUnique         = _property.IsUnique,
                    IsOrdered        = _property.IsOrdered,
                    IsUpperUnlimited = _property.IsUpperUnlimited,
                    Upper            = _property.Upper,
                    Lower            = _property.Lower,
                    Default          = _property.Default,
                    Visibility       = _property.Visibility,
                };
                return(new DelegatingCommand(
                           () => {
                    _property.Name = propObj.Name;
                    _property.Stereotype = propObj.Stereotype;
                    _property.TypeName = propObj.Type;
                    _property.IsStatic = propObj.IsStatic;
                    _property.IsDerived = propObj.IsDerived;
                    _property.IsReadOnly = propObj.IsReadOnly;
                    _property.IsUnique = propObj.IsUnique;
                    _property.IsOrdered = propObj.IsOrdered;
                    _property.IsUpperUnlimited = propObj.IsUpperUnlimited;
                    _property.Upper = propObj.Upper;
                    _property.Lower = propObj.Lower;
                    _property.Default = propObj.Default;
                    _property.Visibility = propObj.Visibility;
                },
                           () => {
                    _property.Name = old.Name;
                    _property.Stereotype = old.Stereotype;
                    _property.TypeName = old.Type;
                    _property.IsStatic = old.IsStatic;
                    _property.IsDerived = old.IsDerived;
                    _property.IsReadOnly = old.IsReadOnly;
                    _property.IsUnique = old.IsUnique;
                    _property.IsOrdered = old.IsOrdered;
                    _property.IsUpperUnlimited = old.IsUpperUnlimited;
                    _property.Upper = old.Upper;
                    _property.Lower = old.Lower;
                    _property.Default = old.Default;
                    _property.Visibility = old.Visibility;
                }
                           ));
            };
            var propPage = new PropertyDetailSettingsPage(propObj, updateCmdProvider);

            detailForm.RegisterPage("モデル", propPage);
        }
示例#11
0
 // ========================================
 // method
 // ========================================
 public virtual void ConfigureDetailForm(DetailSettingsForm detailForm)
 {
 }
示例#12
0
 public override void ConfigureDetailForm(DetailSettingsForm detailForm)
 {
 }
示例#13
0
        public override void ConfigureDetailForm(DetailSettingsForm detailForm)
        {
            var fig = _owner.Figure;

            var assoc  = _owner.Model;
            var source = assoc.SourceMemberEnd;
            var target = assoc.TargetMemberEnd;

            /// property detail page
            var propObj = new PropObj()
            {
                IsSourceNavigable = assoc.IsSourceNavigable,
                IsTargetNavigable = assoc.IsTargetNavigable,
                SourceMemberEnd   = new MemberEnd()
                {
                    Name             = source.Name,
                    Stereotype       = source.Stereotype,
                    Aggregation      = source.Aggregation,
                    IsUpperUnlimited = source.IsUpperUnlimited,
                    Upper            = source.Upper,
                    Lower            = source.Lower,
                    Visibility       = source.Visibility,
                },
                TargetMemberEnd = new MemberEnd()
                {
                    Name             = target.Name,
                    Stereotype       = target.Stereotype,
                    Aggregation      = target.Aggregation,
                    IsUpperUnlimited = target.IsUpperUnlimited,
                    Upper            = target.Upper,
                    Lower            = target.Lower,
                    Visibility       = target.Visibility,
                },
            };

            Func <object, ICommand> updateCmdProvider = obj => {
                var old = new PropObj()
                {
                    IsSourceNavigable = assoc.IsSourceNavigable,
                    IsTargetNavigable = assoc.IsTargetNavigable,
                    SourceMemberEnd   = new MemberEnd()
                    {
                        Name             = source.Name,
                        Stereotype       = source.Stereotype,
                        Aggregation      = source.Aggregation,
                        IsUpperUnlimited = source.IsUpperUnlimited,
                        Upper            = source.Upper,
                        Lower            = source.Lower,
                        Visibility       = source.Visibility,
                    },
                    TargetMemberEnd = new MemberEnd()
                    {
                        Name             = target.Name,
                        Stereotype       = target.Stereotype,
                        Aggregation      = target.Aggregation,
                        IsUpperUnlimited = target.IsUpperUnlimited,
                        Upper            = target.Upper,
                        Lower            = target.Lower,
                        Visibility       = target.Visibility,
                    },
                };
                return(new DelegatingCommand(
                           () => {
                    assoc.IsSourceNavigable = propObj.IsSourceNavigable;
                    assoc.IsTargetNavigable = propObj.IsTargetNavigable;

                    source.Name = propObj.SourceMemberEnd.Name;
                    source.Stereotype = propObj.SourceMemberEnd.Stereotype;
                    source.Aggregation = propObj.SourceMemberEnd.Aggregation;
                    source.IsUpperUnlimited = propObj.SourceMemberEnd.IsUpperUnlimited;
                    source.Upper = propObj.SourceMemberEnd.Upper;
                    source.Lower = propObj.SourceMemberEnd.Lower;
                    source.Visibility = propObj.SourceMemberEnd.Visibility;

                    target.Name = propObj.TargetMemberEnd.Name;
                    target.Stereotype = propObj.TargetMemberEnd.Stereotype;
                    target.Aggregation = propObj.TargetMemberEnd.Aggregation;
                    target.IsUpperUnlimited = propObj.TargetMemberEnd.IsUpperUnlimited;
                    target.Upper = propObj.TargetMemberEnd.Upper;
                    target.Lower = propObj.TargetMemberEnd.Lower;
                    target.Visibility = propObj.TargetMemberEnd.Visibility;
                },
                           () => {
                    assoc.IsSourceNavigable = old.IsSourceNavigable;
                    assoc.IsTargetNavigable = old.IsTargetNavigable;

                    source.Name = old.SourceMemberEnd.Name;
                    source.Stereotype = old.SourceMemberEnd.Stereotype;
                    source.Aggregation = old.SourceMemberEnd.Aggregation;
                    source.IsUpperUnlimited = old.SourceMemberEnd.IsUpperUnlimited;
                    source.Upper = old.SourceMemberEnd.Upper;
                    source.Lower = old.SourceMemberEnd.Lower;
                    source.Visibility = old.SourceMemberEnd.Visibility;

                    target.Name = old.TargetMemberEnd.Name;
                    target.Stereotype = old.TargetMemberEnd.Stereotype;
                    target.Aggregation = old.TargetMemberEnd.Aggregation;
                    target.IsUpperUnlimited = old.TargetMemberEnd.IsUpperUnlimited;
                    target.Upper = old.TargetMemberEnd.Upper;
                    target.Lower = old.TargetMemberEnd.Lower;
                    target.Visibility = old.TargetMemberEnd.Visibility;
                }
                           ));
            };
            var propPage = new PropertyDetailSettingsPage(propObj, updateCmdProvider);

            detailForm.RegisterPage("モデル", propPage);

            /// line detail page
            var borderPage = new EdgeLineDetailPage(new[] { _owner.Host });

            borderPage.LineColor     = fig.LineColor;
            borderPage.LineWidth     = fig.LineWidth;
            borderPage.LineDashStyle = fig.LineDashStyle;
            borderPage.IsModified    = false;
            detailForm.RegisterPage("線", borderPage);
        }