using System;
using System.ComponentModel;
using System.Data;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CMS.ExtendedControls;
using CMS.GlobalHelper;
using CMS.UIControls;
public partial class CMSAdminControls_UI_Selectors_ItemSelection : CMSUserControl
{
#region "Variables"
private string[,] mLeftItems = null;
private string[,] mRightItems = null;
private bool mShowUpDownButtons = true;
#endregion
#region "Public properties"
///
/// Left column label.
///
public Label LeftColumnLabel
{
get
{
return lblLeftColumn;
}
set
{
lblLeftColumn = value;
}
}
///
/// Right column label.
///
public Label RightColumnLabel
{
get
{
return lblRightColumn;
}
set
{
lblRightColumn = value;
}
}
///
/// Right column list box.
///
public ListBox RightColumListBox
{
get
{
return lstRightColumn;
}
set
{
lstRightColumn = value;
}
}
///
/// Left column list box.
///
public ListBox LeftColumListBox
{
get
{
return lstLeftColumn;
}
set
{
lstLeftColumn = value;
}
}
///
/// Moves right button.
///
public CMSButton MoveRightButton
{
get
{
return btnMoveRight;
}
set
{
btnMoveRight = value;
}
}
///
/// Moves left button.
///
public CMSButton MoveLeftButton
{
get
{
return btnMoveLeft;
}
set
{
btnMoveLeft = value;
}
}
///
/// Left column items.
///
[Category("Data"), Description("Left column items.")]
public string[,] LeftItems
{
get
{
return mLeftItems;
}
set
{
mLeftItems = value;
}
}
///
/// Right column items.
///
[Category("Data"), Description("Right column items.")]
public string[,] RightItems
{
get
{
return mRightItems;
}
set
{
mRightItems = value;
}
}
///
/// Gets or sets the value which determines whether to show up / down buttons.
///
public bool ShowUpDownButtons
{
get
{
return mShowUpDownButtons;
}
set
{
mShowUpDownButtons = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!mShowUpDownButtons)
{
btnDown.Visible = false;
btnUp.Visible = false;
}
else
{
btnUp.Text = GetString("ItemSelection.btnUp");
btnDown.Text = GetString("ItemSelection.btnDown");
btnDown.Enabled = false;
btnUp.Enabled = false;
}
plcButtons.Visible = mShowUpDownButtons;
if (!RequestHelper.IsPostBack())
{
fill();
}
else
{
ChangeProperties();
}
}
///
/// Fill Column list boxs.
///
public void fill()
{
lstLeftColumn.Items.Clear();
lstRightColumn.Items.Clear();
// Fill left column
if (mLeftItems != null)
{
for (int i = LeftItems.GetLowerBound(0); i <= LeftItems.GetUpperBound(0); i++)
{
ListItem li = new ListItem(LeftItems[i, 1], LeftItems[i, 0]);
lstLeftColumn.Items.Add(li);
}
}
// Fill right column
if (mRightItems != null)
{
for (int i = RightItems.GetLowerBound(0); i <= RightItems.GetUpperBound(0); i++)
{
ListItem li = new ListItem(RightItems[i, 1], RightItems[i, 0]);
lstRightColumn.Items.Add(li);
}
}
}
///
/// Moves selected items from left column to right column.
///
protected void MoveRightButton_Click(object sender, EventArgs e)
{
if ((LeftItems != null) && (LeftItems.Length > 0))
{
string args = "";
for (int i = 0; i < lstLeftColumn.Items.Count; i++)
{
if (lstLeftColumn.Items[i].Selected == true)
{
args += ";" + lstLeftColumn.Items[i].Value;
lstLeftColumn.Items[i].Selected = false;
lstRightColumn.Items.Add(lstLeftColumn.Items[i]);
lstLeftColumn.Items.Remove(lstLeftColumn.Items[i]);
i--;
}
}
ChangeProperties();
// Raise the event
if (OnMoveRight != null)
{
OnMoveRight(sender, new CommandEventArgs("roleid", args));
}
}
}
///
/// Moves Selected items from right column to left column.
///
protected void MoveLeftButton_Click(object sender, EventArgs e)
{
if ((RightItems != null) && (RightItems.Length > 0))
{
string args = "";
for (int i = 0; i < lstRightColumn.Items.Count; i++)
{
if (lstRightColumn.Items[i].Selected == true)
{
args += ";" + lstRightColumn.Items[i].Value;
lstRightColumn.Items[i].Selected = false;
lstLeftColumn.Items.Add(lstRightColumn.Items[i]);
lstRightColumn.Items.Remove(lstRightColumn.Items[i]);
i--;
}
}
btnDown.Enabled = false;
btnUp.Enabled = false;
ChangeProperties();
// Raise the event
if (OnMoveLeft != null)
{
OnMoveLeft(sender, new CommandEventArgs("roleid", args));
}
}
}
///
/// Change data in LeftItems and RightItems.
///
public void ChangeProperties()
{
string[,] mLeft = new string[lstLeftColumn.Items.Count,2];
string[,] mRight = new string[lstRightColumn.Items.Count,2];
// LeftItems properties
for (int i = 0; i < lstLeftColumn.Items.Count; i++)
{
mLeft[i, 0] = lstLeftColumn.Items[i].Value;
mLeft[i, 1] = lstLeftColumn.Items[i].Text;
}
// RightItems properties
for (int i = 0; i < lstRightColumn.Items.Count; i++)
{
mRight[i, 0] = lstRightColumn.Items[i].Value;
mRight[i, 1] = lstRightColumn.Items[i].Text;
}
// Save it
if (lstLeftColumn.Items.Count > 0)
{
LeftItems = mLeft;
}
else
{
LeftItems = null;
}
if (lstRightColumn.Items.Count > 0)
{
RightItems = mRight;
}
else
{
RightItems = null;
}
if (lstRightColumn.SelectedItem != null)
{
btnDown.Enabled = true;
btnUp.Enabled = true;
}
}
#region "Handle event"
public event CommandEventHandler OnMoveLeft;
public event CommandEventHandler OnMoveRight;
public event EventHandler OnPostBack;
public void lstRightColumn_SelectedIndexChanged(object sender, EventArgs e)
{
if (OnPostBack != null)
{
OnPostBack(sender, e);
}
}
#endregion
///
/// MoveUp selected column.
///
protected void btnUp_Click(object sender, EventArgs e)
{
if (lstRightColumn.SelectedItem != null && lstRightColumn.SelectedIndex > 0)
{
int index = lstRightColumn.SelectedIndex;
lstRightColumn.Items[index].Selected = false;
lstRightColumn.Items[index - 1].Selected = false;
ListItem mDown = new ListItem(lstRightColumn.Items[index - 1].Text, lstRightColumn.Items[index - 1].Value);
ListItem mUp = new ListItem(lstRightColumn.Items[index].Text, lstRightColumn.Items[index].Value);
lstRightColumn.Items[index].Text = mDown.Text;
lstRightColumn.Items[index].Value = mDown.Value;
lstRightColumn.Items[index - 1].Text = mUp.Text;
lstRightColumn.Items[index - 1].Value = mUp.Value;
string mItem = "";
mItem = RightItems[index, 0];
RightItems[index, 0] = RightItems[index - 1, 0];
RightItems[index - 1, 0] = mItem;
mItem = RightItems[index, 1];
RightItems[index, 1] = RightItems[index - 1, 1];
RightItems[index - 1, 1] = mItem;
lstRightColumn.Items[index - 1].Selected = true;
}
}
///
/// MoveDown selected column.
///
protected void btnDown_Click(object sender, EventArgs e)
{
if (lstRightColumn.SelectedItem != null && lstRightColumn.SelectedIndex < lstRightColumn.Items.Count - 1)
{
int index = lstRightColumn.SelectedIndex;
lstRightColumn.Items[index].Selected = false;
lstRightColumn.Items[index + 1].Selected = false;
ListItem mDown = new ListItem(lstRightColumn.Items[index + 1].Text, lstRightColumn.Items[index + 1].Value);
ListItem mUp = new ListItem(lstRightColumn.Items[index].Text, lstRightColumn.Items[index].Value);
lstRightColumn.Items[index].Text = mDown.Text;
lstRightColumn.Items[index].Value = mDown.Value;
lstRightColumn.Items[index + 1].Text = mUp.Text;
lstRightColumn.Items[index + 1].Value = mUp.Value;
string mItem = "";
mItem = RightItems[index, 0];
RightItems[index, 0] = RightItems[index + 1, 0];
RightItems[index + 1, 0] = mItem;
mItem = RightItems[index, 1];
RightItems[index, 1] = RightItems[index + 1, 1];
RightItems[index + 1, 1] = mItem;
lstRightColumn.Items[index + 1].Selected = true;
}
}
}