using System;
|
using System.Collections.Generic;
|
using System.Text;
|
using System.Drawing;
|
using System.Reflection;
|
using HotelPms.Share.Windows.Component;
|
using System.Windows.Forms;
|
using HotelPms.Share.Util;
|
|
namespace HotelPms.Share.Windows.Util
|
{
|
public enum ChangeEditingModeResult : int
|
{
|
Error = 0, //失敗
|
Inputting, //入力登録中状態
|
Editting, //編集中状態
|
ReLoad, //最新情報をロードした
|
Other, //その他
|
}
|
|
/// <summary>
|
/// 編集フォームのモード
|
/// </summary>
|
public enum UpdateFormMode : int
|
{
|
Normal = 0, //閲覧中、修正可能
|
Edit, //閲覧から修正中
|
New, //新規
|
Inputting, //新規登録中
|
ReadOnly, //閲覧モード、修正不可
|
}
|
|
public class ValueChangeListener :IDisposable
|
{
|
private static Dictionary<string, Bitmap> ResourceImage = new Dictionary<string, Bitmap>();
|
|
//Control
|
private UpdateFormMode curUpdateMode = UpdateFormMode.New;
|
private Control btnEditStatus = null;
|
public event CTextBoxArray.TBArrayEventHandler BeforeChangeToEditingMode = null;
|
private bool m_IsAntLabel = false;
|
private System.Windows.Forms.Timer timer1 = null;
|
|
public UpdateFormMode CurUpdateMode
|
{
|
get { return curUpdateMode; }
|
set { curUpdateMode = value; }
|
}
|
|
public ValueChangeListener(Control btnEditStatus)
|
{
|
m_IsAntLabel = (btnEditStatus is AntLabel);
|
if (!m_IsAntLabel)
|
{
|
timer1 = new System.Windows.Forms.Timer();
|
timer1.Interval = 500;
|
timer1.Tick += new EventHandler(timer1_Tick);
|
}
|
|
this.btnEditStatus = btnEditStatus;
|
}
|
|
private Bitmap GetResourceImage(string fileName)
|
{
|
Bitmap bmp = null;
|
if (!ResourceImage.TryGetValue(fileName, out bmp))
|
{
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HotelPms.Share.Windows.Properties.Resources", Assembly.GetExecutingAssembly());
|
object obj = temp.GetObject(fileName);
|
bmp = ((System.Drawing.Bitmap)(obj));
|
ResourceImage.Add(fileName, bmp);
|
}
|
return bmp;
|
}
|
|
private void timer1_Tick(object sender, EventArgs e)
|
{
|
Button obj = btnEditStatus as Button;
|
if (CConvert.ToBool(obj.Tag) == true)
|
{
|
if (curUpdateMode == UpdateFormMode.Edit)
|
{
|
obj.Image = GetResourceImage("henshu_w");
|
}
|
else
|
{
|
obj.Image = GetResourceImage("toroku_w");
|
}
|
obj.Tag = false;
|
}
|
else
|
{
|
if (curUpdateMode == UpdateFormMode.Edit)
|
{
|
obj.Image = GetResourceImage("henshu_b");
|
}
|
else
|
{
|
obj.Image = GetResourceImage("toroku_b");
|
}
|
obj.Tag = true;
|
}
|
}
|
|
/// <summary> [編集中(点滅)][登録中][登録中(点滅)][閲覧中]の更新
|
/// </summary>
|
public void SetEditStatusStyle()
|
{
|
if (m_IsAntLabel)
|
{
|
AntLabel label = btnEditStatus as AntLabel;
|
label.AnimationEnabled = false;
|
switch (curUpdateMode)
|
{
|
case UpdateFormMode.Edit:
|
label.Text = "編集中";
|
label.Tag = true;
|
label.EndBackColor = Color.FromArgb(192, 64, 0);
|
label.BackColor = Color.PapayaWhip;
|
label.AnimationEnabled = true;
|
break;
|
case UpdateFormMode.New:
|
label.Text = "登録中";
|
label.EndBackColor = Color.FromArgb(64, 0, 64);
|
label.BackColor = Color.PapayaWhip;
|
break;
|
case UpdateFormMode.Inputting:
|
label.Text = "登録中";
|
label.EndBackColor = Color.FromArgb(0, 64, 0);
|
label.BackColor = Color.PapayaWhip;
|
label.Tag = true;
|
label.AnimationEnabled = true;
|
break;
|
default:
|
label.Text = "閲覧中";
|
label.EndBackColor = Color.FromArgb(0, 0, 64);
|
label.BackColor = Color.PapayaWhip;
|
break;
|
}
|
}
|
else
|
{
|
Button obj = btnEditStatus as Button;
|
timer1.Enabled = false;
|
switch (curUpdateMode)
|
{
|
case UpdateFormMode.Edit:
|
obj.Image = GetResourceImage("henshu_b");
|
obj.Tag = true;
|
timer1.Enabled = true;
|
break;
|
case UpdateFormMode.New:
|
obj.Image = GetResourceImage("toroku_w");
|
break;
|
case UpdateFormMode.Inputting:
|
obj.Image = GetResourceImage("toroku_b");
|
obj.Tag = true;
|
timer1.Enabled = true;
|
break;
|
default:
|
obj.Image = GetResourceImage("etsuranchu");
|
break;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 閲覧モードから編集中に変った時(Overwrite)
|
/// </summary>
|
/// <returns></returns>
|
public ChangeEditingModeResult ChangeEditingBefore()
|
{
|
if (BeforeChangeToEditingMode != null)
|
{
|
CTextBoxArrayBaseEventArgs e = new CTextBoxArrayBaseEventArgs();
|
e.ChangeEditingModeResult = (int)ChangeEditingModeResult.Other;
|
BeforeChangeToEditingMode(this, 0, e);
|
return (ChangeEditingModeResult)e.ChangeEditingModeResult;
|
}
|
return ChangeEditingModeResult.Other;
|
}
|
|
/// <summary>
|
/// 画面の編集モードの更新
|
/// </summary>
|
/// <param name="mode"></param>
|
public ChangeEditingModeResult SetUpdateFormMode(UpdateFormMode mode)
|
{
|
if (curUpdateMode == UpdateFormMode.Normal && mode == UpdateFormMode.Edit)
|
{
|
ChangeEditingModeResult ret = ChangeEditingBefore();
|
if (ret.Equals(ChangeEditingModeResult.ReLoad)
|
|| ret.Equals(ChangeEditingModeResult.Error))
|
{
|
return ret;
|
}
|
}
|
|
curUpdateMode = mode;
|
SetEditStatusStyle(); //表示更新
|
|
switch (mode)
|
{
|
case UpdateFormMode.Edit:
|
return ChangeEditingModeResult.Editting;
|
case UpdateFormMode.Inputting:
|
return ChangeEditingModeResult.Inputting;
|
default:
|
break;
|
}
|
return ChangeEditingModeResult.Other;
|
}
|
|
/// <summary>
|
/// 編集中もしくは登録中モードへ
|
/// </summary>
|
/// <returns></returns>
|
public ChangeEditingModeResult ChangeToEditingMode()
|
{
|
if (curUpdateMode == UpdateFormMode.ReadOnly)
|
{
|
return ChangeEditingModeResult.Error;
|
}
|
|
ChangeEditingModeResult ret = ChangeEditingModeResult.Other;
|
if (curUpdateMode == UpdateFormMode.Normal)
|
{
|
ret = SetUpdateFormMode(UpdateFormMode.Edit);
|
}
|
else if (curUpdateMode == UpdateFormMode.New)
|
{
|
ret = SetUpdateFormMode(UpdateFormMode.Inputting);
|
}
|
return ret;
|
}
|
|
public void Dispose()
|
{
|
try
|
{
|
}
|
catch { }
|
}
|
}
|
}
|