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

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

Removed all occurrences of classes explicitly importing other classes in the same package.

  • Property svn:keywords set to Author Date Id Revision
File size: 4.1 KB
Line 
1package org.greenstone.gatherer.file;
2
3import javax.swing.tree.TreePath;
4import org.greenstone.gatherer.DebugStream;
5import org.greenstone.gatherer.Gatherer;
6import org.greenstone.gatherer.collection.CollectionManager;
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 refreshDownloadedFilesNode()
66 {
67 downloaded_files_node.refresh();
68 }
69
70
71 static public void refreshFolderShortcuts()
72 {
73 // Check for new/deleted folder shortcuts
74 FileNode[] old_folder_shortcuts = folder_shortcuts;
75 folder_shortcuts = CollectionManager.getFolderShortcuts();
76
77 // Remove any deleted shortcuts from the tree
78 if (old_folder_shortcuts != null) {
79 for (int i = 0; i < old_folder_shortcuts.length; i++) {
80 if (!doesArrayContain(folder_shortcuts, old_folder_shortcuts[i])) {
81 DebugStream.println("Deleted shortcut: " + old_folder_shortcuts[i]);
82 SynchronizedTreeModelTools.removeNodeFromParent(workspace_tree_model,
83 old_folder_shortcuts[i]);
84 }
85 }
86 }
87
88 // Add any new shortcuts to the tree
89 if (folder_shortcuts != null) {
90 for (int i = 0; i < folder_shortcuts.length; i++) {
91 if (!doesArrayContain(old_folder_shortcuts, folder_shortcuts[i])) {
92 DebugStream.println("Added shortcut: " + folder_shortcuts[i]);
93 SynchronizedTreeModelTools.insertNodeInto(workspace_tree_model, workspace_tree_root, folder_shortcuts[i], false);
94 }
95 }
96 }
97 }
98
99
100 // -- This code is necessary to support the workspace tree file filter --
101 public void refresh(TreePath path)
102 {
103 // If we're not refreshing the whole tree just refresh a certain path
104 if (path != null) {
105 super.refresh(path);
106 return;
107 }
108
109 // Refresh each of the nodes in the workspace tree
110 for (int i = 0; i < workspace_tree_root.getChildCount(); i++) {
111 FileNode child_node = (FileNode) workspace_tree_root.getChildAt(i);
112 super.refresh(new TreePath(child_node.getPath()));
113 }
114
115 // Refresh the local filespace tree specially (it is not unmapped so not refreshed)
116 for (int i = 0; i < local_filespace_node.getChildCount(); i++) {
117 FileNode child_node = (FileNode) local_filespace_node.getChildAt(i);
118 super.refresh(new TreePath(child_node.getPath()));
119 }
120 }
121
122
123 static private boolean doesArrayContain(Object[] array, Object item)
124 {
125 if (array == null) {
126 return false;
127 }
128
129 for (int i = 0; i < array.length; i++) {
130 if (item.toString().equals(array[i].toString())) {
131 return true;
132 }
133 }
134
135 return false;
136 }
137}
Note: See TracBrowser for help on using the repository browser.