예제 #1
0
        /// <summary>
        /// Remove Item on Tree Node selected.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        /// <param name="t">The t.</param>
        private void RemoveItem_Click(object sender, EventArgs e, TreeNode t)
        {
            SunModelPart p = Utils.GetTreeNodeClass(t);
            string       s = String.Concat("Please confirm you are deleteing ", p.ToString(), " ", t.Text);

            using (Confirm c = new Confirm(s))
            {
                Point location = new Point((this.Left + (this.Width / 2)) - c.Width / 2, (this.Top + (this.Height / 2)) - c.Height / 2);
                c.StartPosition = FormStartPosition.Manual;
                c.Location      = location;
                var result = c.ShowDialog();
                if (result == DialogResult.OK)
                {
                    if (p == SunModelPart.Measure)
                    {
                        this.cmodel.RemoveMeasure(t.Text, Utils.GetBusinessProcessName(t));
                    }
                    if (p == SunModelPart.Dimension)
                    {
                        this.cmodel.RemoveDimension(t.Text, Utils.GetBusinessProcessName(t));
                    }
                    if (p == SunModelPart.Attribute || p == SunModelPart.SharedNodeReference)
                    {
                        this.cmodel.RemoveLevelByUID(t.Name, Utils.GetDimension(t), Utils.GetBusinessProcessName(t));
                    }
                    if (p == SunModelPart.BusinessProcess)
                    {
                        this.cmodel.RemoveBusinessProcess(t.Text);
                        tabControlArea.TabPages.Remove(tabControlArea.SelectedTab);
                    }
                    else
                    {
                        t.Remove();
                    }
                    RefreshGraphics();
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Handles a NodeMouseClick to the Tree View
        /// It should dynamically generate a menu if the node is right clicked
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="TreeNodeMouseClickEventArgs"/> instance containing the event data.</param>
        private void DynTree_AfterSelect(object sender, TreeNodeMouseClickEventArgs e)
        {
            // Get the selected node.
            TreeNode     node = e.Node;
            SunModelPart p    = Utils.GetTreeNodeClass((TreeNode)e.Node);

            UpdatePropertyGrid(node);


            if (e.Button == MouseButtons.Right)
            {
                ContextMenu cm = new ContextMenu();

                if (p == SunModelPart.BusinessProcess && this.cmodel.BusinessProcess.Count() > 1)
                {
                    MenuItem item = new MenuItem();
                    item.Text   = "Delete";
                    item.Click += (s, EventArgs) => { RemoveItem_Click(sender, EventArgs, (TreeNode)e.Node); };
                    cm.MenuItems.Add(item);
                }
                if (p == SunModelPart.Measure || p == SunModelPart.Dimension || p == SunModelPart.Attribute)
                {
                    MenuItem item = new MenuItem();
                    item.Text   = "Delete";
                    item.Click += (s, EventArgs) => { RemoveItem_Click(sender, EventArgs, (TreeNode)e.Node); };
                    cm.MenuItems.Add(item);
                }
                if (p == SunModelPart.SharedNodeReference && ((Level)e.Node.Tag).IsSharedLevel())
                {
                    MenuItem item = new MenuItem();
                    item.Text   = "Delete";
                    item.Click += (s, EventArgs) => { RemoveItem_Click(sender, EventArgs, (TreeNode)e.Node); };
                    cm.MenuItems.Add(item);
                }
                if (p == SunModelPart.Attribute)
                {
                    MenuItem item = new MenuItem();
                    item.Text   = "Convert To Shared Node";
                    item.Click += (s, EventArgs) => { ConvertItem_Click(sender, EventArgs, (TreeNode)e.Node, ReferenceType.Key); };
                    cm.MenuItems.Add(item);
                    item        = new MenuItem();
                    item.Text   = "Convert To Cross Dimensional Attribute";
                    item.Click += (s, EventArgs) => { ConvertItem_Click(sender, EventArgs, (TreeNode)e.Node, ReferenceType.CDAKey); };
                    cm.MenuItems.Add(item);
                    item        = new MenuItem();
                    item.Text   = "Convert To Converged Shared Node";
                    item.Click += (s, EventArgs) => { ConvertItem_Click(sender, EventArgs, (TreeNode)e.Node, ReferenceType.ConvergedKey); };
                    cm.MenuItems.Add(item);
                }

                if (p == SunModelPart.BusinessProcess || p == SunModelPart.DimensionGroup)
                {
                    MenuItem item = new MenuItem("Add Dimension", AddDimension_Click);
                    cm.MenuItems.Add(item);
                }
                if (p == SunModelPart.BusinessProcess || p == SunModelPart.MeasureGroup)
                {
                    MenuItem item = new MenuItem("Add Measure", AddMeasure_Click);
                    cm.MenuItems.Add(item);
                }
                if (p == SunModelPart.Measure)
                {
                    MenuItem item = new MenuItem();
                    item.Text   = "Add Aggegation";
                    item.Click += (s, EventArgs) => { AddAggregation_Click(sender, EventArgs, (TreeNode)e.Node); };
                    cm.MenuItems.Add(item);
                }
                if (p == SunModelPart.Dimension)
                {
                    TreeNodeCollection n = ((TreeNode)e.Node).Nodes;
                    if (n == null || n.Count == 0)
                    {
                        MenuItem item = new MenuItem();
                        item.Text   = "Add Attribute";
                        item.Click += (s, EventArgs) => { AddAttribute_Click(sender, EventArgs, (TreeNode)e.Node); };
                        cm.MenuItems.Add(item);
                    }
                }
                if (p == SunModelPart.Attribute)
                {
                    MenuItem item = new MenuItem();
                    item.Text   = "Add Attribute";
                    item.Click += (s, EventArgs) => { AddAttribute_Click(sender, EventArgs, (TreeNode)e.Node); };
                    cm.MenuItems.Add(item);
                }
                cm.Show((Control)sender, e.Location);
            }
        }
예제 #3
0
        /// <summary>
        /// Updates the property grid.
        /// </summary>
        /// <param name="node">The node to be shown.</param>
        private void UpdatePropertyGrid(TreeNode node)
        {
            SunModelPart    p = Utils.GetTreeNodeClass(node);
            string          businessProcess = this.tabControlArea.SelectedTab.Text;
            BusinessProcess b = this.cmodel.GetBusinessProcess(businessProcess);

            if (p == SunModelPart.BusinessProcess)
            {
                this.propertyGridArea.SelectedObject = b;
            }
            else if (p == SunModelPart.Measure || p == SunModelPart.Dimension)
            {
                this.propertyGridArea.SelectedObject = node.Tag;
            }
            else if (p == SunModelPart.Attribute || p == SunModelPart.SharedNode)
            {
                PropertyDescriptorCollection props = TypeDescriptor.GetProperties(node.Tag.GetType());
                foreach (PropertyDescriptor desc in props)
                {
                    ReadOnlyAttribute roAttribute = (ReadOnlyAttribute)
                                                    desc.Attributes[typeof(ReadOnlyAttribute)];
                    FieldInfo roFieldToChange = roAttribute.GetType().GetField("isReadOnly",
                                                                               System.Reflection.BindingFlags.NonPublic |
                                                                               System.Reflection.BindingFlags.Instance);
                    roFieldToChange.SetValue(roAttribute, (desc.Name == "UID"));

                    BrowsableAttribute brAttribute = (BrowsableAttribute)
                                                     desc.Attributes[typeof(BrowsableAttribute)];
                    FieldInfo brFieldToChange = brAttribute.GetType().GetField("browsable",
                                                                               System.Reflection.BindingFlags.NonPublic |
                                                                               System.Reflection.BindingFlags.Instance);
                    brFieldToChange.SetValue(brAttribute, (desc.Name != "Level1" && desc.Name != "X_position" && desc.Name != "Y_position" && (
                                                               p != SunModelPart.SharedNode ||
                                                               (p == SunModelPart.SharedNode && desc.Name != "CDAKey" && desc.Name != "ConvergedKey" && desc.Name != "Key"))));
                }


                this.propertyGridArea.SelectedObject = node.Tag;
            }
            else if (p == SunModelPart.SharedNodeReference)
            {
                PropertyDescriptorCollection props = TypeDescriptor.GetProperties((typeof(Level)));
                foreach (PropertyDescriptor desc in props)
                {
                    ReadOnlyAttribute roAttribute = (ReadOnlyAttribute)
                                                    desc.Attributes[typeof(ReadOnlyAttribute)];
                    FieldInfo roFieldToChange = roAttribute.GetType().GetField("isReadOnly",
                                                                               System.Reflection.BindingFlags.NonPublic |
                                                                               System.Reflection.BindingFlags.Instance);
                    roFieldToChange.SetValue(roAttribute, true);

                    BrowsableAttribute brAttribute = (BrowsableAttribute)
                                                     desc.Attributes[typeof(BrowsableAttribute)];
                    FieldInfo brFieldToChange = brAttribute.GetType().GetField("browsable",
                                                                               System.Reflection.BindingFlags.NonPublic |
                                                                               System.Reflection.BindingFlags.Instance);
                    brFieldToChange.SetValue(brAttribute, (desc.Name == "UID" || desc.Name == "CDAKey" || desc.Name == "ConvergedKey" || desc.Name == "Key"));
                }

                this.propertyGridArea.SelectedObject = node.Tag;
            }
            else
            {
                this.propertyGridArea.SelectedObject = node.Tag;
            }
        }