Esempio n. 1
0
        private void btnDeleteJob_Click(object sender, EventArgs e)
        {
            TreeNode selectedNode = jobGroupsTreeView.SelectedNode;

            if (selectedNode is JobNode)
            {
                JobNode node = (JobNode)jobGroupsTreeView.SelectedNode;
                _schedulerProvider.Scheduler.DeleteJob(node.Detail.Key);
                jobGroupsTreeView.SelectedNode.Remove();
                loadRunningJobs();
            }
            var triggerNode = selectedNode as TriggerNode;

            if (triggerNode != null)
            {
                _schedulerProvider.Scheduler.UnscheduleJob(triggerNode.Trigger.Key);
            }
        }
Esempio n. 2
0
        private void addJobNodes(TreeNode jobsNode)
        {
            string group        = jobsNode.Parent.Text;
            var    groupMatcher = GroupMatcher <JobKey> .GroupEquals(group);

            var jobKeys = _schedulerProvider.Scheduler.GetJobKeys(groupMatcher);

            foreach (var jobKey in jobKeys)
            {
                try
                {
                    IJobDetail detail  = _schedulerProvider.Scheduler.GetJobDetail(jobKey);
                    JobNode    jobNode = new JobNode(detail);
                    jobsNode.Nodes.Add(jobNode);
                    addTriggerNodes(jobNode);
                }
                catch (Exception ex)
                {
                    jobsNode.Nodes.Add(string.Format("Unknown Job Type ({0})", jobKey.Name));
                }
            }
        }
Esempio n. 3
0
        private void btnRunJobNow_Click(object sender, EventArgs e)
        {
            JobNode node = (JobNode)jobGroupsTreeView.SelectedNode;

            _schedulerProvider.Scheduler.TriggerJob(node.Detail.Key);
        }
Esempio n. 4
0
        void jobGroupsTreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            ListView lv = new ListView();

            lv.Items.Clear();
            jobDetailsToggle(false);
            if (e.Node is SchedulerNode)
            {
                pnlDetails.Controls.Add(new ScheduleDisplay(_schedulerDataProvider.Data));
            }
            if (e.Node is TriggerNode || e.Node is JobNode)
            {
                btnDeleteJob.Enabled = true;
            }
            else
            {
                btnDeleteJob.Enabled = false;
            }
            if (e.Node is JobNode)
            {
                JobNode jobNode        = (JobNode)e.Node;
                var     jobDetailsData = _schedulerDataProvider.GetJobDetailsData(e.Node.Text, e.Node.Parent.Parent.Text);
                btnRunJobNow.Enabled = true;
                pnlDetails.Controls.Add(new NativeJobDetailDisplay(jobDetailsData));
            }
            else
            {
                btnRunJobNow.Enabled = false;
            }
            if (e.Node is TriggerNode)
            {
                TriggerNode node        = (TriggerNode)e.Node;
                var         triggerData = _schedulerDataProvider.GetTriggerData(node.Trigger.Key);
                btnPause.Enabled = true;
                setPauseButtonText();
                if (triggerData.TriggerType.Code == "cron")
                {
                    pnlDetails.Controls.Add(new CronTriggerDisplay(triggerData));
                }
                if (triggerData.TriggerType.Code == "simple")
                {
                    pnlDetails.Controls.Add(new SimpleTriggerDisplay(triggerData));
                }
                btnEdit.Enabled = true;
            }
            else
            {
                btnEdit.Enabled  = false;
                btnPause.Enabled = false;
            }

            #region 當選擇JobGroup子節點時自動過濾出List列表內容

            if (e.Node.Parent != null && e.Node.Parent.Text == "Job Groups")
            {
                ListViewItem searchItem = null;
                int          index      = 0;
                List <int>   listIndex  = new List <int>();
                List <int>   temp       = new List <int>();
                for (int i = 0; i < listView_RunningJobs.Items.Count; i++)
                {
                    temp.Add(i);
                }
                do
                {
                    if (index < listView_RunningJobs.Items.Count)
                    {
                        searchItem = listView_RunningJobs.FindItemWithText(e.Node.Text, true, index, false);
                        if (searchItem != null)
                        {
                            index = searchItem.Index + 1;
                            listIndex.Add(index);
                            searchItem.BackColor = Color.Coral;
                            if (temp.Exists(m => m == index - 1))
                            {
                                temp.Remove(index - 1);
                            }
                        }
                    }
                    else
                    {
                        searchItem = null;
                    }
                } while (searchItem != null);
                for (int i = 0; i < temp.Count; i++)
                {
                    ListViewItem item = listView_RunningJobs.Items[temp[i]];
                    item.BackColor = Color.Empty;
                }
            }
            else
            {
                for (int i = 0; i < listView_RunningJobs.Items.Count; i++)
                {
                    ListViewItem item = listView_RunningJobs.Items[i];
                    item.BackColor = Color.Empty;
                }
            }
            #endregion

            jobDetailsToggle(true);
        }