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 GZTW.AyaNova.BLL;
namespace AyaNova.PlugIn.AyaScript
{
public partial class ScriptHeader : Form
{
public string Script { get; set; }
public ScriptHeader()
{
InitializeComponent();
cklBizObjects.DataSource = Enum.GetValues(typeof(RootObjectTypes));
}
private void ScriptHeader_Load(object sender, EventArgs e)
{
this.Icon = Resource.ScriptIco;
this.btnOK.Image = (System.Drawing.Image)Util.AYS.AyaNovaResourceManager.GetObject("OK24");
this.btnCancel.Image = (System.Drawing.Image)Util.AYS.AyaNovaResourceManager.GetObject("Cancel24");
ParseScript();
}
#region parse
///
/// Read settings from script and update form controls
///
private void ParseScript()
{
Util.ScriptItem si = new Util.ScriptItem(Script);
//set controls
edName.Text = si.ScriptName;
cbShowFor.SelectedItem = si.ScriptShowInMenuFor;
for (int x = 0; x < cklBizObjects.Items.Count; x++)
{
if (si.ScriptHandlesTypes.Contains((RootObjectTypes)Enum.Parse(typeof(RootObjectTypes), cklBizObjects.Items[x].ToString(), true)))
cklBizObjects.SetItemChecked(x, true);
else
cklBizObjects.SetItemChecked(x, false);
}
}
///
/// Update settings from form controls to script
///
private void UpdateScript()
{
//Name
string sNewName = "//Name: " + edName.Text;
string sOldName = Util.rxName.Match(Script).Value;
if (string.IsNullOrEmpty(sOldName))
Script = sNewName + Script;
else
Script = Script.Replace(sOldName, sNewName);
//Show in menu for
string sNewShowInMenuFor = "//ShowInMenuFor: " + cbShowFor.SelectedItem.ToString();
string sOldShowInMenuFor = Util.rxShowInMenuFor.Match(Script).Value;
if (string.IsNullOrEmpty(sOldShowInMenuFor))
Script = sNewShowInMenuFor + "\r\n" + Script;
else
Script = Script.Replace(sOldShowInMenuFor, sNewShowInMenuFor);
//Object types
string sOldObjectTypes=Util.rxHandlesAyaNovaTypes.Match(Script).Value;
System.Text.StringBuilder sbNew = new StringBuilder();
for (int x = 0; x < cklBizObjects.Items.Count; x++)
{
if (cklBizObjects.GetItemChecked(x))
{
sbNew.Append(cklBizObjects.Items[x].ToString());
sbNew.Append(", ");
}
}
if (sbNew.Length > 2)
sbNew.Length = sbNew.Length - 2;
else
sbNew.Append("Nothing");
if (string.IsNullOrEmpty(sOldObjectTypes))
Script = "//HandlesAyaNovaTypes: " + sbNew.ToString() + "\r\n" + Script;
else
Script = Script.Replace(sOldObjectTypes, "//HandlesAyaNovaTypes: " + sbNew.ToString());
}
#endregion parse
private void btnCancel_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Cancel;
Close();
}
private void btnOK_Click(object sender, EventArgs e)
{
//Sanity check
if (string.IsNullOrEmpty(edName.Text))
{
MessageBox.Show("Name is a required field!");
return;
}
if (cbShowFor.SelectedIndex==-1)
{
MessageBox.Show("Show for selection is required!");
return;
}
if (cklBizObjects.CheckedItems.Count == 0)
{
if (cbShowFor.SelectedItem.ToString().Contains("Single AyaNova object") || cbShowFor.SelectedItem.ToString().Contains("List of AyaNova objects"))
{
MessageBox.Show("AyaNova type(s) must be selected when single or list show for is selected");
return;
}
}
//ok safe to proceed
UpdateScript();
DialogResult = DialogResult.OK;
Close();
}
//======================================
}
}