Beispiel #1
0
        void onDragDrop(object sender, DragEventArgs e)
        {
            if (!Helper.CanDragAndDrop(e))
            {
                return;
            }
            if (_modelPanel.Model.IsSubModel)
            {
                return;
            }

            Button button = null;

            if (e.Data.GetDataPresent(typeof(TreeNode)))
            {
                TreeNode elementNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
                button = _modelPanel.AddElement(this, (MetaColumn)elementNode.Tag, true);
                _modelPanel.MainForm.IsModified = true;
                _modelPanel.MainForm.CannotRenderAnymore();

                _modelPanel.UpdateLINQModel();
            }

            if (e.Data.GetDataPresent(typeof(Button)))
            {
                button = (Button)e.Data.GetData(typeof(Button));
            }
            if (button != null)
            {
                ElementPanel source = null;
                if (button.Parent != this)
                {
                    //Button comes from another panel
                    ReportElement element = (ReportElement)button.Tag;
                    source = (ElementPanel)button.Parent;
                    source.Controls.Remove(button);
                    element.PivotPosition = Position;
                    element.InitEditor();
                    source.RedrawPanel();
                    Controls.Add(button);
                    _modelPanel.MainForm.IsModified = true;
                    _modelPanel.MainForm.CannotRenderAnymore();
                    _modelPanel.PanelsToElements();
                }

                //Set new position
                int index = getIndexFocus(e);
                if (index != -1 && Controls[index] != button)
                {
                    Controls.SetChildIndex(button, index);
                    _modelPanel.MainForm.IsModified = true;
                    _modelPanel.MainForm.CannotRenderAnymore();
                    _modelPanel.PanelsToElements();
                }
                RedrawPanel();
                button.Focus();
            }
            _modelPanel.Model.CheckSortOrders();
        }
Beispiel #2
0
        void removeElementFromPanel(Button elementButton, bool all)
        {
            ElementPanel panel = (ElementPanel)elementButton.Parent;

            if (all)
            {
                panel.Controls.Clear();
            }
            else
            {
                panel.Controls.Remove(elementButton);
            }
            MainForm.CannotRenderAnymore();
            PanelsToElements();
            SelectedButton             = null;
            ElementGrid.SelectedObject = null;
            panel.RedrawPanel();
            MainForm.IsModified = true;
        }
Beispiel #3
0
        void addElement(bool replaceSelected)
        {
            if (elementTreeView.SelectedNode != null && elementTreeView.SelectedNode.Tag is MetaColumn)
            {
                //If an element is already selected, try to insert the new one just after...
                ElementPanel panel = RowPanel;
                if (SelectedButton != null && SelectedButton.Parent is ElementPanel)
                {
                    panel = SelectedButton.Parent as ElementPanel;
                }
                int           newIndex = -1;
                ReportElement element  = null;
                if (SelectedButton != null && SelectedButton.Tag is ReportElement && panel.Controls.Contains(SelectedButton))
                {
                    element = SelectedButton.Tag as ReportElement;
                    if (element.PivotPosition == PivotPosition.Data)
                    {
                        panel = DataPanel;
                    }
                    if (element.PivotPosition == PivotPosition.Column)
                    {
                        panel = ColumnPanel;
                    }
                    if (element.PivotPosition == PivotPosition.Page)
                    {
                        panel = PagePanel;
                    }

                    newIndex = panel.Controls.GetChildIndex(SelectedButton) + 1;

                    if (replaceSelected)
                    {
                        panel.Controls.Remove(SelectedButton);
                        Model.Elements.Remove(element);
                        newIndex--;
                    }
                }

                //For aggregate force data panel
                if (!replaceSelected && ((MetaColumn)elementTreeView.SelectedNode.Tag).IsAggregate)
                {
                    panel = DataPanel;
                }

                Button button = AddElement(panel, (MetaColumn)elementTreeView.SelectedNode.Tag, true);
                //move position to the next button
                if (newIndex != -1)
                {
                    panel.Controls.SetChildIndex(button, newIndex);
                }

                if (replaceSelected && element != null)
                {
                    //copy interesting properties
                    ReportElement newElement = button.Tag as ReportElement;
                    newElement.AggregateFunction      = element.AggregateFunction;
                    newElement.CalculationOption      = element.CalculationOption;
                    newElement.Nvd3Serie              = element.Nvd3Serie;
                    newElement.ChartJSSerie           = element.ChartJSSerie;
                    newElement.PlotlySerie            = element.PlotlySerie;
                    newElement.SerieDefinition        = element.SerieDefinition;
                    newElement.SerieSortOrder         = element.SerieSortOrder;
                    newElement.SerieSortType          = element.SerieSortType;
                    newElement.TotalAggregateFunction = element.TotalAggregateFunction;
                    newElement.ShowTotal              = element.ShowTotal;
                    newElement.SortOrder              = element.SortOrder;
                    newElement.XAxisType              = element.XAxisType;
                    newElement.YAxisType              = element.YAxisType;
                }

                MainForm.IsModified = true;
                MainForm.CannotRenderAnymore();
                PanelsToElements();
                panel.RedrawPanel();
                button.Focus();

                UpdateLINQModel();
            }
        }
Beispiel #4
0
        void elementTreeView_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Clicks == 1 && e.Button == MouseButtons.Right)
            {
                // Select the clicked node
                var newNode = elementTreeView.GetNodeAt(e.X, e.Y);
                if (newNode != elementTreeView.SelectedNode)
                {
                    elementTreeView.SelectedNode = newNode;
                }
                ContextMenuStrip menu = new ContextMenuStrip();
                if (elementTreeView.SelectedNode != null && elementTreeView.SelectedNode.Tag is MetaColumn)
                {
                    MetaColumn        column = elementTreeView.SelectedNode.Tag as MetaColumn;
                    ToolStripMenuItem item   = new ToolStripMenuItem("Select");
                    item.Click += new EventHandler(delegate(object sender2, EventArgs e2)
                    {
                        addElement(false);
                    });
                    if (!Model.IsSubModel)
                    {
                        menu.Items.Add(item);
                    }

                    item        = new ToolStripMenuItem("Prompt at run-time");
                    item.Click += new EventHandler(delegate(object sender2, EventArgs e2)
                    {
                        if (column.IsAggregate == true)
                        {
                            aggregateRestrictionsPanel.AddRestriction(column, true);
                        }
                        else
                        {
                            restrictionsPanel.AddRestriction(column, true);
                        }
                    });
                    menu.Items.Add(item);

                    if (SelectedButton != null && SelectedButton.Tag is ReportElement)
                    {
                        item        = new ToolStripMenuItem("Replace the selected element");
                        item.Click += new EventHandler(delegate(object sender2, EventArgs e2)
                        {
                            addElement(true);
                        });
                        if (!Model.IsSubModel)
                        {
                            menu.Items.Add(item);
                        }
                    }

                    menu.Items.Add(new ToolStripSeparator());
                    item        = new ToolStripMenuItem("Go to the source Column");
                    item.Click += new EventHandler(delegate(object sender2, EventArgs e2)
                    {
                        MainForm.selectNode(column);
                    });
                    menu.Items.Add(item);
                }
                else if (elementTreeView.SelectedNode != null && elementTreeView.SelectedNode.Nodes.Count > 0)
                {
                    ToolStripMenuItem item = new ToolStripMenuItem("Select all");
                    item.Click += new EventHandler(delegate(object sender2, EventArgs e2)
                    {
                        foreach (TreeNode node in elementTreeView.SelectedNode.Nodes)
                        {
                            if (node.Tag is MetaColumn)
                            {
                                AddElement(RowPanel, (MetaColumn)node.Tag, true);
                                MainForm.IsModified = true;
                                MainForm.CannotRenderAnymore();
                                PanelsToElements();
                                RowPanel.RedrawPanel();
                            }
                        }
                        UpdateLINQModel();
                    });
                    if (!Model.IsSubModel)
                    {
                        menu.Items.Add(item);
                    }

                    item        = new ToolStripMenuItem("Sort by Name");
                    item.Click += new EventHandler(delegate(object sender2, EventArgs e2)
                    {
                        elementTreeView.TreeViewNodeSorter = null;
                        elementTreeView.Sort();
                    });
                    if (!Model.IsSubModel)
                    {
                        menu.Items.Add(new ToolStripSeparator());
                    }
                    menu.Items.Add(item);

                    item        = new ToolStripMenuItem("Sort by Position");
                    item.Click += new EventHandler(delegate(object sender2, EventArgs e2)
                    {
                        elementTreeView.TreeViewNodeSorter = new NodeSorter();
                        elementTreeView.Sort();
                    });
                    menu.Items.Add(item);
                }
                if (menu.Items.Count > 0)
                {
                    menu.Show(elementTreeView, e.Location);
                }
            }
        }