using System.Collections.Generic;
using System.Windows.Forms;
using WindowsFormsApplication3.Enums;
using WindowsFormsApplication3.Jobs;
using WindowsFormsApplication3.Model;
using WindowsFormsApplication3.DataStorge;
namespace WindowsFormsApplication3.FormPage
{
public class BaseWorkerForm : Form
{
public delegate void FormStatusChangedHandler();
public event FormStatusChangedHandler FormStatusChanged;
protected int childFormNO;
public int ChildFormNO{
get{return childFormNO;}}
protected CheckoutContext checkoutContext;
protected List<BaseJob> jobs;
protected FormStatus status;
public virtual FormStatus Status {
get { return status; }
}
public BaseWorkerForm():this(new CheckoutContext(),CheckoutStep.Introduction){}
public BaseWorkerForm(CheckoutContext checkoutContext,CheckoutStep checkoutStep):base()
{
this.checkoutContext= checkoutContext;
jobs=new List<BaseJob>();
}
public virtual void Execute(object obj)
{
status = FormStatus.Processing;
ReportChildFormNO();
ReportFormStatusChanged();
}
public void ReportFormStatusChanged(){
if(FormStatusChanged!=null)
FormStatusChanged();
}
public virtual void RefreshForm() {
}
public virtual void ResetForm() {
jobs.Clear();
status = FormStatus.Waiting;
ReportFormStatusChanged();
}
public void ReportChildFormNO() {
childFormNO = 0;
foreach (var childf in checkoutContext.formHierachy) {
if (childf.fatherForm == base.Text)
childFormNO++;
}
}
public int FinishedChildFormNO(string formname) {
int finishedFormNO = 0;
foreach (var childf in checkoutContext.formHierachy)
{
if (childf.fatherForm == formname&&childf.childForm.status==FormStatus.OK)
finishedFormNO++;
}
return finishedFormNO;
}
}
}