예제 #1
0
        /// <summary>
        /// 检查数据是否有效
        /// </summary>
        public void CheckDataValid()
        {
            string requestReloadID = dataManager.RequestReloadID;

            if (requestReloadID != "")
            {
                DialogResult result = MessageBox.Show("发现绘图部分数据在程序外发生改变,需要重新编辑更新!", "数据一致性检查",
                                                      MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                if (result == DialogResult.OK)
                {
                    string[]  idArray  = requestReloadID.Split(new char[] { ',' });
                    Hashtable argTable = new Hashtable();
                    argTable["globe_args"]      = dataManager.GlobeArgs;
                    argTable["requestReloadID"] = "";
                    argTable["forceReload"]     = "1";

                    foreach (string id in idArray)
                    {
                        GraphElement graphElement = dataManager.FindGraphElementByID(int.Parse(id));

                        if (graphElement != null)
                        {
                            DataElement dataElement = dataManager.FindDataElementByID(int.Parse(id));
                            dataElement.ReloadData(argTable);
                            graphManager.SelectGraphElement(graphElement, true);
                            graphManager.EditDataElement(graphElement);
                        }
                    }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// 查看子绘图结点
        /// </summary>
        /// <param name="sender">事件发送者</param>
        /// <param name="e">事件参数</param>
        private void bViewNode_Click(object sender, EventArgs e)
        {
            if (diagramInfoView.SelectedCells.Count > 0)
            {
                DataGridViewRow currentRow = diagramInfoView.SelectedCells[0].OwningRow;
                string          chartID    = currentRow.Tag as string;
                string          nodeID     = currentRow.Cells["NodeID"].Value as string;

                DocumentManager documentManager = DocumentManager.GetDocumentManager();
                documentManager.OpenDiagram(chartID);

                GraphManager graphManager = documentManager.CurrentFlowChartManager.CurrentGraphManager;
                DataManager  dataManager  = documentManager.CurrentFlowChartManager.CurrentDataManager;
                GraphElement graphElement = dataManager.FindGraphElementByID(int.Parse(nodeID));
                graphManager.SelectGraphElement(graphElement, true);

                this.Focus();
            }
            else
            {
                MessageBox.Show("请先选择要查看的子绘图!", "查看绘图",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
예제 #3
0
        /// <summary>
        /// 编辑图元
        /// </summary>
        /// <param name="flowChartManager">绘图管理器</param>
        /// <param name="logicData">逻辑数据</param>
        /// <returns>是否操作成功</returns>
        protected virtual bool LogicEdit(FlowChartManager flowChartManager, object logicData)
        {
            bool executeResult = true;

            GraphManager    graphManager    = flowChartManager.CurrentGraphManager;
            DataManager     dataManager     = flowChartManager.CurrentDataManager;
            DocumentManager documentManager = DocumentManager.GetDocumentManager();
            GraphElement    graphElement    = logicData as GraphElement;
            DataElement     dataElement     = dataManager.GetDataElement(graphElement);

            object    data        = dataManager.GetData(graphElement);
            Hashtable information = new Hashtable();

            information["data"]           = data;
            information["prev_data"]      = dataManager.GetPreviousData(graphElement);
            information["next_data"]      = dataManager.GetNextData(graphElement);
            information["neighbor_data"]  = dataManager.GetNeighborData(graphElement);
            information["globe_args"]     = dataManager.GlobeArgs;
            information["flowchart_name"] = flowChartManager.Name;
            information["map_name"]       = flowChartManager.MapName;
            information["client_dir"]     = Helper.GetHelper().OutputDir;

            dataElement.PrintInformation = new DataElement.PrintInfo(documentManager.PrintText);

            try
            {
                executeResult = dataElement.EditData(information);
            }
            catch (Exception ex)
            {
                executeResult = false;

                MessageBox.Show("当前图元由于以下原因无法编辑:\n\n" + ex.Message, "图元编辑",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            if (executeResult) // 保存图元数据
            {
                Hashtable    previousDataTable = information["prev_data"] as Hashtable;
                Hashtable    nextDataTable     = information["next_data"] as Hashtable;
                GraphElement currentGraphElement;
                DataElement  editDataElement;

                // 检查是否需要更新图元和数据元的数据
                foreach (string id in previousDataTable.Keys)
                {
                    editDataElement = previousDataTable[id] as DataElement;

                    if (editDataElement != null && editDataElement.Data == null)
                    {
                        currentGraphElement             = dataManager.FindGraphElementByID(int.Parse(id));
                        currentGraphElement.Text        = editDataElement.Text;
                        currentGraphElement.TooltipText = editDataElement.TooltipText;
                        currentGraphElement.ShowText    = false;
                    }
                }

                foreach (string id in nextDataTable.Keys)
                {
                    editDataElement = nextDataTable[id] as DataElement;

                    if (editDataElement != null && editDataElement.Data == null)
                    {
                        currentGraphElement             = dataManager.FindGraphElementByID(int.Parse(id));
                        currentGraphElement.Text        = editDataElement.Text;
                        currentGraphElement.TooltipText = editDataElement.TooltipText;
                        currentGraphElement.ShowText    = false;
                    }
                }

                graphElement.TooltipText = dataElement.TooltipText;
                graphElement.Text        = dataElement.Text;

                if (string.IsNullOrEmpty(dataElement.Text))
                {
                    graphElement.ShowText = false;
                }
                else
                {
                    graphElement.ShowText = true;
                }

                // 调整文本
                if (graphElement is SlotContainer)
                {
                    SlotContainer slotContainer = graphElement as SlotContainer;
                    slotContainer.AdjustText();

                    // 根据文本内容调整插槽容器的大小
                    slotContainer.AdjustElementSize();
                }
                else if (graphElement is ConnectorContainer)
                {
                    ConnectorContainer line = graphElement as ConnectorContainer;
                    line.AdjustText();
                }
            }

            return(executeResult);
        }