using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using BSE.Platten.BO;
using BSE.Platten.Tunes.Properties;
using BSE.Platten.Common;
using System.Globalization;
namespace BSE.Platten.Tunes
{
public partial class TreeInterpretenTitel : UserControl
{
#region Enums
public enum TreeViewMode
{
Interprets,
Genre,
Year
}
#endregion
#region Events
public event EventHandler<TreeInterpretenTitelEventArgs> TitelAfterSelect;
#endregion
#region FieldsPrivate
#endregion
#region MethodsPublic
public TreeInterpretenTitel()
{
InitializeComponent();
Image imgInterpret = Resources.Interpret16;
Image imgAlbum = Resources.Album16;
Image imgGenre = Resources.Genre16;
this.m_imgList.Images.AddRange(new Image[] {
imgInterpret,
imgAlbum,
imgGenre});
}
public void SetInterpretsAndAlbums(CInterpretData[] interpretsAndAlbums)
{
if (interpretsAndAlbums == null)
{
throw new ArgumentNullException(
string.Format(
CultureInfo.InvariantCulture,
Resources.IDS_ArgumentNullException,"interpretsAndAlbums"));
}
this.m_trvInterpretenTitel.Nodes.Clear();
try
{
foreach (BSE.Platten.BO.CInterpretData interpret in interpretsAndAlbums)
{
TreeNode treeNode = new TreeNode(interpret.Interpret);
treeNode.ImageIndex = 0;
treeNode.SelectedImageIndex = 0;
if (interpret.Albums != null)
{
AddTreeChilds(interpret.Albums, treeNode, TreeViewMode.Interprets);
}
this.m_trvInterpretenTitel.Nodes.Add(treeNode);
}
}
catch (Exception exception)
{
GlobalizedMessageBox.Show(this,exception.Message, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
public void SetGenresWithAlbums(CGenreData[] genresWithAlbums)
{
if (genresWithAlbums == null)
{
throw new ArgumentNullException(
string.Format(
CultureInfo.InvariantCulture,
Resources.IDS_ArgumentNullException,"genresWithAlbums"));
}
this.m_trvGenreInterpretsAndTitles.Nodes.Clear();
try
{
foreach (BSE.Platten.BO.CGenreData genre in genresWithAlbums)
{
TreeNode treeNode = new TreeNode(genre.Genre);
treeNode.ImageIndex = 2;
treeNode.SelectedImageIndex = 2;
if (genre.Albums != null)
{
AddTreeChilds(genre.Albums, treeNode, TreeViewMode.Genre);
}
this.m_trvGenreInterpretsAndTitles.Nodes.Add(treeNode);
}
}
catch (Exception exception)
{
GlobalizedMessageBox.Show(this, exception.Message, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
public void SetYearsWithAlbums(CYearData[] yearsWithAlbums)
{
if (yearsWithAlbums == null)
{
throw new ArgumentNullException(
string.Format(
CultureInfo.InvariantCulture,
Resources.IDS_ArgumentNullException,"yearsWithAlbums"));
}
this.m_trvYearInterpretsAndTitles.Nodes.Clear();
try
{
foreach (BSE.Platten.BO.CYearData year in yearsWithAlbums)
{
TreeNode treeNode = new TreeNode(year.Year.ToString(CultureInfo.InvariantCulture));
treeNode.ImageIndex = 2;
treeNode.SelectedImageIndex = 2;
if (year.Albums != null)
{
AddTreeChilds(year.Albums, treeNode, TreeViewMode.Year);
}
this.m_trvYearInterpretsAndTitles.Nodes.Add(treeNode);
}
}
catch (Exception exception)
{
GlobalizedMessageBox.Show(this, exception.Message, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
public void SetSelectedChildNode(int iTitelId)
{
TabPage tabPage = this.m_tabMain.SelectedTab;
if (tabPage != null)
{
TreeView treeView = tabPage.Controls[0] as TreeView;
if (treeView != null)
{
foreach (TreeNode node in treeView.Nodes)
{
foreach (TreeNode childNode in node.Nodes)
{
TreeInterpretenTitelChildNode treeInterpretenTitelChildNode = childNode as TreeInterpretenTitelChildNode;
if ((treeInterpretenTitelChildNode != null) && (treeInterpretenTitelChildNode.TitelId == iTitelId))
{
treeView.SelectedNode = treeInterpretenTitelChildNode;
treeInterpretenTitelChildNode.BackColor = SystemColors.Highlight;
treeInterpretenTitelChildNode.ForeColor = SystemColors.HighlightText;
}
}
}
}
}
}
#endregion
#region MethodsProtected
#endregion
#region MethodsPrivate
private static void AddTreeChilds(BSE.Platten.BO.CAlbum[] albums, TreeNode treeNode, TreeViewMode treeViewMode)
{
foreach (BSE.Platten.BO.CAlbum album in albums)
{
TreeInterpretenTitelChildNode treeTitelChildNode = new TreeInterpretenTitelChildNode();
if (treeViewMode == TreeViewMode.Interprets)
{
treeTitelChildNode.Text = album.Title;
}
if (treeViewMode == TreeViewMode.Genre)
{
treeTitelChildNode.Text = album.Interpret + " - " + album.Title;
}
if (treeViewMode == TreeViewMode.Year)
{
treeTitelChildNode.Text = album.Interpret + " - " + album.Title;
}
treeTitelChildNode.TitelId = album.AlbumId;
treeTitelChildNode.ImageIndex = 1;
treeTitelChildNode.SelectedImageIndex = 1;
treeNode.Nodes.Add(treeTitelChildNode);
}
}
private void TreeViewItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
TreeInterpretenTitelChildNode treeNode = e.Item as TreeInterpretenTitelChildNode;
if (treeNode != null)
{
PlayListDragDropData playListDragDropData = new PlayListDragDropData();
playListDragDropData.Id = treeNode.TitelId;
playListDragDropData.PlayListDragDropMode = PlayList.PlayListDragDropMode.Albums;
BSE.Windows.Forms.CDraggedListViewObjects draggedListViewObjects
= new BSE.Windows.Forms.CDraggedListViewObjects(new BSE.Windows.Forms.ListView(DragDropEffects.Move));
draggedListViewObjects.DragObjects.Add(playListDragDropData);
BSE.Windows.Forms.CDataObject dataObject = new BSE.Windows.Forms.CDataObject(draggedListViewObjects);
DoDragDrop(dataObject, DragDropEffects.Move);
}
}
private void TreeViewBeforeSelect(object sender, TreeViewCancelEventArgs e)
{
System.Windows.Forms.TabControl.TabPageCollection tabPages = this.m_tabMain.TabPages;
foreach (TabPage tabPage in tabPages)
{
if (tabPage != null)
{
TreeView treeView = tabPage.Controls[0] as TreeView;
if (treeView != null)
{
TreeNode selectedTreeNode = treeView.SelectedNode;
if (selectedTreeNode != null)
{
selectedTreeNode.BackColor = SystemColors.Window;
selectedTreeNode.ForeColor = SystemColors.WindowText;
}
}
}
}
}
private void TreeViewAfterSelect(object sender, TreeViewEventArgs e)
{
TabPage selectedTabPage = this.m_tabMain.SelectedTab;
TreeView treeView = selectedTabPage.Controls[0] as TreeView;
if (treeView != null)
{
TreeNode selectedTreeNode = treeView.SelectedNode;
if (selectedTreeNode != null)
{
selectedTreeNode.BackColor = SystemColors.Highlight;
selectedTreeNode.ForeColor = SystemColors.HighlightText;
}
}
if (e.Action != TreeViewAction.Unknown)
{
TreeInterpretenTitelChildNode treeTitelChildNode = e.Node as TreeInterpretenTitelChildNode;
if (treeTitelChildNode != null)
{
if (TitelAfterSelect != null)
{
TitelAfterSelect(this, new TreeInterpretenTitelEventArgs(e.Node, e.Action, treeTitelChildNode.TitelId));
}
}
}
}
private void TreeViewMouseUp(object sender, MouseEventArgs e)
{
TreeView treeView = sender as TreeView;
if (treeView != null)
{
TreeNode treeNode = treeView.GetNodeAt(e.X, e.Y) as TreeNode;
if (treeNode == null)
{
return;
}
if (treeNode.IsSelected == false)
{
treeView.SelectedNode = treeNode;
}
TreeInterpretenTitelChildNode treeChildNode = treeNode as TreeInterpretenTitelChildNode;
if (treeChildNode != null)
{
if (TitelAfterSelect != null)
{
TitelAfterSelect(this, new TreeInterpretenTitelEventArgs(treeChildNode, TreeViewAction.ByMouse, treeChildNode.TitelId));
}
}
}
}
private void m_tabMain_SelectedIndexChanged(object sender, System.EventArgs e)
{
TabPage tabPage = m_tabMain.SelectedTab;
foreach (Control control in tabPage.Controls)
{
TreeView treeView = (TreeView)control;
if (treeView != null)
{
treeView.Focus();
}
}
}
#endregion
}
}