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();
}
}
}
}