Click here to Skip to main content
15,885,880 members
Articles / Desktop Programming / Windows Forms

BSEtunes

Rate me:
Please Sign up or sign in to vote.
4.67/5 (11 votes)
24 Apr 2010CPOL4 min read 64.6K   4.3K   58  
BSEtunes is a MySQL based, full manageable, networkable single or multiuser jukebox application
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

        

        
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Switzerland Switzerland
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions