private Image createImage(Node node, int children)
        {
            Image img = new Image();
            BitmapImage bi = new BitmapImage();
            bi.BeginInit();
            bi.UriSource = new Uri("res/img/" + node.ImageName + ".png", UriKind.Relative);
            bi.EndInit();
            bi.Freeze();

            img.Source = bi;
            if (node.Level == 1)
            {
                img.Height = 118;
                img.Width = 258;
            }
            else
            {
                if (children <= 6)
                {
                    img.Height = 200;
                    img.Width = 209;
                }
                else
                {
                    img.Height = 150;
                    img.Width = 153;
                }
            }

            img.Margin = new Thickness(10, 0, 80, 0);
            img.Tag = node;
            img.MouseLeftButtonDown += gotoNext;

            return img;
        }
        public FullScreenPlayer(Node current, Player ucPlayer, MediaElement parent, TimeSpan now)
        {
            InitializeComponent();

            //if (!File.Exists(current.Filelocation))
            //{
            //    MessageBox.Show("文件不存在!!");
            //}
            //else
            //{
            //    VideoUtil.encode(current.Filelocation);
            //}
            this.parent = parent;
            this.current = current;
            this.ucPlayer = ucPlayer;
            player.Width = SystemParameters.VirtualScreenWidth;
            player.Height = SystemParameters.VirtualScreenHeight - 45;

            //wpfMediaPlayer.URL = current.Filelocation;

            //player.Play();

            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(1);
            timer.Tick += timer_Tick;
            timer.Start();

            player.Source = new Uri(current.Filelocation, UriKind.Relative);
            player.Position = now;
            player.Play();
        }
        public IndexWindow(Node current)
        {
            InitializeComponent();

            this.current = current;

            refreshLayout(current);
        }
        public Player(Node current, ProgressBar pb)
        {
            InitializeComponent();

            playerPanel.Width = SystemParameters.VirtualScreenWidth * 0.7;
            playerPanel.Height = SystemParameters.VirtualScreenHeight - 200;
            player.Width = SystemParameters.VirtualScreenWidth * 0.7;
            player.Height = SystemParameters.VirtualScreenHeight - 260;

            player.CacheMode = new BitmapCache() { };

            desViewer.Height = (SystemParameters.VirtualScreenHeight - 270) * 0.85;

            if (!File.Exists(current.Filelocation))
            {
                MessageBox.Show("文件不存在!!");
            }
            else
            {
                VideoUtil.encode(current.Filelocation);
            }

            this.current = current;
            title.Content = current.Name;
            title.FontWeight = FontWeights.Bold;

            TextBlockHelper.formatTextBlock(description, current.Description);

            if (player.Source == null)
            {
                player.Source = new Uri(current.Filelocation, UriKind.Relative);
            }
            player.Play();
            isPlaying = true;

            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(1);
            timer.Tick += timer_Tick;
            timer.Start();
            //this.AddHandler(IndexWindow.closeEvent, new RoutedEventHandler(close));
        }
        private void refreshLayout(Node node)
        {
            if (body.Children.OfType<Player>().Count<Player>() > 0)
            {
                Player player = body.Children[0] as Player;
                player.player.Stop();
                player.player.Source = null;
                GC.Collect();
                Thread.Sleep(100);
                if (File.Exists(current.Filelocation))
                {
                    VideoUtil.encode(current.Filelocation);
                }
            }

            this.current = node;
            refreshBreadCrumb(node);
            refreshBody(node);
        }
        private void refreshBreadCrumb(Node node)
        {
            breadcrumb.Children.RemoveRange(0, breadcrumb.Children.Count);
            Stack<Node> stack = new Stack<Node>();

            Node tmp = node;
            while (tmp != null)
            {
                stack.Push(tmp);
                if (tmp.Parent == null)
                {
                    break;
                }
                else
                {
                    tmp = tmp.Parent;
                }
            }

            int count = stack.Count;
            foreach (Node top in stack)
            {
                Label label = new Label();
                label.Content = top.Name;
                label.Margin = new Thickness(5, 0, 0, 0);
                label.Tag = top;
                label.MouseLeftButtonDown += gotoPrev;
                breadcrumb.Children.Add(label);

                --count;
                if (count != 0)
                {
                    Label arrow = new Label();
                    arrow.Content = ">";
                    arrow.Margin = new Thickness(5, 0, 0, 0);
                    breadcrumb.Children.Add(arrow);
                }

            }
        }
        private void refreshBody(Node node)
        {
            body.Children.RemoveRange(0, body.Children.Count);

            if (node.Leaf)
            {
                if (node.ExceptionDescription.Length > 0)
                {
                    generateDescriptionPage();
                }
                else
                {
                    generateMediaPage();
                }
            }
            else
            {
                if (!node.Leaf && node.Description.Length > 0)
                {
                    generateDescriptionPage();
                }
                else
                {
                    generateDirectoryPage();
                }
            }
        }
        private static void addChildren(Node node, XmlNode item, int index)
        {
            node.Name = item.Attributes["name"].Value.ToString();
            String level = item.Attributes["level"].Value.ToString();
            node.Level = Convert.ToInt32(item.Attributes["level"].Value.ToString());

            if (node.Level == 1)
            {
                if (node.Name.Equals("组织指挥"))
                {
                    node.ImageName = "org";
                }
                else if (node.Name.Equals("基本技术"))
                {
                    node.ImageName = "basic";
                }
                else if (node.Name.Equals("技能应用"))
                {
                    node.ImageName = "comp";
                }
                else
                {
                    node.ImageName = "emerg";
                }
            }
            else if (node.Level > 1)
            {
                node.ImageName = node.Parent.ImageName + "_" + index;
            }

            node.Leaf = item.Attributes["leaf"].Value.ToString().Equals("true");

            if (ConfigHolder.getInfo().ContainsKey(node.Name + ".d"))
            {
                String des = ConfigHolder.getInfo()[node.Name + ".d"];
                if (!des.StartsWith("        "))
                    node.Description = "        " + des;
            }
            else
            {
                node.Description = "";
            }

            if (ConfigHolder.getInfo().ContainsKey(node.Name + ".dd"))
            {
                String des = ConfigHolder.getInfo()[node.Name + ".dd"];
                node.ExceptionDescription = des;
            }
            else
            {
                node.ExceptionDescription = "";
            }

            if (node.Leaf && ConfigHolder.getInfo().ContainsKey(node.Name + ".f"))
            {
                node.Filelocation = "media/" + ConfigHolder.getInfo()[node.Name + ".f"];
            }
            else
            {
                node.Filelocation = "";
            }

            XmlNodeList list = item.ChildNodes;

            for (int i = 1; i <= list.Count; ++i)
            {
                Node childNode = new Node();
                childNode.Parent = node;
                node.Children.Add(childNode);
                addChildren(childNode, list[i-1], i);
            }
        }
        private static void getDirectory()
        {
            XmlElement element = xml.DocumentElement;
            root = new Node();

            root.Name = "首页";
            root.Parent = null;
            root.Leaf = false;
            root.Description = null;
            root.Filelocation = null;

            addChildren(root, element, 0);
        }