Exemple #1
0
        /// <summary>
        /// 添加一个方法对象到动作流中
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ToolStripMenuItem_Add_Click(object sender, EventArgs e)
        {
            Type         methodType     = currNode.Tag as Type;
            string       dafaultNewName = _methodFlow.GetDefaultNameWillAddMethod(methodType);
            BenameDialog bnd            = new BenameDialog();

            bnd.Text = "新方法节点命名";
            bnd.SetName(dafaultNewName);
            if (DialogResult.OK != bnd.ShowDialog())
            {
                return;
            }
            IJFMethod newMethod = JFMethodFlow.CreateMethod(methodType.Name);
            bool      isOK      = _methodFlow.Add(newMethod, bnd.GetName());

            if (isOK)
            {
                ToolStripMenuItem_Insert.Enabled = true;
                ShowTips("添加动作节点成功!");
                UpdateFlow2UI();
            }
            else
            {
                MessageBox.Show("添加动作节点失败,请检查动作名称是否已存在于流程中!");
                return;
            }
        }
Exemple #2
0
        private void ToolStripMenuItem_Insert_Click(object sender, EventArgs e)
        {
            int idx = toolStripComboBox_Index.SelectedIndex;

            if (idx < 0)
            {
                MessageBox.Show("请选择动作节点序号");
                return;
            }

            Type         methodType     = currNode.Tag as Type;
            string       dafaultNewName = _methodFlow.GetDefaultNameWillAddMethod(methodType);
            BenameDialog bnd            = new BenameDialog();

            bnd.Text = "新方法节点命名";
            bnd.SetName(dafaultNewName);
            if (DialogResult.OK != bnd.ShowDialog())
            {
                return;
            }
            IJFMethod newMethod = JFMethodFlow.CreateMethod(methodType.Name);
            bool      isOK      = _methodFlow.Insert(newMethod, idx, bnd.GetName());

            if (isOK)
            {
                ShowTips("插入动作节点成功!");
                UpdateFlow2UI();
            }
            else
            {
                MessageBox.Show("插入动作节点失败,请检查\n节点序号是否超限/动作名称是否已存在于流程中!");
                return;
            }
        }
Exemple #3
0
 List <UcJFParamEdit> _lstUcParam = new List <UcJFParamEdit>();//保存初始化参数编辑面板
 public void SetMethod(IJFMethod method)
 {
     _method = method;
     if (_isFormLoaded)
     {
         AdjustView();
     }
 }
        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);
                }
            }
        }
Exemple #5
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();
        }