예제 #1
0
 private void RecurseRebuild(SMFlowBase flow)
 {
     flow.Rebuild();
     if (flow.ChildArray != null)
     {
         foreach (SMFlowBase childFlow in flow.ChildArray)
         {
             if (childFlow is SMFlowContainer)
             {
                 RecurseRebuild(childFlow);
             }
             else
             {
                 childFlow.Rebuild();
             }
         }
     }
 }
예제 #2
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();
            }
        }