using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Perforce.P4; namespace SampleApp { public partial class MainForm : Form { // Server details. Server server; Repository rep; Connection con; Credential cred; Client client; Changelist changelist; // Connection details. string uri; string userName; string clientName; string password; // State constants. const string LOGGEDIN = "Logged In"; const string LOGGEDOUT = "Logged Out"; const string CONNECTED = "Connected"; const string DISCONNECTED = "Disconnected"; public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { SetLoggedOut(); } private void ExitButton_Click(object sender, EventArgs e) { // Release connection. if (con != null) { if (con.Status == ConnectionStatus.Connected) con.Disconnect(); } Application.Exit(); } private void ConnectButton_Click(object sender, EventArgs e) { try { SetDisconnected(); //uri = ServerTextBox.Text.Trim(); uri = "public.perforce.com:1666"; Utilities utils = new Utilities(); con = utils.ConnectToServer(uri, out server, out rep); SetConnected(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Application Error"); Disconnect(); } } private void SetConnected() { loginButton.Enabled = true; ConnectionTSStatusLabel.Text = CONNECTED; ConnectionTSStatusLabel.ForeColor = Color.Green; Application.DoEvents(); } private void SetDisconnected() { SetLoggedOut(); ConnectionTSStatusLabel.Text = DISCONNECTED; ConnectionTSStatusLabel.ForeColor = Color.Red; LoginTSStatusLabel.Text = LOGGEDOUT; LoginTSStatusLabel.ForeColor = Color.Red; Application.DoEvents(); } private void SetLoggedIn() { GetClientButton.Enabled = true; SubmitClientButton.Enabled = true; loginButton.Enabled = true; LoginTSStatusLabel.Text = LOGGEDIN; LoginTSStatusLabel.ForeColor = Color.Green; Application.DoEvents(); } private void SetLoggedOut() { GetClientButton.Enabled = false; SubmitClientButton.Enabled = false; loginButton.Enabled = false; LoginTSStatusLabel.Text = LOGGEDOUT; LoginTSStatusLabel.ForeColor = Color.Red; Application.DoEvents(); } private void SubmitClientButton_Click(object sender, EventArgs e) { try { Utilities utils = new Utilities(); client = utils.SubmitClientMap(client, rep); ResultTextBox.AppendText("Client Spec submitted.\n"); } catch (Exception ex) { MessageBox.Show(ex.Message, "Application Error"); Disconnect(); } } private void GetClientButton_Click(object sender, EventArgs e) { try { Utilities utils = new Utilities(); client = utils.GetClientMap(clientName, rep); // Display spec. ResultTextBox.AppendText(client.ViewMap.ToString() + "\n"); SubmitClientButton.Enabled = true; } catch (Exception ex) { MessageBox.Show(ex.Message, "Application Error"); Disconnect(); } } private void Disconnect() { if (con.Status == ConnectionStatus.Connected) con.Disconnect(); SetDisconnected(); } private void loginButton_Click(object sender, EventArgs e) { try { Utilities utils = new Utilities(); SetLoggedOut(); userName = UserTextBox.Text.Trim(); clientName = ClientTextBox.Text.Trim(); password = PasswordTextBox.Text.Trim(); utils.LoginToServer(con, userName, clientName, password, out cred); SetLoggedIn(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Application Error"); Disconnect(); } } private void GetChangeListButton_Click(object sender, EventArgs e) { try { Utilities utils = new Utilities(); int ChangeListID; if (int.TryParse(ChangeListIDTextBox.Text, out ChangeListID)) { changelist = utils.GetChangelist(rep, ChangeListID); foreach(var property in changelist.GetType().GetProperties()) { ResultTextBox.AppendText(property.Name + ": " + property.GetValue(changelist) + "\n"); } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Application Error"); Disconnect(); } } private void SubmitChangeListButton_Click(object sender, EventArgs e) { try { Utilities utils = new Utilities(); changelist.Description += "!"; changelist = utils.UpdateChangelist(rep, changelist); } catch (Exception ex) { MessageBox.Show(ex.Message, "Application Error"); Disconnect(); } } } }