Пример #1
0
        private void SetActiveDocument(Stream stream)
        {
            var domReader = new DomXmlReader(s_schemaLoader);
            var node      = domReader.Read(stream, null);

            node.InitializeExtensions();
            m_activeDocument = node.Cast <SkinDocument>();
            var context = node.As <SkinEditingContext>();

            m_treeControlAdapter.TreeView = context;
            m_PropertyGrid.Bind(null);
            context.SelectionChanged += (sender, e) =>
            {
                var selectedNode = context.GetLastSelected <DomNode>();
                var propContext  = new CustomPropertyEditingContext(selectedNode, m_activeDocument);
                m_PropertyGrid.Bind(propContext);
            };

            context.Ended     += Context_Refresh;
            context.Cancelled += Context_Refresh;

            m_activeDocument.UriChanged   += (sender, e) => UpdateTitleText();
            m_activeDocument.DirtyChanged += (sender, e) => UpdateTitleText();
            UpdateTitleText();
            OnSkinChanged();
        }
Пример #2
0
        private void TabPageSelected(object sender, TabControlEventArgs e)
        {
            ListBox listbox = GetActiveList();

            if (listbox == null)
            {
                return;
            }
            var propcontext = new CustomPropertyEditingContext(listbox.SelectedItem);

            m_propertyGrid.Bind(propcontext);
        }
Пример #3
0
        private void ListBoxSelectedIndexChanged(object sender, EventArgs e)
        {
            ListBox listbox = GetActiveList();

            if (sender != listbox)
            {
                return;
            }
            var propcontext = new CustomPropertyEditingContext(listbox.SelectedItem);

            m_propertyGrid.Bind(propcontext);
        }
Пример #4
0
            public ClonedPropertyEditor(PropertyEditor propEditor)
            {
                var editingContext = propEditor.PropertyGrid.PropertyGridView.EditingContext;

                // there is no reason to clone empty property editor.
                if (editingContext == null)
                {
                    throw new ArgumentException("propEditor");
                }

                // don't create cloned property editor
                // if there is nothing to edit
                if (editingContext.PropertyDescriptors == null || !editingContext.PropertyDescriptors.Any())
                {
                    return;
                }

                if (editingContext is SelectionPropertyEditingContext)
                {
                    m_context = ((SelectionPropertyEditingContext)editingContext).SelectionContext;
                }
                else
                {
                    m_context = editingContext;
                }


                m_propertyEditor = propEditor;
                m_propertyEditor.Configure(out m_propertyGrid, out m_controlInfo);


                m_selectionButton = new ToolStripButton();
                m_selectionButton.DisplayStyle = ToolStripItemDisplayStyle.Image;
                m_selectionButton.Image        = ResourceUtil.GetImage16(Resources.SelectionFindImage);
                m_selectionButton.Name         = "selectionButton";
                m_selectionButton.Size         = new Size(29, 22);
                m_selectionButton.ToolTipText  = "Select bound object(s)".Localize();
                m_selectionButton.Click       += (sender, e) =>
                {
                    // select bound object
                    ISelectionContext selCntx = m_context.As <ISelectionContext>();
                    var edCntx = m_propertyGrid.PropertyGridView.EditingContext;
                    if (selCntx != null && edCntx != null)
                    {
                        selCntx.SetRange(edCntx.Items);
                    }
                };

                m_propertyGrid.ToolStrip.Items.Add(m_selectionButton);
                m_propertyGrid.PropertyGridView.ContextRegistry = propEditor.ContextRegistry;

                m_controlInfo.Name              = propEditor.m_controlInfo.DisplayName + "_" + ++s_cloneId;
                m_controlInfo.Group             = PropertyEditor.ClonedEditorGroup;
                m_controlInfo.UnregisterOnClose = true;
                m_propertyEditor.ControlHostService.RegisterControl(m_propertyGrid, m_controlInfo, this);

                m_propertyEditingContext = new CustomPropertyEditingContext(editingContext);
                m_propertyGrid.Bind(m_propertyEditingContext);

                m_propertyGrid.PropertySorting = propEditor.PropertyGrid.PropertySorting;

                // copy expansion state
                var zip = propEditor.PropertyGrid.PropertyGridView.Categories.Zip(m_propertyGrid.PropertyGridView.Categories, (src, dest) => new { src, dest });

                foreach (var pair in zip)
                {
                    if (pair.dest.Name == pair.src.Name)
                    {
                        pair.dest.Expanded = pair.src.Expanded;
                    }
                }

                m_propertyGrid.MouseUp += (sender, e) => OnPropertyGridMouseUp(e);

                // subscribe to events.
                // It is necessary to unsubscribe to allow this object to be garbage collected.

                if (m_propertyEditor.DocumentRegistry != null)
                {
                    m_propertyEditor.DocumentRegistry.DocumentRemoved       += DocumentRegistry_DocumentRemoved;
                    m_propertyEditor.DocumentRegistry.ActiveDocumentChanged += DocumentRegistry_ActiveDocumentChanged;
                }
                m_observableContext = m_context.As <IObservableContext>();
                m_validationContext = m_context.As <IValidationContext>();

                if (m_observableContext != null)
                {
                    m_observableContext.ItemChanged  += observableContext_ItemChanged;
                    m_observableContext.ItemInserted += observableContext_ItemInserted;
                    m_observableContext.ItemRemoved  += observableContext_ItemRemoved;
                }
                if (m_validationContext != null)
                {
                    m_validationContext.Beginning += validationContext_Beginning;
                    m_validationContext.Ended     += validationContext_Ended;
                    m_validationContext.Cancelled += validationContext_Cancelled;
                }
            }
Пример #5
0
        private void SetActiveDocument(Stream stream)
        {
            var domReader = new DomXmlReader(s_schemaLoader);
            var node = domReader.Read(stream, null);
            node.InitializeExtensions();
            m_activeDocument = node.Cast<SkinDocument>();
            var context = node.As<SkinEditingContext>();
            m_treeControlAdapter.TreeView = context;
            m_PropertyGrid.Bind(null);
            context.SelectionChanged += (sender, e) =>
            {
                var selectedNode = context.GetLastSelected<DomNode>();
                var propContext = new CustomPropertyEditingContext(selectedNode, m_activeDocument);
                m_PropertyGrid.Bind(propContext);
            };

            context.Ended += Context_Refresh;
            context.Cancelled += Context_Refresh;

            m_activeDocument.UriChanged += (sender, e) => UpdateTitleText();
            m_activeDocument.DirtyChanged += (sender, e) => UpdateTitleText();
            UpdateTitleText();
            OnSkinChanged();
        }
Пример #6
0
            public ClonedPropertyEditor(PropertyEditor propEditor)
            {
                var editingContext = propEditor.PropertyGrid.PropertyGridView.EditingContext;

                // there is no reason to clone empty property editor.
                if (editingContext == null)
                    throw new ArgumentException("propEditor");

                // don't create cloned property editor 
                // if there is nothing to edit
                if (editingContext.PropertyDescriptors == null || !editingContext.PropertyDescriptors.Any()) 
                    return;

                if(editingContext is SelectionPropertyEditingContext)
                    m_context = ((SelectionPropertyEditingContext)editingContext).SelectionContext;
                else
                    m_context = editingContext;

                                                                  
                m_propertyEditor = propEditor;
                m_propertyEditor.Configure(out m_propertyGrid, out m_controlInfo);


                m_selectionButton = new ToolStripButton();
                m_selectionButton.DisplayStyle = ToolStripItemDisplayStyle.Image;
                m_selectionButton.Image = ResourceUtil.GetImage16(Resources.SelectionFindImage);
                m_selectionButton.Name = "selectionButton";
                m_selectionButton.Size = new Size(29, 22);
                m_selectionButton.ToolTipText = "Select bound object(s)".Localize();
                m_selectionButton.Click += (sender, e) =>
                    {
                        // select bound object
                        ISelectionContext selCntx = m_context.As<ISelectionContext>();
                        var edCntx = m_propertyGrid.PropertyGridView.EditingContext;
                        if (selCntx != null && edCntx != null)
                        {
                            selCntx.SetRange(edCntx.Items);
                        }
                    };

                m_propertyGrid.ToolStrip.Items.Add(m_selectionButton);
                m_propertyGrid.PropertyGridView.ContextRegistry = propEditor.ContextRegistry;

                m_controlInfo.Name = propEditor.m_controlInfo.DisplayName + "_" + ++s_cloneId;
                m_controlInfo.Group = PropertyEditor.ClonedEditorGroup;
                m_controlInfo.UnregisterOnClose = true;
                m_propertyEditor.ControlHostService.RegisterControl(m_propertyGrid, m_controlInfo, this);

                m_propertyEditingContext = new CustomPropertyEditingContext(editingContext);
                m_propertyGrid.Bind(m_propertyEditingContext);

                m_propertyGrid.PropertySorting = propEditor.PropertyGrid.PropertySorting;
                
                // copy expansion state
                var zip = propEditor.PropertyGrid.PropertyGridView.Categories.Zip(m_propertyGrid.PropertyGridView.Categories, (src, dest) => new { src, dest });
                foreach (var pair in zip)
                {                  
                    if (pair.dest.Name == pair.src.Name)
                        pair.dest.Expanded = pair.src.Expanded;
                }

                m_propertyGrid.MouseUp += (sender, e) => OnPropertyGridMouseUp(e);

                // subscribe to events.
                // It is necessary to unsubscribe to allow this object to be garbage collected.               

                if (m_propertyEditor.DocumentRegistry != null)
                {
                    m_propertyEditor.DocumentRegistry.DocumentRemoved += DocumentRegistry_DocumentRemoved;
                    m_propertyEditor.DocumentRegistry.ActiveDocumentChanged += DocumentRegistry_ActiveDocumentChanged;
                }                              
                m_observableContext = m_context.As<IObservableContext>();
                m_validationContext = m_context.As<IValidationContext>();

                if (m_observableContext != null)
                {
                    m_observableContext.ItemChanged += observableContext_ItemChanged;
                    m_observableContext.ItemInserted += observableContext_ItemInserted;
                    m_observableContext.ItemRemoved += observableContext_ItemRemoved;
                }
                if (m_validationContext != null)
                {
                    m_validationContext.Beginning += validationContext_Beginning;
                    m_validationContext.Ended += validationContext_Ended;
                    m_validationContext.Cancelled += validationContext_Cancelled;
                }
            }