using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using DaoMqGUI.ServiceReference1; using System.ServiceModel; using Microsoft.Win32; namespace DaoMqGUI { public partial class MainForm : Form { RemoteControlClient client = null; List transportNameList = new List(); string hostname = ""; public MainForm() { InitializeComponent(); //initClient(); is now called on shown() event // loadTransports(); is now called on shown() event } private void initClient() { RegistryKey key = Registry.LocalMachine.CreateSubKey("Software\\DAO\\DaoMqGui"); hostname = (string) key.GetValue("Hostname", "localhost"); hostname = hostname.Trim(); lnkServer.Text = hostname; //Step 1 - initialize client BasicHttpBinding binding = new BasicHttpBinding(); EndpointAddress endpoint = new EndpointAddress(new Uri("http://" + hostname + ":8000/RemoteControl/RemoteControl")); client = new RemoteControlClient(binding, endpoint); } private string[] getSafeTransports() { string[] result = new string[] { }; try { result = client.GetTransports(); startAll.Enabled = true; stopAll.Enabled = true; } catch (Exception e) { MessageBox.Show(e.Message); startAll.Enabled = false; stopAll.Enabled = false; } return result; } public void loadTransports() { int selected = transports.SelectedIndex; if (selected == -1) //er der ikke valgt - vælger vi den første selected = 0; transports.Items.Clear(); transportNameList.Clear(); string[] transportNames = getSafeTransports(); foreach (string t in transportNames) { transportNameList.Add(t); bool enabled = client.GetTransportEnabled(t); string status = ""; if (enabled) { bool lastOk = client.GetTransportLastrunOk(t); if (lastOk) { status = "running"; } else { status = "error"; } } else { status = "stopped"; } transports.Items.Add(t + " - " + status); } if (selected >= transports.Items.Count) //hvis at der før var flere transports end nu - kan ikke ske pt. { if (transports.Items.Count > 0) //hvis vi har nogen vælger vi den første selected = 0; else selected = -1; } transports.SelectedIndex = selected; } private void stopAll_Click(object sender, EventArgs e) { string[] transportNames = getSafeTransports(); foreach (string t in transportNames) { client.SetTransportEnabled(t, false); } loadTransports(); } private void startAll_Click(object sender, EventArgs e) { string[] transportNames = getSafeTransports(); foreach (string t in transportNames) { client.SetTransportEnabled(t, true); } loadTransports(); } private void btnEnableOne_Click(object sender, EventArgs e) { string transportName = txtTransport.Text; client.SetTransportEnabled(transportName, true); loadTransports(); } private void btnDisableOne_Click(object sender, EventArgs e) { string transportName = txtTransport.Text; client.SetTransportEnabled(transportName, false); loadTransports(); } private void transports_SelectedIndexChanged(object sender, EventArgs e) { loadFormData(); } private void loadFormData() { if (transports.SelectedIndex == -1) return; string transportName = transportNameList[transports.SelectedIndex]; bool enabled = client.GetTransportEnabled(transportName); bool lastOk = client.GetTransportLastrunOk(transportName); string lastokTime = client.GetTransportLastOkTime(transportName); string lastErrorTime = client.GetTransportLastErrorTime(transportName); string errorMsg = client.GetTransportLastErrorMessage(transportName); int counter = client.GetTransportCounter(transportName); txtTransport.Text = transportName; txtEnabled.Text = "" + enabled; txtLastOK.Text = "" + lastOk; txtOkTime.Text = lastokTime; txtErrorTime.Text = lastErrorTime; txtErrorMsg.Text = errorMsg; txtCounter.Text = "" + counter; btnDisableOne.Enabled = enabled; btnEnableOne.Enabled = (!enabled); } private void refreshTimer_Tick(object sender, EventArgs e) { loadTransports(); if (transports.SelectedIndex == -1) return; if (tabControl1.SelectedIndex != 0) //0 er status siden return; loadFormData(); } private void loadLog() { if (transports.SelectedIndex == -1) return; string transportName = transportNameList[transports.SelectedIndex]; string[] logEntries = client.GetTransportLog(transportName); string str = ""; foreach (string entry in logEntries) { str += entry + "\r\n"; } txtLog.Text = str; } private void loadConfig() { if (transports.SelectedIndex == -1) return; string transportName = transportNameList[transports.SelectedIndex]; string direction = client.GetTransportDirection(transportName); string queue = client.GetTransportQueueName(transportName); string insert = client.GetTransportInsertQuery(transportName); string read = client.GetTransportReadQuery(transportName); string update = client.GetTransportUpdateQuery(transportName); txtDirection.Text = direction; txtQueueName.Text = queue; txtInsertQuery.Text = insert; txtReadQuery.Text = read; txtUpdateQuery.Text = update; } private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { if (transports.SelectedIndex == -1) return; switch (tabControl1.SelectedIndex) { case 0: loadFormData(); break; case 1: loadLog(); break; case 2: loadConfig(); break; } } private void lnkServer_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { string tmp_hostname = Microsoft.VisualBasic.Interaction.InputBox("Indtast servernavn/ip", "MQ Gui", hostname); if (tmp_hostname == null || tmp_hostname.Trim().Length == 0) return; hostname = tmp_hostname.Trim(); RegistryKey key = Registry.LocalMachine.CreateSubKey("Software\\DAO\\DaoMqGui"); key.SetValue("Hostname", hostname, RegistryValueKind.String); key.Close(); initClient(); loadTransports(); } private void MainForm_Shown(object sender, EventArgs e) { initClient(); loadTransports(); } } }