using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using JGBaseForm;
/*
* Copyright Jeff Gaines 2007 - 2011 (jeff@jgaines.co.uk)
* Free licence for private use
* Please contact the author if you wish to use the code commercially
*/
namespace JGCreateDataClasses
{
internal partial class JSavedProjectsPanel : UserControl
{
private ToolTip m_ToolTip = new ToolTip();
internal delegate void LoadProjectEventHandler(object sender, int recordNumber);
internal event LoadProjectEventHandler LoadProject;
protected virtual void OnLoadProject(object sender, int recordNumber)
{
LoadProjectEventHandler handler = LoadProject;
if (handler != null)
handler(sender, recordNumber);
}
private void RaiseLoadProjectEventHandler(int recordNumber)
{
OnLoadProject(this, recordNumber);
}
internal event EventHandler<JMessageArgs> MessageRaised;
protected virtual void OnMessageRaised(object sender, JMessageArgs e)
{
EventHandler<JMessageArgs> handler = MessageRaised;
if (handler != null)
handler(sender, e);
}
internal void RaiseMessageEvent(object sender, string message, bool beep)
{
JMessageArgs e = new JMessageArgs(message, beep);
OnMessageRaised(sender, e);
}
internal JSavedProjectsPanel()
{
InitializeComponent();
if (!this.DesignMode)
ControlInitialise();
}
private void ControlInitialise()
{
ClearForm();
if (!String.IsNullOrEmpty(JCommon.DatabasePath))
FillSavedProjectsListBox();
}
private void ClearForm()
{
lblProjectName.Text = "";
lblClassNameSpace.Text = "";
lblDataType.Text = "";
lblDBPath.Text = "";
m_ToolTip.SetToolTip(lblDBPath, "");
lblTableName.Text = "";
tslblRecNum.Text = "0";
tslblLastUpdated.Text = "";
lstFieldNames.Items.Clear();
}
private int CurrentRecordNumber
{
get
{
try
{
return Convert.ToInt32(tslblRecNum.Text);
}
catch
{
return 0;
}
}
}
private bool DeleteProjectRecord()
{
bool result = true;
int recNum = CurrentRecordNumber;
if (recNum == -1)
{
RaiseMessageEvent(this, "No Project Selected To Delete", true);
return false;
}
JSavedProject savedPD = new JSavedProject(recNum);
DialogResult dr = JCommon.GetDialogResult("Confirm Deletion of " + savedPD.ClassName + "?", "Delete Project Record", MessageBoxButtons.YesNo);
if (dr != DialogResult.Yes)
return false;
// Delete the JFieldsData records
JFieldsDataFunctions.DeleteRecordsForParent(savedPD.RecordNumber);
if (JSavedProjectUpdater.DeleteRecord(savedPD))
{
RaiseMessageEvent(this, "Record Deleted", false);
ClearForm();
FillSavedProjectsListBox();
result = true;
}
else
{
RaiseMessageEvent(this, "Unable To Delete Record", true);
result = false;
}
return result;
}
private void FillSavedProjectsListBox()
{
lstSavedProjects.Items.Clear();
List<JSavedProject.JSavedProjectIndexData> listSaved = JSavedProjectUpdater.AllIndexData();
if (listSaved != null && listSaved.Count > 0)
{
foreach (JSavedProject.JSavedProjectIndexData current in listSaved)
lstSavedProjects.Items.Add(current);
}
}
// Converts the JSavedProject.FieldsDataList into ListViewItems
private void FillListBoxWithClassFields(JSavedProject savedPD)
{
lstFieldNames.Items.Clear();
List<JFieldsData> listFields = savedPD.FieldsDataList;
foreach (JFieldsData current in listFields)
{
lstFieldNames.Items.Add(current.PublicName);
}
}
private void lstSavedProjects_SelectedIndexChanged(object sender, EventArgs e)
{
if (lstSavedProjects.SelectedItems.Count != 1)
{
tsbtnLoad.Enabled = false;
tsbtnDelete.Enabled = false;
return;
}
JSavedProject.JSavedProjectIndexData indexData = (JSavedProject.JSavedProjectIndexData)lstSavedProjects.SelectedItems[0];
JSavedProject savedPD = new JSavedProject(indexData.RecordNumber);
ShowRecord(savedPD);
}
internal void RefreshList()
{
tsbtnRefreshList.PerformClick();
}
private void ShowRecord(JSavedProject savedPD)
{
tslblRecNum.Text = savedPD.RecordNumber.ToString();
tslblLastUpdated.Text = savedPD.LastUpdated;
lblProjectName.Text = savedPD.ClassName;
lblClassNameSpace.Text = savedPD.ClassNameSpace;
lblDataType.Text = ((JCommon.ClassDataTypes)savedPD.ClassDataSource).ToString();
switch (savedPD.ClassDataSource)
{
case JCommon.ClassDataTypes.ADODB:
case JCommon.ClassDataTypes.ADONET:
lblDBPath.Text = savedPD.AccessDatabasePath;
m_ToolTip.SetToolTip(lblDBPath, savedPD.AccessDatabasePath);
lblTableName.Text = savedPD.AccessTableName;
break;
case JCommon.ClassDataTypes.SQLITE:
lblDBPath.Text = savedPD.SQLiteDatabasePath;
m_ToolTip.SetToolTip(lblDBPath, savedPD.SQLiteDatabasePath);
lblTableName.Text = savedPD.SQLiteTableName;
break;
case JCommon.ClassDataTypes.XML:
lblDBPath.Text = savedPD.XMLDatabasePath;
m_ToolTip.SetToolTip(lblDBPath, savedPD.XMLDatabasePath);
lblTableName.Text = savedPD.XMLTableName;
break;
}
FillListBoxWithClassFields(savedPD);
tsbtnLoad.Enabled = true;
tsbtnDelete.Enabled = true;
}
private void tsbtnDelete_Click(object sender, EventArgs e)
{
DeleteProjectRecord();
}
private void tsbtnLoad_Click(object sender, EventArgs e)
{
if (lstSavedProjects.SelectedItems.Count != 1)
return;
JSavedProject.JSavedProjectIndexData indexData = (JSavedProject.JSavedProjectIndexData)lstSavedProjects.SelectedItems[0];
RaiseLoadProjectEventHandler(indexData.RecordNumber);
}
private void tsbtnRefreshList_Click(object sender, EventArgs e)
{
ClearForm();
FillSavedProjectsListBox();
}
}
}