コード例 #1
0
        private void DeleteSelectedNode(TreeNode node = null)
        {
            TreeView tvObject     = treeObjects.Visible ? treeObjects : tvSearchResult;
            TreeNode nodeToDelete = node ?? tvObject.SelectedNode;

            if (nodeToDelete == null)
            {
                return;
            }

            TreeNode parentNode = nodeToDelete.Parent;

            TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode(nodeToDelete);

            nurseObject.Remove();
            if (tvObject == tvSearchResult)
            {
                nodeToDelete.Remove();
            }
            if (parentNode == null)
            {
                if (tvObject.Nodes.Count > 0)
                {
                    tvObject.SelectedNode = tvObject.TopNode;
                }
            }
            else
            {
                tvObject.SelectedNode = parentNode;
            }
            SelectedNodesChanged(tvObject.SelectedNode);
            AppEnvironment.SetModelChanged(true);
        }
コード例 #2
0
        public void TestObjectNurse_FromTreeNode()
        {
            _childTestObject.AddChild(_grandChildTestObject);
            _parentTestObject.AddChild(_childTestObject);

            //Add it to tree
            TestObjectNurse rootNurse = new TestObjectNurse(_treeView);


            TestObjectNurse parentNurse = rootNurse.AddDecendants(_parentTestObject);

            TreeNode treeNode = parentNurse.TreeNode;

            TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode(treeNode);

            Assert.AreEqual(parentNurse, nurseObject);

            TreeNode childNode = treeNode.Nodes[0];


            TestObjectNurse childNurseObject = TestObjectNurse.FromTreeNode(childNode);

            TestObjectNurse childNurse = parentNurse[0];

            Assert.AreEqual(childNurse, childNurseObject);
        }
コード例 #3
0
        private void mnuCaptureSnapshot_Click(object sender, EventArgs e)
        {
            TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode(_selectedNode);

            SelectedNodesChanged(nurseObject.TreeNode);

            _presenterModel.CaptureSnapshot(nurseObject);
        }
コード例 #4
0
 private void toolStripRefresh_Click(object sender, EventArgs e)
 {
     if (this.Visible)
     {
         TestObjectNurse nurseObject = _condition = TestObjectNurse.FromTreeNode((TreeNode)this.Tag);
         ReloadElementData(this.propertyGrid, nurseObject);
     }
 }
コード例 #5
0
        private void ConditionSelectorWindow_Load(object sender, EventArgs e)
        {
            Debug.Assert(this.Tag != null);

            TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode((TreeNode)this.Tag);
            UIATestObject   testObject  = new UIATestObject();

            FillListView(testObject);
        }
コード例 #6
0
        private void treeObjects_OnDropItemIntoTree(object sender, DragEventArgs e)
        {
            TreeNode myNode = null;

            if (e.Data.GetDataPresent(typeof(TreeNode)))
            {
                myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));
            }
            else
            {
                return;
            }

            Point position = new Point(e.X, e.Y);

            position = this.treeObjects.PointToClient(position);

            TreeNode dropNode = this.treeObjects.GetNodeAt(position);

            TreeNode dragNode = null;

            bool needUpdate = false;

            if ((dropNode != null && dropNode.Parent != myNode && dropNode != myNode) || (dropNode == null))
            {
                dragNode = myNode;
                myNode.Remove();
                needUpdate = true;
            }

            if (dragNode != null && needUpdate)
            {
                TestObjectNurse dragNurse = TestObjectNurse.FromTreeNode(dragNode);
                string          newName   = "";
                if (dropNode == null)
                {
                    newName = SpyWindowHelper.DeriveControlName(RootNurseObject, dragNurse.NodeName);
                    treeObjects.Nodes.Add(dragNode);
                }
                else
                {
                    newName = SpyWindowHelper.DeriveControlName(RootNurseObject, dragNurse.NodeName);
                    dropNode.Nodes.Add(dragNode);
                }

                if (newName != dragNurse.NodeName)
                {
                    dragNurse.NodeName = newName;

                    SelectedNodesChanged(dragNode);

                    MessageBox.Show(string.Format(StringResources.LPSpy_SpyMainWindow_ObjNameSameMsg, newName));
                }
                treeObjects.SelectedNode = dragNode;
                AppEnvironment.SetModelChanged(true);
            }
        }
コード例 #7
0
        private void WebRefreshNodeTag(TreeNode node)
        {
            SETestObject seTestObject = TestObjectNurse.FromTreeNode(node).TestObject as SETestObject;

            seTestObject.WebDriver = _webDriverHost.WebDriver;
            foreach (TreeNode node0 in node.Nodes)
            {
                WebRefreshNodeTag(node0);
            }
        }
コード例 #8
0
        private void mnuEditVirtualControls_Click(object sender, EventArgs e)
        {
            if (treeObjects.SelectedNode == null)
            {
                MessageBox.Show(StringResources.LPSpy_SpyMainWindow_SelNodeWarningMsg);
                return;
            }

            TreeNode node = treeObjects.SelectedNode;

            _presenterModel.EditVirtualControl(TestObjectNurse.FromTreeNode(node));
        }
コード例 #9
0
        private void AddButton_Click(object sender, EventArgs e)
        {
            TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode((TreeNode)this.Tag);

            SpyWindowHelper.AddSelectedProperty(propertyGrid, nurseObject);

            if (EndUpdating != null)
            {
                EndUpdating(nurseObject);
            }
            this.Dispose();

        }
コード例 #10
0
        private void treeObjects_DragItemToEditor(object sender, ItemDragEventArgs e)
        {
            const string prefix = "UIAManager.";

            if (e.Item is TreeNode)
            {
                TreeNode treeNode = (TreeNode)e.Item;
                _dragUIAcon = TestObjectNurse.FromTreeNode(treeNode);
                TestObjectNurse nurseObject = TestObjectNurse.FromTreeNode(treeNode);

                _dragDataObject.SetData(DataFormats.Text, true, prefix + CodeGenerator.GetFullPathName(nurseObject.TestObject));
                ((TreeView)sender).DoDragDrop(_dragDataObject, DragDropEffects.Copy);
            }
        }
コード例 #11
0
        private void LoadData(object sender, EventArgs e)
        {
            if (this.Visible)
            {
                _condition = TestObjectNurse.FromTreeNode((TreeNode)this.Tag);
                int count = LoadProperties(this.propertyGrid, _condition);

                if (count == 0)
                {
                    MessageBox.Show("No more properties to add");
                    this.Dispose();
                }
            }
        }
コード例 #12
0
        private void treeObjects_OnObjectNameChanged(object sender, NodeLabelEditEventArgs e)
        {
            if (e.CancelEdit)
            {
                return;
            }
            if (e.Label == null)
            {
                return;
            }
            TestObjectNurse nurse = TestObjectNurse.FromTreeNode(e.Node);

            if (e.Label == nurse.NodeName)
            {
                return;
            }

            string newName = e.Label;

            if (e.Label.StartsWith(nurse.ControlTypeString + ":"))
            {
                newName = newName.Substring((nurse.ControlTypeString + ":").Length);
                newName = newName.Trim();
            }
            string nameChecker = SpyWindowHelper.DeriveControlName(nurse.ParentNurse, newName);

            if (nameChecker == newName)
            {
                nurse.NodeName = newName;

                if (NodeNameChanged != null)
                {
                    NodeNameChanged(sender, e);
                }

                _presenterModel.SetSelectNodeName(newName);

                AppEnvironment.SetModelChanged(true);

                return;
            }
            else
            {
                MessageBox.Show(string.Format(StringResources.LPSpy_SpyMainWindow_SelectobjMsg, newName));
                e.CancelEdit = true;
                e.Node.Text  = TestObjectNurse.FromTreeNode(e.Node).NodeName;
            }
        }
コード例 #13
0
        private void SelectedNodesChanged(TreeNode treeNode)
        {
            if (_selectedNode == null && treeNode == null)
            {
                return;
            }

            if (treeNode != null)
            {
                _selectedNode = treeNode;
            }

            RaiseSelectNodeChangedEvent(treeNode);

            _presenterModel.SelectNodeChanged(TestObjectNurse.FromTreeNode(treeNode));
        }
コード例 #14
0
        private void treeObjects_OnPressDelete(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                DeleteSelectedNode();
            }

            if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control)
            {
                if (_selectedNode == null)
                {
                    return;
                }
                Clipboard.Clear();
                TestObjectNurse testObjectNode = TestObjectNurse.FromTreeNode(_selectedNode);
                Clipboard.SetText(GetFullPathNameByTreeNode(testObjectNode));
            }
        }
コード例 #15
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="newControls"></param>
        /// <param name="parentNode"></param>
        /// <returns>return whether virtual controls are changed</returns>
        public static bool MergeVirtualControlsToTree(VirtualTestObject[] newControls, TreeNode parentNode)
        {
            TestObjectNurse parentNurse = TestObjectNurse.FromTreeNode(parentNode);

            //remove the previously attached nodes.
            List <ITestObject> oldControls = new List <ITestObject>(parentNurse.Children).FindAll(to => ((TestObjectNurse)to).TestObject is VirtualTestObject);

            if (oldControls.Count() == newControls.Count())
            {
                int i = 0;
                foreach (TestObjectNurse oldControl in oldControls)
                {
                    VirtualTestObject oldObject = (VirtualTestObject)oldControl.TestObject;
                    VirtualTestObject newObject = newControls[i];
                    if (oldObject != newObject)
                    {
                        break;
                    }
                    ++i;
                }
                if (i == newControls.Count())
                {
                    return(false);                          //exactly the same, not update.
                }
            }
            foreach (ITestObject testObject in oldControls)
            {
                parentNurse.RemoveChild(testObject);
            }

            //Add new virtual nodes
            foreach (VirtualTestObject testObject in newControls)
            {
                parentNurse.AddChild(testObject);
            }
            return(true);
        }
コード例 #16
0
 private void mnuHighlight_Click(object sender, EventArgs e)
 {
     _presenterModel.Highlight(TestObjectNurse.FromTreeNode(_selectedNode));
 }
コード例 #17
0
        private void HighlightObjectThread(object param)
        {
            try
            {
                TestObjectNurse nurseObject = param as TestObjectNurse;
                if (nurseObject == null)
                {
                    return;
                }

                ITestObject testObject = nurseObject.TestObject;

                SetStatusText(StringResources.LPSpy_SpyMainWindow_Identifying);


                //Check whether the WebDriver Host exist or not
                if (testObject.ControlTypeString.StartsWith("Web"))
                {
                    SETestObject seTestObject = testObject as SETestObject;
                    if (seTestObject.SEWebElement == null)
                    {
                        //look for WebPage
                        TreeNode    parentNode   = nurseObject.TreeNode;
                        ITestObject parentObject = null;


                        do
                        {
                            parentObject = TestObjectNurse.FromTreeNode(parentNode).TestObject;
                            if (parentObject.ControlTypeString.Equals("WebPage"))
                            {
                                //seTestObject = parentObject as SETestObject;
                                break;
                            }
                        }while (null != (parentNode = parentNode.Parent));

                        if (null != parentObject)
                        {
                            //check the WebDriverHost existing
                            if (null == _webDriverHost)
                            {
                                _webDriverHost = new WebDriverHost();
                                _webDriverHost.GotoUrl(parentObject.Properties[WebControlKeys.URL]);
                            }
                            else
                            {
                                _webDriverHost.SwithToURL(parentObject.Properties[WebControlKeys.URL]);
                            }
                            WebRefreshNodeTag(parentNode);
                        }
                    }

                    Rectangle rc = _webDriverHost.GetElementRectangle(seTestObject);

                    UIAHighlight.HighlightRect(rc);
                    return;
                }


                if (!UIAHighlight.SearchAndHighlight(testObject))
                {
                    MessageBox.Show(StringResources.LPSpy_SpyMainWindow_CannotFindObjectMsg);
                }
            }
            finally
            {
                SetStatusText("");
            }
        }