source: trunk/gli/src/org/greenstone/gatherer/file/WorkspaceTreeModel.java@ 7633

Last change on this file since 7633 was 7633, checked in by mdewsnip, 20 years ago

Some function and variable name changes, and added the web cache/downloaded files mapping back in.

  • Property svn:keywords set to Author Date Id Revision
File size: 4.0 KB
Line 
1package org.greenstone.gatherer.file;
2
3import javax.swing.tree.TreePath;
4import org.greenstone.gatherer.Gatherer;
5import org.greenstone.gatherer.collection.CollectionManager;
6import org.greenstone.gatherer.file.FileNode;
7import org.greenstone.gatherer.gui.MirrorPane;
8import org.greenstone.gatherer.util.SynchronizedTreeModelTools;
9
10
11public class WorkspaceTreeModel
12 extends FileSystemModel {
13
14 static private FileNode workspace_tree_root = null;
15 static private WorkspaceTreeModel workspace_tree_model = null;
16
17 static private FileNode greenstone_collections_node = null;
18 static private FileNode local_filespace_node = null;
19 static private FileNode downloaded_files_node = null;
20 static private FileNode[] folder_shortcuts = null;
21
22
23 public WorkspaceTreeModel(FileNode root)
24 {
25 super(root);
26 }
27
28
29 static public WorkspaceTreeModel getWorkspaceTreeModel()
30 {
31 // Create a root node to contain the various nodes in the workspace tree
32 workspace_tree_root = new FileNode("ABS_ROOT");
33 workspace_tree_model = new WorkspaceTreeModel(workspace_tree_root);
34
35 // Add the "Documents in Greenstone Collections" node
36 greenstone_collections_node = CollectionManager.getGreenstoneCollectionsMapping();
37 workspace_tree_root.insert(greenstone_collections_node);
38
39 // Add the "Local Filespace" node
40 local_filespace_node = FileSystem.getLocalFilespaceNode(workspace_tree_model);
41 workspace_tree_root.insert(local_filespace_node);
42
43 // Add the "Home Folder" node
44 workspace_tree_root.insert(FileSystem.getHomeFolderNode());
45
46 // Add the "Downloaded Files" node, if Mirroring is enabled
47 if (Gatherer.g_man.mirror_pane != null) {
48 downloaded_files_node = FileSystem.getDownloadedFilesNode();
49 workspace_tree_root.insert(downloaded_files_node);
50 }
51
52 // Add any folder shortcuts the user has created
53 refreshFolderShortcuts();
54
55 return workspace_tree_model;
56 }
57
58
59 static public void refreshGreenstoneCollectionsNode()
60 {
61 greenstone_collections_node.refresh();
62 }
63
64
65 static public void refreshFolderShortcuts()
66 {
67 // Check for new/deleted folder shortcuts
68 FileNode[] old_folder_shortcuts = folder_shortcuts;
69 folder_shortcuts = CollectionManager.getFolderShortcuts();
70
71 // Remove any deleted shortcuts from the tree
72 if (old_folder_shortcuts != null) {
73 for (int i = 0; i < old_folder_shortcuts.length; i++) {
74 if (!doesArrayContain(folder_shortcuts, old_folder_shortcuts[i])) {
75 Gatherer.println("Deleted shortcut: " + old_folder_shortcuts[i]);
76 SynchronizedTreeModelTools.removeNodeFromParent(workspace_tree_model,
77 old_folder_shortcuts[i]);
78 }
79 }
80 }
81
82 // Add any new shortcuts to the tree
83 if (folder_shortcuts != null) {
84 for (int i = 0; i < folder_shortcuts.length; i++) {
85 if (!doesArrayContain(old_folder_shortcuts, folder_shortcuts[i])) {
86 Gatherer.println("Added shortcut: " + folder_shortcuts[i]);
87 SynchronizedTreeModelTools.insertNodeInto(workspace_tree_model, workspace_tree_root, folder_shortcuts[i], false);
88 }
89 }
90 }
91 }
92
93
94 // -- This code is necessary to support the workspace tree file filter --
95 public void refresh(TreePath path)
96 {
97 // If we're not refreshing the whole tree just refresh a certain path
98 if (path != null) {
99 super.refresh(path);
100 return;
101 }
102
103 // Refresh each of the nodes in the workspace tree
104 for (int i = 0; i < workspace_tree_root.getChildCount(); i++) {
105 FileNode child_node = (FileNode) workspace_tree_root.getChildAt(i);
106 super.refresh(new TreePath(child_node.getPath()));
107 }
108
109 // Refresh the local filespace tree specially (it is not unmapped so not refreshed)
110 for (int i = 0; i < local_filespace_node.getChildCount(); i++) {
111 FileNode child_node = (FileNode) local_filespace_node.getChildAt(i);
112 super.refresh(new TreePath(child_node.getPath()));
113 }
114 }
115
116
117 static private boolean doesArrayContain(Object[] array, Object item)
118 {
119 if (array == null) {
120 return false;
121 }
122
123 for (int i = 0; i < array.length; i++) {
124 if (item.toString().equals(array[i].toString())) {
125 return true;
126 }
127 }
128
129 return false;
130 }
131}
Note: See TracBrowser for help on using the repository browser.