Exemplo n.º 1
0
        private void tvModelDatasources_DragDrop(object sender, DragEventArgs e)
        {
            TreeNode              treeNode = null;
            IBaseNode             baseNode = null;
            IDataDefinitionExport export   = null;

            eDropMode dropMode = DropStrategy(e, ref treeNode, ref baseNode, ref export);

            if (treeNode != null)
            {
                tvModelDatasources.SelectedNode = treeNode;
                switch (dropMode)
                {
                case eDropMode.DropBaseNode:
                    TreeNode newBaseNode = TreeNodeFromBaseNode(baseNode);
                    Root.Nodes.Add(newBaseNode);

                    tvModelDatasources.SelectedNode = newBaseNode;
                    break;

                case eDropMode.DropExportMethod:
                case eDropMode.DropExportVariable:
                    TreeNode newExport = TreeNodeFromDataDefinitionExport(export);

                    tvModelDatasources.SelectedNode.Nodes.Add(newExport);
                    tvModelDatasources.SelectedNode = newExport;
                    break;
                }
            }
        }
Exemplo n.º 2
0
        protected eDropMode DropStrategy(DragEventArgs e, ref TreeNode treeNode, ref IBaseNode baseNode, ref IDataDefinitionExport export)
        {
            Point targetPoint = tvModelDatasources.PointToClient(new Point(e.X, e.Y));

            treeNode = tvModelDatasources.GetNodeAt(targetPoint);

            if (treeNode != null)
            {
                baseNode = getIBaseNode(e);
                if (baseNode != null)
                {
                    if (TreeNodeContains(Root, baseNode))
                    {
                        return(eDropMode.Undefined);
                    }

                    return(eDropMode.DropBaseNode);
                }

                export = getIDataDefinitionExport(e);
                eDropMode result = eDropMode.Undefined;

                if (export != null)
                {
                    if (isDomainObject(treeNode) && export.ExportType == eExportType.Method)
                    {
                        result = eDropMode.DropExportMethod;
                    }

                    if (isVariableDef(treeNode) && export.ExportType == eExportType.Variable)
                    {
                        result = eDropMode.DropExportVariable;
                    }
                }

                TreeNode tn = treeNode.Tag is IDataDefinitionExport
                    ? treeNode.Parent
                    : treeNode;

                if (TreeNodeContains(tn, export))
                {
                    result = eDropMode.Undefined;
                }

                return(result);
            }

            return(eDropMode.Undefined);
        }
Exemplo n.º 3
0
        private void tvModelDatasources_DragOver(object sender, DragEventArgs e)
        {
            TreeNode              treeNode = null;
            IBaseNode             baseNode = null;
            IDataDefinitionExport export   = null;

            eDropMode dropMode = DropStrategy(e, ref treeNode, ref baseNode, ref export);

            e.Effect = DragDropEffects.None;
            if (treeNode != null)
            {
                tvModelDatasources.SelectedNode = treeNode;
                switch (dropMode)
                {
                case eDropMode.DropBaseNode:
                case eDropMode.DropExportMethod:
                case eDropMode.DropExportVariable:
                    e.Effect = DragDropEffects.Copy;
                    break;
                }
            }
        }