public MergeSolutionsForm(
                NodeDifference differenceInSourceBranch,
                NodeDifference differenceInDestinationBranch,
                Conflict conflict,
                OperationTypeConflictResolver operationTypeConflictResolver,
                ValueConflictResolver valueConflictResolver)
        {
            InitializeComponent();
            FormPosition.LoadFromRegistry(this);

            m_differencesInSourceBranchControl.Data = differenceInSourceBranch;
            m_differencesInDestinationBranchControl.Data = differenceInDestinationBranch;
            m_conflict = conflict as NodeConflict;
            m_operationTypeConflictResolver = operationTypeConflictResolver;
            m_valueConflictResolver = valueConflictResolver;
            if (m_conflict.Subconflicts.Count == 0)
            {
                m_result = (NodeDifference)m_conflict.Resolve(m_operationTypeConflictResolver, m_valueConflictResolver);
            }
            else
            {
                m_result = null;
            }

            UpdateUI();
        }
예제 #2
0
        private void FillConflictNode(TreeNode node, Conflict conflict)
        {
            node.Tag = conflict;

            NodeConflict nodeConflict = conflict as NodeConflict;

            if (nodeConflict != null)
            {
                if (nodeConflict.AcceptedSubdifferences.Count > 0)
                {
                    TreeNode acceptedNode = node.Nodes.Add("Accepted Differences");
                    foreach (Difference subdifference in nodeConflict.AcceptedSubdifferences)
                    {
                        TreeNode subnode = acceptedNode.Nodes.Add(subdifference.ToString());
                        FillDifferenceNode(subnode, subdifference);
                    }
                }

                TreeNode conflictNode = node.Nodes.Add("Conflicts");
                foreach (Conflict subconflict in nodeConflict.Subconflicts)
                {
                    TreeNode subnode = conflictNode.Nodes.Add(subconflict.ToString());
                    FillConflictNode(subnode, subconflict);
                }
            }
        }