@@ -10,14 +10,15 @@ namespace MinecraftServerManager.Controls.ServersTreeNodes
1010 public class DirectoryNode : TreeNode
1111 {
1212 public bool Delete = false ;
13- private DirectoryInfo Directory ;
13+ private DirectoryInfo directory ;
14+ protected List < string > IgnoredFiles = new List < string > ( ) ;
1415 protected List < string > names = new List < string > ( ) ;
1516 protected Timer timer = new Timer ( ) ;
1617
1718 public DirectoryNode ( DirectoryNode parent , DirectoryInfo directoryInfo )
1819 : base ( directoryInfo . Name )
1920 {
20- Directory = directoryInfo ;
21+ directory = directoryInfo ;
2122
2223 ImageIndex = ServersTreeView . FolderCloseIcon ;
2324 SelectedImageIndex = ImageIndex ;
@@ -34,7 +35,7 @@ public DirectoryNode(DirectoryNode parent, DirectoryInfo directoryInfo)
3435 public DirectoryNode ( ServersTreeView treeView , DirectoryInfo directoryInfo , string name )
3536 : base ( name )
3637 {
37- Directory = directoryInfo ;
38+ directory = directoryInfo ;
3839
3940 timer . Tick += new EventHandler ( timer_tick ) ;
4041 timer . Interval = 100 ;
@@ -49,7 +50,8 @@ private void timer_tick(object sender, EventArgs e)
4950 {
5051 try
5152 {
52- Refresh ( ) ;
53+ if ( IsExpanded || Delete )
54+ Refresh ( ) ;
5355 }
5456 catch ( Exception ) { }
5557 }
@@ -60,49 +62,49 @@ public virtual void Refresh()
6062 {
6163 try
6264 {
63- if ( Directory . Exists )
64- new Computer ( ) . FileSystem . DeleteDirectory ( Directory . FullName , UIOption . AllDialogs , RecycleOption . SendToRecycleBin ) ;
65+ if ( directory . Exists )
66+ new Computer ( ) . FileSystem . DeleteDirectory ( directory . FullName , UIOption . AllDialogs , RecycleOption . SendToRecycleBin ) ;
6567 if ( this is ServerNode && ( ( ServerNode ) this ) . GetServerData ( ) . isImported )
6668 File . Delete ( ( ( ServerNode ) this ) . GetServerData ( ) . GetFile ( ) ) ;
6769 Destroy ( ) ;
6870 }
6971 catch ( OperationCanceledException ) { }
7072 return ;
7173 }
74+
7275 List < string > newNames = new List < string > ( ) ;
73- foreach ( DirectoryInfo directoryInfo in Directory . GetDirectories ( ) )
76+ foreach ( DirectoryInfo directoryInfo in directory . GetDirectories ( ) )
7477 newNames . Add ( directoryInfo . FullName ) ;
75- foreach ( FileInfo fileInfo in Directory . GetFiles ( ) )
78+ foreach ( FileInfo fileInfo in directory . GetFiles ( ) )
79+ {
80+ if ( IgnoredFiles . Contains ( fileInfo . Name ) ) continue ;
7681 newNames . Add ( fileInfo . FullName ) ;
82+ }
83+
7784 bool equals = true ;
7885 if ( newNames . Count != names . Count )
79- {
8086 equals = false ;
81- }
8287 else
83- {
8488 for ( int i = 0 ; i < newNames . Count ; i ++ )
85- {
8689 if ( newNames [ i ] != names [ i ] )
8790 {
8891 equals = false ;
8992 break ;
9093 }
91- }
92- }
94+
9395 if ( ! equals )
9496 {
95- names . Clear ( ) ;
97+ names = newNames ;
9698 Nodes . Clear ( ) ;
97- foreach ( DirectoryInfo directoryInfo in Directory . GetDirectories ( ) )
98- {
99- new DirectoryNode ( this , directoryInfo ) ;
100- names . Add ( directoryInfo . FullName ) ;
101- }
102- foreach ( FileInfo fileInfo in Directory . GetFiles ( ) )
99+
100+ if ( this is ServerNode ) new ConsoleNode ( ( ServerNode ) this ) ;
101+
102+ foreach ( string path in names )
103103 {
104- new FileNode ( this , fileInfo ) ;
105- names . Add ( fileInfo . FullName ) ;
104+ if ( Directory . Exists ( path ) )
105+ new DirectoryNode ( this , new DirectoryInfo ( path ) ) ;
106+ if ( File . Exists ( path ) )
107+ new FileNode ( this , new FileInfo ( path ) ) ;
106108 }
107109 }
108110 }
@@ -111,14 +113,14 @@ private void Virtualize()
111113 {
112114 int fileCount = 0 ;
113115
114- fileCount = Directory . GetFiles ( ) . Length ;
115- if ( ( fileCount + Directory . GetDirectories ( ) . Length ) > 0 )
116+ fileCount = directory . GetFiles ( ) . Length ;
117+ if ( ( fileCount + directory . GetDirectories ( ) . Length ) > 0 )
116118 new FakeChildNode ( this ) ;
117119 }
118120
119121 public DirectoryInfo GetDirectory ( )
120122 {
121- return Directory ;
123+ return directory ;
122124 }
123125
124126 public new ServersTreeView TreeView
0 commit comments