public InvokeCommand(InvokeDirector invokeDirector)
        {
            this.invokeDirector = invokeDirector;
            try
            {
                // Find the active document and the associated method name.
                var invokeTab = TestStudioFormBuilder.Instance.GetTab(TestStudioTab.Invoke);
                var activeContent = invokeTab.SelectedChild;
                activeControl = activeContent.Content as ITestStudioControl;

                if (activeControl is RequestControl)
                    activeControl = ((RequestControl)activeControl).requestDataPropertyGrid as ITestStudioControl;

                var strings = activeControl.Label.Split(' ');
                if (strings != null && strings.Any())
                    methodName = strings[0];
                else
                    methodName = activeControl.Label;

                canExecute = true;
            }
            catch
            {
                canExecute = false;
            }
        }
        public ProxyInfoDirector(
            ITestStudioControl proxyPropertyGrid,
            ITestStudioControl proxyDataGridView)
        {
            this.proxyPropertyGrid = proxyPropertyGrid;
            this.proxyDataGridView = proxyDataGridView;

            // Load proxy history
            if (File.Exists(proxyHistoryBin))
            {
                using (Stream stream = File.Open(proxyHistoryBin, FileMode.Open))
                {
                    BinaryFormatter bin = new BinaryFormatter();

                    proxyUrlHistory = (BindingList<ProxyProperties>)bin.Deserialize(stream);
                }
            }

            this.proxyDataGridView.AddEventHandler("SelectionChanged",
                new EventHandler(selectionChanged_proxyDataGridView));

            this.proxyDataGridView.AddEventHandler("DefaultValuesNeeded",
                new DataGridViewRowEventHandler(defaultValuesNeeded_proxyDataGridView));

            this.proxyPropertyGrid.AddEventHandler("PropertyValueChanged",
                new PropertyValueChangedEventHandler(propertyValueChanged_proxyPropertyGrid));
        }
        public ClassListDirector(ITestStudioControl classBox, ITestStudioControl methodBox)
        {
            classListBox = classBox;
            methodsListBox = methodBox;

            classListBox.AddEventHandler("SelectedIndexChanged", new EventHandler(classListBox_SelectedIndexChanged));
        }
        public LoadWsdlDirector(
            ITestStudioControl wsdlPathComboBox, 
            WsdlModel wsdlModel,
            string fileHistoryLocation = null)
        {
            this.wsdlModel = wsdlModel;
            this.wsdlPathComboBox = wsdlPathComboBox;
            this.fileHistoryLocation = fileHistoryLocation;

            // Load Wsdl path history
            var fileHistSerializer = new XmlSerializer(typeof(BindingList<string>));
            if (File.Exists(fileHistoryLocation))
            {
                try
                {
                    using (var stream = File.OpenRead(fileHistoryLocation))
                    {
                        fileHistory = (BindingList<string>)(fileHistSerializer.Deserialize(stream));
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Could not load file history {0}", ex.Message);
                }
            }

            wsdlPathComboBox.Content = fileHistory;
            if (fileHistory.Any())
                wsdlPathComboBox.SelectedContentItem = fileHistory[0];

            this.wsdlPathComboBox.AddEventHandler("SelectionChangeCommitted",
                new EventHandler(selectionChangeCommitted_wsdlPathComboBox));
        }
        public void AddChild(ITestStudioControl child)
        {
            var testStudioContent = child as TestStudioContent;

            if (testStudioContent != null)
                testStudioContent.Show(this, testStudioContent.InitialDockState);
        }
        public MethodListDirector(WsdlModel wsdlModel, ITestStudioControl methodFilterComboBox, ITestStudioControl methodsListBox)
        {
            this.wsdlModel = wsdlModel;
            this.methodFilterComboBox = methodFilterComboBox;
            this.methodsListBox = methodsListBox;

            this.wsdlModel.WsdlModelInitialized += OnWsdlModelInitialized;
        }
        public static ParamPropGridContextMenu Add(ITestStudioControl control)
        {
            if (!(control is PropertyGrid))
                return null;

            var contextMenu = new ParamPropGridContextMenu();
            control.AddEventHandler("SelectedObjectsChanged", new EventHandler(contextMenu.propertyGrid_SelectedObjectsChanged));
            return contextMenu;
        }
        public void InvokeWebMethod(ITestStudioControl activeControl, string methodName)
        {
            if (!methods.Any())
                throw new Exception("Not methods are loaded");

            MethodInfo methodInfo = methods.Single(i => i.Name == methodName);

            var dictionary = activeControl.Content as IDictionary<String, object>;

            InvokeWebMethod(methodInfo, dictionary.Values.ToArray());
        }
 private ITestStudioControl WrapChild(ITestStudioControl child, DockState dockState)
 {
     var testStudioContent = new TestStudioContent(child);
     testStudioContent.InitialDockState = dockState;
     return testStudioContent;
 }
        private void AddChildToTab(TestStudioTab tabId, ITestStudioControl child, string label, DockState dockState)
        {
            var testStudioContent = WrapChild(child, dockState);
            testStudioContent.Label = label;

            TestStudioCompositeControl tab;
            if (tabs.TryGetValue(tabId, out tab))
                tab.AddChild(testStudioContent);
            else
            {
                MessageBox.Show(String.Format("{0} tab does not exist.", tabId.ToString()));
                return;
            }
        }
 private void AddChildToForm(ITestStudioControl child, string label, DockState dockState)
 {
     var testStudioContent = WrapChild(child, dockState);
     form.AddChild(testStudioContent);
     testStudioContent.Label = label;
 }
        private void AddChildToComposite(ITestStudioControl child, string label, DockStyle dockStyle)
        {
            ITestStudioControl childToAdd = child;

            if (currentCompositeControl.SelectedContentItem != null)
            {
                childToAdd = WrapChild(child, ConvertToDockState(dockStyle));
            }
            else
            {
                var control = child as Control;
                control.Dock = dockStyle;
            }

            childToAdd.Label = label;
            currentCompositeControl.AddChild(childToAdd);
        }
 public void Reset()
 {
     lastControlAdded = null;
     currentCompositeControl = null;
     foreach (var tab in tabs)
         ((Control)tab.Value).Dispose();
     tabs = new Dictionary<TestStudioTab, TestStudioCompositeControl>();
     controls = new Dictionary<string, ITestStudioControl>();
 }
        public void AddControl(TestStudioControlType type, string label, DockStyle dockStyle, TestStudioTab tabId = TestStudioTab.None)
        {
            var control = (type==TestStudioControlType.Composite)? factory.GetCompositeControl(wrapChildren) : factory.GetControl(type);

            if (tabId == TestStudioTab.None)
            {
                if (currentCompositeControl != null)
                    AddChildToComposite(control, label, dockStyle);
                else
                    AddChildToForm(control, label, ConvertToDockState(dockStyle));
            }
            else
            {
                AddChildToTab(tabId, control, label, ConvertToDockState(dockStyle));
            }

            control.AddEventHandler("HandleDestroyed", new EventHandler(TestStudioFormBuilder_HandleDestroyed));
            control.Label = label;

            // TODO: How do I keep this unique??
            try
            {
                controls.Add(label, control);
            }
            catch { }

            lastControlAdded = control;
        }
 public XmlTabDirector(ITestStudioControl requestTextBox, ITestStudioControl responseTextBox)
 {
     this.requestTextBox = requestTextBox;
     this.responseTextBox = responseTextBox;
 }
 public TestStudioContent(ITestStudioControl control)
 {
     this.control = control;
     Initialize();
     DockHandler.GetPersistStringCallback = pString;
 }