Beispiel #1
0
        // 310 x 350
        protected virtual void RenderFilePanel(Rectangle panel, int index, TreeGumpNode node)
        {
            if (FileMime.IsCommonText(SelectedFile))
            {
                var content = File.ReadAllText(SelectedFile.FullName);

                AddHtml(panel.X, panel.Y, panel.Width, panel.Height, content, HtmlColor, Color.Black);
            }
        }
Beispiel #2
0
 protected void RenderPanel(Rectangle panel, int index, TreeGumpNode node)
 {
     if (SelectedFile != null)
     {
         RenderFilePanel(panel, index, node);
     }
     else
     {
         RenderDirectoryPanel(panel, index, node);
     }
 }
Beispiel #3
0
        // 310 x 350
        protected virtual void RenderDirectoryPanel(Rectangle2D panel, int index, TreeGumpNode node)
        {
            var x = panel.X + 20;
            var y = panel.Y + 20;

            var w = panel.Width - 40;
            var h = panel.Height - 20;

            var xx = x;
            var yy = y;

            var subIndex = 0;

            var xMax = w / 65;
            var yMax = h / 110;

            var max = xMax * yMax;

            var range =
                Enumerable.Empty <FileSystemInfo>()
                .Union(SelectedDirectory.EnumerateDirectories().OrderByNatural(d => d.Name))
                .Union(SelectedDirectory.EnumerateFiles().OrderByNatural(f => f.Name));

            foreach (var info in range.Take(max))
            {
                // 65 x 110
                if (info is DirectoryInfo)
                {
                    var dir = (DirectoryInfo)info;

                    // 56 x 80
                    AddButton(xx, yy, 9810, 9810, b => SelectDirectory(dir));                     // 56 x 50
                    AddHtml(xx, yy + 50, 56, 40, info.Name.WrapUOHtmlCenter(), true, false);      // 56 x 40
                }
                else if (info is FileInfo)
                {
                    var file = (FileInfo)info;

                    // 56 x 80
                    AddButton(xx + 5, yy, 2234, 2234, b => SelectFile(file));                     // 46 x 50
                    AddHtml(xx, yy + 50, 56, 40, info.Name.WrapUOHtmlCenter(), true, false);      // 56 x 40
                }

                if (++subIndex % xMax == 0)
                {
                    xx  = x;
                    yy += 110;
                }
                else
                {
                    xx += 65;
                }
            }
        }
Beispiel #4
0
        protected override void OnSelected(TreeGumpNode oldNode, TreeGumpNode newNode)
        {
            var path = GetPath(newNode);

            if (Directory.Exists(path))
            {
                SelectedDirectory = new DirectoryInfo(path);
            }

            SelectedFile = null;

            base.OnSelected(oldNode, newNode);
        }
Beispiel #5
0
        private string GetPath(TreeGumpNode node)
        {
            if (RootDirectory.Parent != null)
            {
                return(Path.Combine(
                           RootDirectory.Parent.FullName,
                           node.FullName.Replace(TreeGumpNode.Separator, IOUtility.PathSeparator))
                       .Trim(IOUtility.PathSeparator));
            }

            return(Path.Combine(RootDirectory.FullName, node.FullName.Replace(TreeGumpNode.Separator, IOUtility.PathSeparator))
                   .Trim(IOUtility.PathSeparator));
        }
Beispiel #6
0
        protected override void OnSelected(int index, TreeGumpNode node)
        {
            var path = GetPath(node);

            if (Directory.Exists(path))
            {
                SelectedDirectory = new DirectoryInfo(path);
            }

            SelectedFile = null;

            base.OnSelected(index, node);
        }
Beispiel #7
0
        private void MapTree(Dictionary <TreeGumpNode, Action <Rectangle, int, TreeGumpNode> > list, DirectoryInfo dir)
        {
            TreeGumpNode node = GetPath(dir);

            list[node] = RenderPanel;

            var dirs = dir.EnumerateDirectories();

            foreach (var d in dirs.OrderByNatural(d => d.Name))
            {
                node = GetPath(dir);

                if (node >= SelectedNode)
                {
                    MapTree(list, d);
                }
                else
                {
                    list[node] = RenderPanel;
                }
            }
        }
Beispiel #8
0
 // 310 x 350
 protected virtual void RenderFilePanel(Rectangle2D panel, int index, TreeGumpNode node)
 {
 }