~ubuntu-branches/ubuntu/oneiric/monodevelop/oneiric

« back to all changes in this revision

Viewing changes to src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs

  • Committer: Bazaar Package Importer
  • Author(s): Jo Shields
  • Date: 2011-06-27 17:03:13 UTC
  • mto: (1.8.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 54.
  • Revision ID: james.westby@ubuntu.com-20110627170313-6cvz3s19x6e9hqe9
ImportĀ upstreamĀ versionĀ 2.5.92+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
163
163
                        return it.ParentFolder.IsRoot ? (object) it.ParentSolution : (object) it.ParentFolder;
164
164
                }
165
165
                
166
 
                void OnAddFile (object sender, ProjectFileEventArgs e)
 
166
                void OnAddFile (object sender, ProjectFileEventArgs args)
167
167
                {
168
 
                        AddFile (e.ProjectFile, e.Project);
 
168
                        if (args.CommonProject != null && args.Count > 2 && args.SingleVirtualDirectory) {
 
169
                                ITreeBuilder tb = GetFolder (args.CommonProject, args.CommonVirtualRootDirectory);
 
170
                                if (tb != null)
 
171
                                        tb.UpdateChildren ();
 
172
                        }
 
173
                        else {
 
174
                                foreach (ProjectFileEventInfo e in args)
 
175
                                        AddFile (e.ProjectFile, e.Project);
 
176
                        }
169
177
                }
170
178
                
171
 
                void OnRemoveFile (object sender, ProjectFileEventArgs e)
 
179
                void OnRemoveFile (object sender, ProjectFileEventArgs args)
172
180
                {
173
 
                        RemoveFile (e.ProjectFile, e.Project);
 
181
                        foreach (ProjectFileEventInfo e in args)
 
182
                                RemoveFile (e.ProjectFile, e.Project);
174
183
                }
175
184
                
176
185
                void AddFile (ProjectFile file, Project project)
187
196
                                return;
188
197
                        }
189
198
                        
190
 
                        string filePath = file.IsLink
191
 
                                ? project.BaseDirectory.Combine (file.ProjectVirtualPath).ParentDirectory
192
 
                                : file.FilePath.ParentDirectory;
193
 
                                
194
199
                        object data;
195
200
                        if (file.Subtype == Subtype.Directory)
196
201
                                data = new ProjectFolder (file.Name, project);
201
206
                        if (tb.MoveToObject (data))
202
207
                                return;
203
208
                        
 
209
                        string filePath = file.IsLink
 
210
                                ? project.BaseDirectory.Combine (file.ProjectVirtualPath).ParentDirectory
 
211
                                : file.FilePath.ParentDirectory;
 
212
                        
 
213
                        tb = GetFolder (project, filePath);
 
214
                        if (tb != null)
 
215
                                tb.AddChild (data);
 
216
                }
 
217
                
 
218
                ITreeBuilder GetFolder (Project project, FilePath filePath)
 
219
                {
 
220
                        ITreeBuilder tb = Context.GetTreeBuilder ();
204
221
                        if (filePath != project.BaseDirectory) {
205
 
                                if (tb.MoveToObject (new ProjectFolder (filePath, project)))
206
 
                                        tb.AddChild (data);
 
222
                                if (tb.MoveToObject (new ProjectFolder (filePath, project))) {
 
223
                                        return tb;
 
224
                                }
207
225
                                else {
208
226
                                        // Make sure there is a path to that folder
209
227
                                        tb = FindParentFolderNode (filePath, project);
210
 
                                        if (tb != null)
 
228
                                        if (tb != null) {
211
229
                                                tb.UpdateChildren ();
 
230
                                                return null;
 
231
                                        }
212
232
                                }
213
233
                        } else {
214
234
                                if (tb.MoveToObject (project))
215
 
                                        tb.AddChild (data);
216
 
                                tb.UpdateChildren ();
 
235
                                        return tb;
217
236
                        }
 
237
                        return null;
218
238
                }
219
239
                
220
240
                ITreeBuilder FindParentFolderNode (string path, Project project)
267
287
                        }
268
288
                }
269
289
                
270
 
                void OnRenameFile (object sender, ProjectFileRenamedEventArgs e)
271
 
                {
272
 
                        ITreeBuilder tb = Context.GetTreeBuilder (e.ProjectFile);
273
 
                        if (tb != null) tb.Update ();
274
 
                }
275
 
                
276
 
                void OnProjectModified (object sender, SolutionItemModifiedEventArgs e)
277
 
                {
278
 
                        if (e.Hint == "References" || e.Hint == "Files")
279
 
                                return;
280
 
                        ITreeBuilder tb = Context.GetTreeBuilder (e.SolutionItem);
281
 
                        if (tb != null) {
282
 
                                if (e.Hint == "BaseDirectory" || e.Hint == "TargetFramework")
283
 
                                        tb.UpdateAll ();
284
 
                                else
285
 
                                        tb.Update ();
286
 
                        }
287
 
                }
288
 
                
289
 
                void OnFilePropertyChanged (object sender, ProjectFileEventArgs args)
290
 
                {
291
 
                        ITreeBuilder tb = Context.GetTreeBuilder (args.Project);
292
 
                        if (tb != null) tb.UpdateAll ();
 
290
                void OnRenameFile (object sender, ProjectFileRenamedEventArgs args)
 
291
                {
 
292
                        foreach (ProjectFileEventInfo e in args) {
 
293
                                ITreeBuilder tb = Context.GetTreeBuilder (e.ProjectFile);
 
294
                                if (tb != null) tb.Update ();
 
295
                        }
 
296
                }
 
297
                
 
298
                void OnProjectModified (object sender, SolutionItemModifiedEventArgs args)
 
299
                {
 
300
                        foreach (SolutionItemModifiedEventInfo e in args) {
 
301
                                if (e.Hint == "References" || e.Hint == "Files")
 
302
                                        continue;
 
303
                                ITreeBuilder tb = Context.GetTreeBuilder (e.SolutionItem);
 
304
                                if (tb != null) {
 
305
                                        if (e.Hint == "BaseDirectory" || e.Hint == "TargetFramework")
 
306
                                                tb.UpdateAll ();
 
307
                                        else
 
308
                                                tb.Update ();
 
309
                                }
 
310
                        }
 
311
                }
 
312
                
 
313
                void OnFilePropertyChanged (object sender, ProjectFileEventArgs e)
 
314
                {
 
315
                        foreach (ProjectFileEventInfo args in e) {
 
316
                                ITreeBuilder tb = Context.GetTreeBuilder (args.Project);
 
317
                                if (tb != null) tb.UpdateAll ();
 
318
                        }
293
319
                }
294
320
                
295
321
                void IdeAppWorkspaceActiveConfigurationChanged (object sender, EventArgs e)