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; } } }