| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- using DevExpress.Mvvm;
- using DevExpress.Xpo;
- using DevExpress.Xpo.DB;
- using DevExpress.XtraBars;
- using DevExpress.XtraBars.Docking2010;
- using DevExpress.XtraEditors;
- using DevExpress.XtraGrid.Views.Base;
- using DevExpress.XtraGrid.Views.Grid;
- using Ips.Library.Basic;
- using Ips.Library.DxpLib;
- using Ips.Library.Entity;
- using Ips.Sps.Scheduling;
- using Ips.Sps.Tsks.Commands;
- using Ips.Sps.TskStrategys;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Ips.Sps.Tsks
- {
- public partial class TskListCtrl : DevExpress.XtraEditors.XtraUserControl
- {
- public TskListCtrl()
- {
- InitializeComponent();
- gvSignalList.ShowRowNumber();
- _tskManager = TskManager.Default;
- new LogCtrl() { Parent = grpTskLog };
- this.RegisterCommands();
- }
- Session Session { get; set; }
- TskManager _tskManager;
- public void RegisterCommands()
- {
- Messenger.Default.Register<ReloadTskMessage>(this, OnReloadTsk);
- Messenger.Default.Register<TskStateChangedMessage>(this, OnTskStateChanged);
- }
- private void OnReloadTsk(ReloadTskMessage message)
- {
- Reload();
- if (message.TskId.HasValue)
- {
- gvTskList.FocusedRowHandle = gvTskList.LocateByValue(nameof(Tsk.Oid), message.TskId);
- }
- }
- private void OnTskStateChanged(TskStateChangedMessage cmd)
- {
- var rowHandle = gvTskList.LocateByValue(nameof(Tsk.Oid), cmd.TskId);
- if (rowHandle < 0) return;
- var tsk = gvTskList.GetRow(rowHandle) as Tsk;
- this.Invoke(() => tsk.Reload());
- }
- private void TskListForm_Load(object sender, EventArgs e)
- {
- _tskManager.ResetAll();
- tskStateEdit.AddEnum<TskState>();
- Reload();
- }
- private void Reload()
- {
- Session = new Session();
- var sortProperties = new SortProperty[]{
- new SortProperty(nameof(Tsk.Oid), SortingDirection.Descending)
- };
- bsTskList.DataSource = new XPCollection<Tsk>(Session, null, sortProperties);
- }
- private void gvTskList_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
- {
- if (e.Button == MouseButtons.Left && e.Clicks == 1)
- {
- e.Handled = true;
- //btnEdit.PerformClick();
- var tskId = (int)gvTskList.GetRowCellValue(e.RowHandle, colOid);
- _tskManager.SelectTsk(tskId, 0);
- }
- }
- private void ShowEditForm(int? id, int stgId, string caption = null)
- {
- caption = caption.IfNullOrWhitespace(id.HasValue ? $"编辑任务-{caption}" : "新建任务");
- var form = new TskEditForm(id, stgId);
- form.Text = caption;
- //form.FormClosed += EditFormClosed;
- var documentManager = DocumentManager.FromControl(this.ParentForm);
- if (documentManager != null)
- {
- documentManager.View.AddDocument(form);
- }
- else
- {
- try
- {
- form.ShowDialog();
- }
- finally
- {
- form.Dispose();
- }
- }
- }
- private void EditFormClosed(object sender, FormClosedEventArgs e)
- {
- var form = sender as TskEditForm;
- form.FormClosed -= EditFormClosed;
- if (form.Id.HasValue)
- {
- Reload();
- gvTskList.FocusedRowHandle = gvTskList.LocateByValue(nameof(Tsk.Oid), form.Id);
- }
- }
- private void btnAdd_ItemClick(object sender, ItemClickEventArgs e)
- {
- //ShowEditForm(null, null);
- }
- private void btnEdit_ItemClick(object sender, ItemClickEventArgs e)
- {
- if (gvTskList.FocusedRowHandle < 0) return;
- var tsk = gvTskList.GetFocusedRow() as Tsk;
- //var id = (int)gvTskList.GetFocusedRowCellValue(colOid);
- ShowEditForm(tsk.Oid, tsk.Strategy?.Oid ?? 0, tsk.Name);
- }
- private void btnDelete_ItemClick(object sender, ItemClickEventArgs e)
- {
- if (gvTskList.FocusedRowHandle < 0) return;
- var handles = gvTskList.GetSelectedRows();
- if (handles.Length == 0) return;
- if (MsgHelper.ShowConfirm("确定删除选中的记录吗?"))
- {
- var modelList = handles.Select(m => gvTskList.GetRow(m) as Tsk).ToList();
- Session.Delete(modelList);
- Reload();
- }
- }
- private void gvTskList_MouseDown(object sender, MouseEventArgs e)
- {
- if (e.Button == MouseButtons.Right)
- {
- var hitInfo = gvTskList.CalcHitInfo(e.Location);
- btnStart.Visibility = btnStop.Visibility = btnEdit.Visibility = btnDelete.Visibility = hitInfo.InRow ? BarItemVisibility.Always : BarItemVisibility.Never;
- var tsk = gvTskList.GetRow(hitInfo.RowHandle) as Tsk;
- if (tsk != null)
- {
- bool isStart = tsk.State != TskState.Stop;
- btnStart.Enabled = !isStart;
- btnStop.Enabled = isStart;
- }
- popTskList.ShowPopup(grdTskList.PointToScreen(e.Location));
- }
- }
- private void btnStart_ItemClick(object sender, ItemClickEventArgs e)
- {
- if (gvTskList.FocusedRowHandle < 0) return;
- var tsk = gvTskList.GetFocusedRow() as Tsk;
- if (tsk.IsHistory)
- {
- StartTskForm startTskForm = new StartTskForm(tsk.Oid);
- if (startTskForm.ShowDialog() != DialogResult.OK) return;
- }
- try
- {
- TskScheduler.Default.Start(tsk.Oid);
- }
- catch (Exception ex)
- {
- MsgHelper.ShowError("启动任务出错," + ex.Message);
- }
- }
- private void btnStop_ItemClick(object sender, ItemClickEventArgs e)
- {
- if (gvTskList.FocusedRowHandle < 0) return;
- var id = (int)gvTskList.GetFocusedRowCellValue(colOid);
- try
- {
- TskScheduler.Default.Stop(id);
- }
- catch (Exception ex)
- {
- MsgHelper.ShowError("停止任务出错," + ex.Message);
- }
- }
- private void gvTskList_FocusedRowObjectChanged(object sender, FocusedRowObjectChangedEventArgs e)
- {
- }
- private void gvSignalList_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
- {
- if (e.Button == MouseButtons.Left && e.Clicks == 1)
- {
- e.Handled = true;
- var sig = (sender as GridView).GetRow(e.RowHandle) as TskSignal;
- _tskManager.SelectTsk(sig.Tsk.Oid, sig.Oid);
- }
- }
- }
- }
|