svnsync/svnsync/Views/ViewsWindow.cs

68 lines
1.6 KiB
C#

using System;
using BlubbFish.Utils;
using svnsync.Models;
using System.Windows.Forms;
namespace svnsync.Views
{
public class ViewsWindow : OwnView
{
private ViewsWindowFormInterface form;
public ModelsWindow Model { get; private set; }
public ViewsWindow()
{
this.Init();
}
public override void Update()
{
switch(this.Model.FormType) {
default:
case Helpers.Handles.FormType.Normal:
if(!(this.form is ViewsWindowForm)) {
this.SwitchContext(new ViewsWindowForm());
}
break;
case Helpers.Handles.FormType.Error:
if(!(this.form is ViewsWindowFormError)) {
this.SwitchContext(new ViewsWindowFormError());
}
break;
case Helpers.Handles.FormType.UnversionFiles:
case Helpers.Handles.FormType.DeletedFiles:
if(!(this.form is ViewsWindowFormFileList)) {
this.SwitchContext(new ViewsWindowFormFileList());
}
break;
}
this.form.UpdateForm();
}
private void SwitchContext(ViewsWindowFormInterface newform) {
this.form = newform;
this.form.SetModel(this.Model);
this.form.Show();
}
protected override void Init()
{
this.Model = ModelsWindow.Instance;
}
public override void Dispose()
{
this.Model.RemoveObserver(this);
this.form.BeginInvoke((Action)(() => {
this.form.Dispose();
}));
}
internal void Draw() {
this.Model.SetObserver(this);
}
}
}