2023-01-24 15:29:31 +01:00
|
|
|
|
/* Copyright (c) Cloud Software Group, Inc.
|
2013-08-13 11:15:52 +02:00
|
|
|
|
*
|
|
|
|
|
* Redistribution and use in source and binary forms,
|
|
|
|
|
* with or without modification, are permitted provided
|
|
|
|
|
* that the following conditions are met:
|
|
|
|
|
*
|
|
|
|
|
* * Redistributions of source code must retain the above
|
|
|
|
|
* copyright notice, this list of conditions and the
|
|
|
|
|
* following disclaimer.
|
|
|
|
|
* * Redistributions in binary form must reproduce the above
|
|
|
|
|
* copyright notice, this list of conditions and the
|
|
|
|
|
* following disclaimer in the documentation and/or other
|
|
|
|
|
* materials provided with the distribution.
|
|
|
|
|
*
|
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
|
|
|
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
|
|
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
|
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
|
|
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
|
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
|
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
|
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
|
|
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
|
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
|
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
|
|
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
|
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
|
* SUCH DAMAGE.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
using XenAdmin.Actions;
|
|
|
|
|
|
|
|
|
|
namespace XenAdmin.Controls
|
|
|
|
|
{
|
|
|
|
|
public class FilterStatusToolStripDropDownButton : ToolStripDropDownButton
|
|
|
|
|
{
|
|
|
|
|
[Browsable(true)]
|
|
|
|
|
public event Action FilterChanged;
|
|
|
|
|
|
|
|
|
|
private bool internalUpdating;
|
|
|
|
|
|
|
|
|
|
private ToolStripMenuItem toolStripMenuItemComplete;
|
|
|
|
|
private ToolStripMenuItem toolStripMenuItemInProgress;
|
|
|
|
|
private ToolStripMenuItem toolStripMenuItemError;
|
2013-08-13 18:08:04 +02:00
|
|
|
|
private ToolStripMenuItem toolStripMenuItemCancelled;
|
2019-08-22 11:47:43 +02:00
|
|
|
|
private ToolStripMenuItem toolStripMenuItemQueued;
|
|
|
|
|
private ToolStripMenuItem toolStripMenuItemIncomplete;
|
2013-08-13 11:15:52 +02:00
|
|
|
|
private ToolStripMenuItem toolStripMenuItemAll;
|
|
|
|
|
|
|
|
|
|
public FilterStatusToolStripDropDownButton()
|
|
|
|
|
{
|
2019-08-22 11:47:43 +02:00
|
|
|
|
toolStripMenuItemQueued = new ToolStripMenuItem
|
|
|
|
|
{
|
|
|
|
|
Text = Messages.STATUS_FILTER_QUEUED,
|
|
|
|
|
Checked = true,
|
|
|
|
|
CheckOnClick = true
|
|
|
|
|
};
|
2013-08-13 11:15:52 +02:00
|
|
|
|
toolStripMenuItemComplete = new ToolStripMenuItem
|
2019-08-22 11:47:43 +02:00
|
|
|
|
{
|
|
|
|
|
Text = Messages.STATUS_FILTER_COMPLETE,
|
|
|
|
|
Checked = true,
|
|
|
|
|
CheckOnClick = true
|
|
|
|
|
};
|
2013-08-13 11:15:52 +02:00
|
|
|
|
toolStripMenuItemInProgress = new ToolStripMenuItem
|
2019-08-22 11:47:43 +02:00
|
|
|
|
{
|
|
|
|
|
Text = Messages.STATUS_FILTER_IN_PROGRESS,
|
|
|
|
|
Checked = true,
|
|
|
|
|
CheckOnClick = true
|
|
|
|
|
};
|
2013-08-13 11:15:52 +02:00
|
|
|
|
toolStripMenuItemError = new ToolStripMenuItem
|
2019-08-22 11:47:43 +02:00
|
|
|
|
{
|
|
|
|
|
Text = Messages.STATUS_FILTER_ERROR,
|
|
|
|
|
Checked = true,
|
|
|
|
|
CheckOnClick = true
|
|
|
|
|
};
|
2013-08-13 18:08:04 +02:00
|
|
|
|
toolStripMenuItemCancelled = new ToolStripMenuItem
|
2019-08-22 11:47:43 +02:00
|
|
|
|
{
|
|
|
|
|
Text = Messages.STATUS_FILTER_CANCEL,
|
|
|
|
|
Checked = true,
|
|
|
|
|
CheckOnClick = true
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
toolStripMenuItemIncomplete = new ToolStripMenuItem
|
|
|
|
|
{
|
|
|
|
|
Text = Messages.STATUS_FILTER_INCOMPLETE,
|
|
|
|
|
Checked = true,
|
|
|
|
|
CheckOnClick = true
|
|
|
|
|
};
|
2013-08-13 11:15:52 +02:00
|
|
|
|
toolStripMenuItemAll = new ToolStripMenuItem
|
2019-08-22 11:47:43 +02:00
|
|
|
|
{
|
|
|
|
|
Text = Messages.FILTER_SHOW_ALL,
|
|
|
|
|
Enabled = false
|
|
|
|
|
};
|
|
|
|
|
|
2013-08-13 11:15:52 +02:00
|
|
|
|
DropDownItems.AddRange(new ToolStripItem[]
|
2019-08-22 11:47:43 +02:00
|
|
|
|
{
|
|
|
|
|
toolStripMenuItemQueued,
|
|
|
|
|
toolStripMenuItemComplete,
|
|
|
|
|
toolStripMenuItemInProgress,
|
|
|
|
|
toolStripMenuItemError,
|
|
|
|
|
toolStripMenuItemCancelled,
|
|
|
|
|
toolStripMenuItemIncomplete,
|
|
|
|
|
new ToolStripSeparator(),
|
|
|
|
|
toolStripMenuItemAll
|
|
|
|
|
});
|
2013-08-13 11:15:52 +02:00
|
|
|
|
|
2019-08-22 11:47:43 +02:00
|
|
|
|
toolStripMenuItemQueued.CheckedChanged += Item_CheckedChanged;
|
2013-08-13 11:15:52 +02:00
|
|
|
|
toolStripMenuItemComplete.CheckedChanged += Item_CheckedChanged;
|
|
|
|
|
toolStripMenuItemInProgress.CheckedChanged += Item_CheckedChanged;
|
|
|
|
|
toolStripMenuItemError.CheckedChanged += Item_CheckedChanged;
|
2013-08-13 18:08:04 +02:00
|
|
|
|
toolStripMenuItemCancelled.CheckedChanged += Item_CheckedChanged;
|
2019-08-22 11:47:43 +02:00
|
|
|
|
toolStripMenuItemIncomplete.CheckedChanged += Item_CheckedChanged;
|
2013-08-13 11:15:52 +02:00
|
|
|
|
}
|
|
|
|
|
|
2019-08-22 11:47:43 +02:00
|
|
|
|
public bool HideByStatus(IStatus iStatus)
|
2013-08-13 11:15:52 +02:00
|
|
|
|
{
|
2019-08-22 11:47:43 +02:00
|
|
|
|
return !(toolStripMenuItemComplete.Checked && iStatus.Succeeded
|
|
|
|
|
|| toolStripMenuItemError.Checked && iStatus.IsError
|
|
|
|
|
|| toolStripMenuItemInProgress.Checked && iStatus.InProgress
|
2019-08-22 14:56:59 +02:00
|
|
|
|
|| toolStripMenuItemCancelled.Checked && iStatus.IsCancelled
|
2019-08-22 11:47:43 +02:00
|
|
|
|
|| toolStripMenuItemIncomplete.Checked && iStatus.IsIncomplete
|
|
|
|
|
|| toolStripMenuItemQueued.Checked && iStatus.IsQueued);
|
|
|
|
|
}
|
2013-08-13 18:08:04 +02:00
|
|
|
|
|
2019-08-28 15:57:36 +02:00
|
|
|
|
[Browsable(false)]
|
|
|
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
2019-08-22 11:47:43 +02:00
|
|
|
|
public bool ImplementsQueued
|
|
|
|
|
{
|
|
|
|
|
get => toolStripMenuItemQueued.Visible;
|
|
|
|
|
set => toolStripMenuItemQueued.Visible = value;
|
2013-08-13 11:15:52 +02:00
|
|
|
|
}
|
|
|
|
|
|
2019-08-28 15:57:36 +02:00
|
|
|
|
[Browsable(false)]
|
|
|
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
2019-08-22 11:47:43 +02:00
|
|
|
|
public bool ImplementsIncomplete
|
2013-08-13 11:15:52 +02:00
|
|
|
|
{
|
2019-08-22 11:47:43 +02:00
|
|
|
|
get => toolStripMenuItemIncomplete.Visible;
|
|
|
|
|
set => toolStripMenuItemIncomplete.Visible = value;
|
2013-08-13 11:15:52 +02:00
|
|
|
|
}
|
|
|
|
|
|
2019-08-22 11:47:43 +02:00
|
|
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
|
|
|
public bool FilterIsOn =>
|
|
|
|
|
!toolStripMenuItemComplete.Checked
|
|
|
|
|
|| !toolStripMenuItemInProgress.Checked
|
|
|
|
|
|| !toolStripMenuItemError.Checked
|
|
|
|
|
|| !toolStripMenuItemCancelled.Checked
|
|
|
|
|
|| !toolStripMenuItemIncomplete.Checked
|
|
|
|
|
|| !toolStripMenuItemQueued.Checked;
|
|
|
|
|
|
2013-08-13 11:15:52 +02:00
|
|
|
|
protected override void OnDropDownItemClicked(ToolStripItemClickedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
base.OnDropDownItemClicked(e);
|
|
|
|
|
|
|
|
|
|
if (e.ClickedItem == toolStripMenuItemAll)
|
|
|
|
|
{
|
|
|
|
|
internalUpdating = true;
|
|
|
|
|
toolStripMenuItemComplete.Checked = true;
|
|
|
|
|
toolStripMenuItemInProgress.Checked = true;
|
|
|
|
|
toolStripMenuItemError.Checked = true;
|
2013-08-13 18:08:04 +02:00
|
|
|
|
toolStripMenuItemCancelled.Checked = true;
|
2019-08-22 11:47:43 +02:00
|
|
|
|
toolStripMenuItemIncomplete.Checked = true;
|
|
|
|
|
toolStripMenuItemQueued.Checked = true;
|
2013-08-13 11:15:52 +02:00
|
|
|
|
internalUpdating = false;
|
|
|
|
|
|
|
|
|
|
Item_CheckedChanged(null, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Item_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!internalUpdating)
|
|
|
|
|
{
|
|
|
|
|
toolStripMenuItemAll.Enabled = FilterIsOn;
|
|
|
|
|
|
|
|
|
|
if (FilterChanged != null)
|
|
|
|
|
FilterChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-07-03 14:00:24 +02:00
|
|
|
|
}
|