using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace GroundZero.KeyCodes { public partial class MsgEditor : Form { public MsgEditor() { InitializeComponent(); } private MessageType currentMessageType = MessageType.None; private string currentMessage = ""; #region open message types menu clicks private void mnuLiteTrialGreeting_Click(object sender, EventArgs e) { OpenMessage(MessageType.TrialGreetingLite); } private void mnuFullTrialGreeting_Click(object sender, EventArgs e) { OpenMessage(MessageType.TrialGreetingFull); } private void mnuKeyNewFull_Click(object sender, EventArgs e) { OpenMessage(MessageType.KeyNewFull); } private void mnuKeyNewLite_Click(object sender, EventArgs e) { OpenMessage(MessageType.KeyNewLite); } private void mnuKeyAddOnFull_Click(object sender, EventArgs e) { OpenMessage(MessageType.KeyAddOnFull); } private void mnuKeyAddOnLite_Click(object sender, EventArgs e) { OpenMessage(MessageType.KeyAddOnLite); } private void mnuKeyTrialFull_Click(object sender, EventArgs e) { OpenMessage(MessageType.KeyTrialFull); } private void mnuKeyTrialLite_Click(object sender, EventArgs e) { OpenMessage(MessageType.KeyTrialLite); } #endregion open message types menu clicks #region nuts and bolts private bool IsDirty { get { if (currentMessageType == MessageType.None) return false; return currentMessage != edMsg.Text; } } private void OpenMessage(MessageType mtype) { if (IsDirty) { if (!PromptToSave()) return; } Read(mtype); edMsg.Enabled = true; } private bool PromptToSave() { DialogResult dr = MessageBox.Show("Save changes?", "Changes have been made", MessageBoxButtons.YesNoCancel); if(dr== System.Windows.Forms.DialogResult.Cancel) return false; if (dr == System.Windows.Forms.DialogResult.No) return true; Save(); return true; } private void Save() { File.WriteAllText(FileName(currentMessageType), edMsg.Text); currentMessage = edMsg.Text; ShowDirty(); } private void Read(MessageType mtype) { currentMessageType = mtype; this.Text = "Key generator message editor - " + FileName(mtype); if (!File.Exists(FileName(mtype))) { MessageBox.Show("File " + FileName(mtype) + " not found, a new one will be created on save"); edMsg.Text = ""; currentMessage = ""; return; } currentMessage=edMsg.Text = File.ReadAllText(FileName(mtype)); ShowDirty(); } private void saveToolStripMenuItem_Click(object sender, EventArgs e) { Save(); } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } private void MsgEditor_FormClosing(object sender, FormClosingEventArgs e) { if (IsDirty) { if (!PromptToSave()) { e.Cancel = true; return; } } } private void edMsg_TextChanged(object sender, EventArgs e) { ShowDirty(); } private void ShowDirty() { this.Text = this.Text.Replace("*", ""); if (IsDirty) { this.Text = "*" + this.Text; } } #endregion nuts and bolts #region Tokens private void mnuInsertFirstNameToken_Click(object sender, EventArgs e) { edMsg.SelectedText = "[FirstName]"; } private void mnuInsertTokenLicenseExpiryDate_Click(object sender, EventArgs e) { edMsg.SelectedText = "[LicenseExpiryDate]"; } private void mnuInsertTokenLicenseDescription_Click(object sender, EventArgs e) { edMsg.SelectedText = "[LicenseDescription]"; } private void mnuInsertTokenLicenseKey_Click(object sender, EventArgs e) { edMsg.SelectedText = "[LicenseKey]"; } #endregion tokens #region MessageType enum enum MessageType { None, TrialGreetingLite, TrialGreetingFull, KeyNewFull, KeyNewLite, KeyAddOnFull, KeyAddOnLite, KeyTrialFull, KeyTrialLite } private string FileName(MessageType mtype) { switch (mtype) { case MessageType.TrialGreetingFull: return "TrialGreetingFull.txt"; case MessageType.TrialGreetingLite: return "TrialGreetingLite.txt"; case MessageType.KeyNewFull: return "KeyNewFull.txt"; case MessageType.KeyNewLite: return "KeyNewLite.txt"; case MessageType.KeyAddOnFull: return "KeyAddOnFull.txt"; case MessageType.KeyAddOnLite: return "KeyAddOnLite.txt"; case MessageType.KeyTrialFull: return "KeyTrialFull.txt"; case MessageType.KeyTrialLite: return "KeyTrialLite.txt"; } return ""; } #endregion MessageTypeEnum }//end of class }