public void UpdateDataPoolRow()
        {
            if (InvokeRequired)
            {
                Invoke(new Action(UpdateDataPoolRow));
                return;
            }
            if (null == _methodFlow)
            {
                return;
            }
            int           mtdCount       = _methodFlow.Count;
            List <string> ExistOutputIDs = new List <string>();

            dgvDataPool.Rows.Clear();
            for (int i = 0; i < mtdCount; i++)
            {
                JFMethodFlow.MethodItem mi = _methodFlow.GetItem(i);
                ///获取各Method对象的实时界面
                IJFMethod mtd = mi.Value;
                ///更新数据池列表(内部)
                string[] outputNames = mi.Value.MethodOutputNames;
                if (null != outputNames)
                {
                    foreach (string outname in outputNames)
                    {
                        DataGridViewRow         row      = new DataGridViewRow();
                        DataGridViewTextBoxCell cellName = new DataGridViewTextBoxCell();
                        string outputID = mi.OutputID(outname);
                        cellName.Value = outputID;
                        ExistOutputIDs.Add(outputID);
                        row.Cells.Add(cellName);
                        DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell();
                        row.Cells.Add(cellValue);
                        dgvDataPool.Rows.Add(row);
                    }
                }
            }
            dgvOutterDataPool.Rows.Clear();
            ///跟新外部数据池
            string[] OutterAvailedDataIDs = _methodFlow.OutterAvailedIDs;
            if (null != OutterAvailedDataIDs)
            {
                foreach (string dataID in OutterAvailedDataIDs)
                {
                    DataGridViewRow         row      = new DataGridViewRow();
                    DataGridViewTextBoxCell cellName = new DataGridViewTextBoxCell();
                    cellName.Value = dataID;
                    ExistOutputIDs.Add(dataID);
                    row.Cells.Add(cellName);
                    DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell();
                    row.Cells.Add(cellValue);
                    dgvOutterDataPool.Rows.Add(row);
                }
            }
        }
示例#2
0
        void AdjustView()
        {
            gbIn.Controls.Clear();
            gbOut.Controls.Clear();
            IsBindEditting = false;
            if (null == methodItem)
            {
                gbIn.Height        = 20;
                gbOut.Top          = gbIn.Bottom + 1;
                gbOut.Height       = 20;
                btBindEdit.Enabled = false;
                btUI.Enabled       = false;
                lbMethodName.Text  = "未设置";
                Height             = gbOut.Bottom + 1;
                return;
            }
            lbMethodName.Text  = methodItem.Name;
            btBindEdit.Enabled = true;
            btUI.Enabled       = true;
            string[] inParamNames = methodItem.Value.MethodInputNames;
            if (null == inParamNames || 0 == inParamNames.Length)
            {
                gbIn.Height = 20;
            }
            else //添加输入参数
            {
                int locX = 3;
                int locY = 15;
                for (int i = 0; i < inParamNames.Length; i++)
                {
                    TextBox tbInputName = new TextBox();
                    tbInputName.Location  = new Point(locX, locY);
                    tbInputName.Width     = 90;
                    tbInputName.ReadOnly  = true;
                    tbInputName.BackColor = SystemColors.Control;
                    tbInputName.Text      = inParamNames[i];
                    gbIn.Controls.Add(tbInputName);
                    ComboBox cbInputID = new ComboBox();
                    cbInputID.Location = new Point(tbInputName.Right + 1, locY);
                    cbInputID.Width    = gbIn.Width - cbInputID.Left - 1;
                    cbInputID.Anchor   = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;//cbInputID.Dock = DockStyle.Top | DockStyle.Left | DockStyle.Right;

                    if (null != availableIDs && availableIDs.Length > 0)
                    {
                        cbInputID.Items.AddRange(availableIDs);
                    }
                    cbInputID.Text = methodItem.InputID(inParamNames[i]);
                    cbInputID.SelectedIndexChanged += OnComboSelectIndexChanged_InputID;
                    cbInputID.Enabled = false;
                    gbIn.Controls.Add(cbInputID);
                    cbInputIDs.Add(cbInputID);
                    locY = tbInputName.Bottom + 1;
                }
                gbIn.Height = locY;
            }
            gbOut.Top = gbIn.Bottom + 1;
            string[] outParamNames = methodItem.Value.MethodOutputNames;
            if (null != outParamNames && outParamNames.Length > 0)
            {
                int locX = 3;
                int locY = 15;
                for (int i = 0; i < outParamNames.Length; i++)
                {
                    TextBox tbOutputName = new TextBox();
                    tbOutputName.Location  = new Point(locX, locY);
                    tbOutputName.Width     = 90;
                    tbOutputName.ReadOnly  = true;
                    tbOutputName.BackColor = SystemColors.Control;
                    tbOutputName.Text      = outParamNames[i];
                    gbOut.Controls.Add(tbOutputName);
                    TextBox tbOutputID = new TextBox();
                    tbOutputID.Location = new Point(tbOutputName.Right + 1, locY);
                    tbOutputID.Width    = gbIn.Width - tbOutputID.Left - 1;
                    tbOutputID.Anchor   = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;//tbOutputID.Dock = DockStyle.Top | DockStyle.Left | DockStyle.Right;
                    tbOutputID.Text     = methodItem.OutputID(outParamNames[i]);
                    tbOutputID.Enabled  = false;
                    gbOut.Controls.Add(tbOutputID);
                    tbOutputIDs.Add(tbOutputID);
                    locY = tbOutputID.Bottom + 1;
                }
                gbOut.Height = locY + 1;
            }

            Height = gbOut.Bottom + 1;
        }
示例#3
0
        /// <summary>
        /// 更新动作流面板和数据池面板
        /// </summary>
        public void UpdateFlow2UI()
        {
            if (InvokeRequired)
            {
                Invoke(new Action(UpdateFlow2UI));
                return;
            }
            pnFlow.Controls.Clear();
            dgvDataPool.Rows.Clear();
            dgvOutterDataPool.Rows.Clear();
            _lstBtDel.Clear();
            _lstBtAct.Clear();
            _lstRtUi.Clear();
            if (null == _methodFlow)
            {
                return;
            }
            int           mtdCount       = _methodFlow.Count;
            List <string> ExistOutputIDs = new List <string>();
            //for (int i = 0; i < mtdCount; i++)
            //    ExistOutputIDs.AddRange(_methodFlow.GetItem(i).OutputNameIDs.Values);

            int locX = 0, locY = 3;

            for (int i = 0; i < mtdCount; i++)
            {
                JFMethodFlow.MethodItem mi = _methodFlow.GetItem(i);
                ///获取各Method对象的实时界面
                IJFMethod mtd = mi.Value;
                if (mtd is IJFRealtimeUIProvider)
                {
                    _lstRtUi.Add((mtd as IJFRealtimeUIProvider).GetRealtimeUI());
                }
                else
                {
                    _lstRtUi.Add(null);
                }


                Label lbMiName = new Label(); //动作单元名称
                lbMiName.Text     = i + ":" + mi.Name;
                lbMiName.Location = new Point(locX, locY + 3);
                pnFlow.Controls.Add(lbMiName);
                Button btDel = new Button();

                Button btAct = new Button();
                btAct.Text     = "执行";
                btAct.Width    = 37;
                btAct.Location = new Point(270 - btAct.Width, locY);//270为UcMethodNode对象的宽度
                btAct.Click   += OnButtonClick_MethodItemAction;
                _lstBtAct.Add(btAct);
                pnFlow.Controls.Add(btAct);

                btDel.Text     = "删除";
                btDel.Width    = 37;
                btDel.Location = new Point(btAct.Left - btDel.Width - 10, locY);//270为UcMethodNode对象的宽度
                btDel.Click   += OnButtonClick_DelMethodItem;
                _lstBtDel.Add(btDel);
                pnFlow.Controls.Add(btDel);


                locY = btDel.Bottom + 2;
                UcMethodNode mn = new UcMethodNode();
                mn.SetMethodItem(mi);
                mn.EventShowInfo += ShowMethodItemInfo;
                mn.Location       = new Point(locX, locY);
                pnFlow.Controls.Add(mn);
                mn.UpdateAvailableIDs(_methodFlow.UnexportIDs);//(mi.AvailedInputIDs/*allOutputID.ToArray()*/);
                locY = mn.Bottom + 2;

                ///更新数据池列表(内部)
                string[] outputNames = mi.Value.MethodOutputNames;
                if (null != outputNames)
                {
                    foreach (string outname in outputNames)
                    {
                        DataGridViewRow         row      = new DataGridViewRow();
                        DataGridViewTextBoxCell cellName = new DataGridViewTextBoxCell();
                        string outputID = mi.OutputID(outname);
                        cellName.Value = outputID;
                        ExistOutputIDs.Add(outputID);
                        row.Cells.Add(cellName);
                        DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell();
                        row.Cells.Add(cellValue);
                        dgvDataPool.Rows.Add(row);
                    }
                }
            }
            foreach (string key in _methodFlow.DataPool.Keys) //更新数据池中的其他变量(不是算子的输出)
            {
                if (!ExistOutputIDs.Contains(key))
                {
                    DataGridViewRow         row      = new DataGridViewRow();
                    DataGridViewTextBoxCell cellName = new DataGridViewTextBoxCell();

                    cellName.Value = key;
                    ExistOutputIDs.Add(key);
                    row.Cells.Add(cellName);
                    DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell();
                    row.Cells.Add(cellValue);
                    dgvDataPool.Rows.Add(row);
                }
            }
            ///跟新外部数据池
            string[] OutterAvailedDataIDs = _methodFlow.OutterAvailedIDs;
            if (null != OutterAvailedDataIDs)
            {
                foreach (string dataID in OutterAvailedDataIDs)
                {
                    DataGridViewRow         row      = new DataGridViewRow();
                    DataGridViewTextBoxCell cellName = new DataGridViewTextBoxCell();
                    cellName.Value = dataID;
                    ExistOutputIDs.Add(dataID);
                    row.Cells.Add(cellName);
                    DataGridViewTextBoxCell cellValue = new DataGridViewTextBoxCell();
                    row.Cells.Add(cellValue);
                    dgvOutterDataPool.Rows.Add(row);
                }
            }


            UpdatePoolValues();
        }