コード例 #1
0
        private void GetCropControlList()
        {
            _selectedCtrlList = new List <SMCtlBase>();

            PointF StartGrid = PixelToGrid(new Point(_oCropX, _oCropY));
            PointF endGrid   = PixelToGrid(new Point(_oCropX + _cropWidth, _oCropY + _cropHeight));

            foreach (Control ctrl in this.Controls)
            {
                SMCtlBase smCtrl = ctrl is SMCtlBase ? ctrl as SMCtlBase : null;
                if (smCtrl != null)
                {
                    if (smCtrl.GridLoc.X > StartGrid.X &&
                        smCtrl.GridLoc.Y > StartGrid.Y &&
                        smCtrl.GridLoc.X < endGrid.X &&
                        smCtrl.GridLoc.Y < endGrid.Y)
                    {
                        _selectedCtrlList.Add(smCtrl);
                        smCtrl.FlowItem.Highlighted = true;
                    }
                    else
                    {
                        smCtrl.FlowItem.Highlighted = false;
                    }
                }
            }

            if (_selectedCtrlList.Count == 0)
            {
                _selectedCtrlList = null;
            }
        }
コード例 #2
0
        public void Dispose(SMFlowBase flowItem)
        {
            SMCtlBase ctlBase = GetFlowCtl(flowItem);

            if (ctlBase != null)
            {
                Dispose(ctlBase);
            }
        }
コード例 #3
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="flowChart"></param>
 /// <param name="panel"></param>
 /// <param name="flowItem"></param>
 /// <param name="ctlBase"></param>
 /// <param name="pathSeg"></param>
 public SegmentCtl(SMGenericFlowChart flowChart, Panel panel, SMFlowBase flowItem,
                   SMCtlBase ctlBase, SMPathSegment pathSeg)
 {
     _flowChart = flowChart;
     _panel     = panel;
     _flowItem  = flowItem;
     _ctlBase   = ctlBase;
     _pathSeg   = pathSeg;
     ArrowEnd   = IsLast;
     InitializeComponent();
 }
コード例 #4
0
 public void Redraw(SMFlowBase flowItem)
 {
     if (flowItem != null)
     {
         flowItem.DetermineAllPathTargets();
         SMCtlBase ctlBase = GetFlowCtl(flowItem);
         if (ctlBase != null)
         {
             ctlBase.MoveItem();
             ctlBase.OnChanged();
         }
     }
 }
コード例 #5
0
 private void ClearAllSelection()
 {
     foreach (Control ctrl in this.Controls)
     {
         SMCtlBase smCtrl = ctrl is SMCtlBase ? ctrl as SMCtlBase : null;
         if (smCtrl != null)
         {
             smCtrl.FlowItem.Highlighted = false;
         }
     }
     _selectedCtrlList = null;
     _latestFlowItem   = null;
 }
コード例 #6
0
        /// <summary>
        /// Entry into a flow item
        /// </summary>
        public void RefreshFlowItem(SMFlowBase currentFlowItem)
        {
            SMCtlBase ctlBase = GetFlowCtl(currentFlowItem);

            if (ctlBase != null)
            {
                ctlBase.OnChanged();
                if (currentFlowItem.IncomingPath != null)
                {
                    SMFlowBase pathFlowItem = currentFlowItem.IncomingPath.Owner;
                    ctlBase = GetFlowCtl(pathFlowItem);
                    if (ctlBase != null)
                    {
                        ctlBase.MoveIt(currentFlowItem.IncomingPath);
                    }
                }
            }
        }
コード例 #7
0
        /// <summary>
        /// Initial Creation
        /// </summary>
        public void Rebuild()
        {
            Control[] controls = new Control[Controls.Count];
            Controls.CopyTo(controls, 0);
            foreach (Control ctl in controls)
            {
                SMCtlBase ctlBase = ctl as SMCtlBase;
                if (ctlBase != null)
                {
                    Dispose(ctlBase);
                }
            }


            foreach (SMFlowBase flowItem in _flowContainer.FilterByType <SMFlowBase>())
            {
                Build(flowItem);
            }

            Redraw();
        }
コード例 #8
0
        public void Redraw()
        {
            _flowContainer.DetermineAllChildTargets();

            foreach (Control ctl in this.Controls)
            {
                SMCtlBase ctlBase = ctl as SMCtlBase;
                if (ctlBase != null)
                {
                    ctlBase.MoveItem();
                }
            }

            //foreach (SMFlowBase flowItem in _flowContainer.FilterByType<SMFlowBase>())
            //{
            //    SMCtlBase ctlItem = GetFlowCtl(flowItem);
            //    if (ctlItem != null)
            //    {
            //        ctlItem.MoveItem();
            //    }
            //}
        }
コード例 #9
0
 public void Dispose(SMCtlBase ctlBase)
 {
     ctlBase.Dispose();
     Controls.Remove(ctlBase);
 }
コード例 #10
0
        private void contextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            contextMenuStrip.Close();
            if (e.ClickedItem == tsmInsertGripUpper)
            {
                ClearAllSelection();
                InsertGrid(_latestptGridLoc, eInsertGridMode.rowBefore);
            }
            else if (e.ClickedItem == tsmInsertGridBelow)
            {
                ClearAllSelection();
                InsertGrid(_latestptGridLoc, eInsertGridMode.rowAfter);
            }
            else if (e.ClickedItem == tsmInsertGridLeft)
            {
                ClearAllSelection();
                InsertGrid(_latestptGridLoc, eInsertGridMode.columnBefore);
            }
            else if (e.ClickedItem == tsmInsertGridRight)
            {
                ClearAllSelection();
                InsertGrid(_latestptGridLoc, eInsertGridMode.columnAfter);
            }
            else if (e.ClickedItem == tsmCopyItem)
            {
                if (_latestFlowItem != null)
                {
                    _copyFlowItem = _latestFlowItem.Clone("", true) as SMFlowBase;
                    _latestFlowItem.ShallowCopyTo(_copyFlowItem);
                }
            }
            else if (e.ClickedItem == tsmPasteItem)
            {
                SMFlowBase newCopyflowItem = _copyFlowItem;
                newCopyflowItem.Name = "";
                _flowContainer.AddFlowItem(newCopyflowItem);
                newCopyflowItem.Text    = _copyFlowItem.Text;
                newCopyflowItem.GridLoc = _latestptGridLoc;

                U.LogChangeAdded(string.Format("{0}.{1}", newCopyflowItem.Nickname, _copyFlowItem.Text));
                Build(newCopyflowItem);
                newCopyflowItem.Rebuild();
                Redraw(newCopyflowItem);

                if (newCopyflowItem is SMFlowContainer)
                {
                    RecurseRebuild(newCopyflowItem);
                }

                _copyFlowItem = null;
            }
            else if (e.ClickedItem == tsmDeleteItem)
            {
                if (MessageBox.Show("This Flow item will be deleted.  Are you sure?", "Warning", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    if (_latestFlowItem != null && this._flowContainer.ChildArray.Contains(_latestFlowItem))
                    {
                        SMCtlBase deleteFlowCtrl = GetFlowCtl(_latestFlowItem);
                        if (_selectedCtrlList != null && _selectedCtrlList.Contains(deleteFlowCtrl))
                        {
                            _selectedCtrlList.Remove(deleteFlowCtrl);
                        }
                        this.DeleteFlowItem(_latestFlowItem);
                    }
                    _latestFlowItem = null;
                }
            }
            else if (e.ClickedItem == tsmSelectItem)
            {
                SMCtlBase smCtrl = this.GetFlowCtl(_latestFlowItem);
                if (_selectedCtrlList == null)
                {
                    _selectedCtrlList = new List <SMCtlBase>();
                }
                _selectedCtrlList.Add(smCtrl);
                smCtrl.FlowItem.Highlighted = true;
            }
            else if (e.ClickedItem == tsmDeselectItem)
            {
                SMCtlBase smCtrl = this.GetFlowCtl(_latestFlowItem);
                smCtrl.FlowItem.Highlighted = false;
                _selectedCtrlList.Remove(smCtrl);
                if (_selectedCtrlList.Count == 0)
                {
                    _selectedCtrlList = null;
                }
            }
            else if (e.ClickedItem == tsmClearSelection)
            {
                ClearAllSelection();
            }
        }