Revision c46c9e31 src/gr/grnet/pithos/web/client/mysharedtree/MysharedTreeViewModel.java
b/src/gr/grnet/pithos/web/client/mysharedtree/MysharedTreeViewModel.java | ||
---|---|---|
85 | 85 |
safeHtmlBuilder.appendHtmlConstant(html).appendHtmlConstant(" "); |
86 | 86 |
safeHtmlBuilder.append(Templates.INSTANCE.nameSpan(folder.getName())); |
87 | 87 |
} |
88 |
|
|
89 |
@Override |
|
90 |
public void onBrowserEvent(Context context, com.google.gwt.dom.client.Element parent, final Folder folder, com.google.gwt.dom.client.NativeEvent event, ValueUpdater<Folder> valueUpdater) { |
|
91 |
if (event.getType().equals(ContextMenuEvent.getType().getName())) { |
|
92 |
final int x = event.getClientX(); |
|
93 |
final int y = event.getClientY(); |
|
94 |
MysharedTreeViewModel.this.selectionModel.setSelected(folder, true); |
|
95 |
app.scheduleFolderHeadCommand(folder, new Command() { |
|
96 |
|
|
97 |
@Override |
|
98 |
public void execute() { |
|
99 |
FolderContextMenu menu = new FolderContextMenu(app, MysharedTreeView.images, app.getSelectedTree(), folder); |
|
100 |
menu.setPopupPosition(x, y); |
|
101 |
menu.show(); |
|
102 |
} |
|
103 |
}); |
|
104 |
} |
|
105 |
} |
|
106 | 88 |
}; |
107 | 89 |
|
108 | 90 |
protected ListDataProvider<Folder> firstLevelDataProvider = new ListDataProvider<Folder>(); |
109 |
|
|
110 |
private Map<Folder, ListDataProvider<Folder>> dataProviderMap = new HashMap<Folder, ListDataProvider<Folder>>(); |
|
111 |
|
|
91 |
|
|
112 | 92 |
protected SingleSelectionModel<Folder> selectionModel; |
113 | 93 |
|
114 | 94 |
public MysharedTreeViewModel(Pithos _app, SingleSelectionModel<Folder> selectionModel) { |
... | ... | |
122 | 102 |
fetchSharedContainers(null); |
123 | 103 |
return new DefaultNodeInfo<Folder>(firstLevelDataProvider, folderCell, selectionModel, null); |
124 | 104 |
} |
125 |
final Folder f = (Folder) value; |
|
126 |
if (dataProviderMap.get(f) == null) { |
|
127 |
dataProviderMap.put(f, new ListDataProvider<Folder>()); |
|
128 |
} |
|
129 |
final ListDataProvider<Folder> dataProvider = dataProviderMap.get(f); |
|
130 |
fetchFolder(f, dataProvider, false); |
|
131 |
return new DefaultNodeInfo<Folder>(dataProvider, folderCell, selectionModel, null); |
|
105 |
return null; |
|
132 | 106 |
} |
133 | 107 |
|
134 | 108 |
private void fetchSharedContainers(final Command callback) { |
... | ... | |
136 | 110 |
GetRequest<AccountResource> getAccount = new GetRequest<AccountResource>(AccountResource.class, app.getApiPath(), app.getUsername(), path) { |
137 | 111 |
@Override |
138 | 112 |
public void onSuccess(final AccountResource _result) { |
139 |
Iterator<Folder> iter = _result.getContainers().listIterator(); |
|
140 |
fetchFolder(iter, new Command() { |
|
141 |
|
|
142 |
@Override |
|
143 |
public void execute() { |
|
144 |
firstLevelDataProvider.getList().clear(); |
|
145 |
Folder t = null; |
|
146 |
for (Folder c : _result.getContainers()) { |
|
147 |
if (c.isHome()) |
|
148 |
firstLevelDataProvider.getList().add(0, c); //Pithos is always first |
|
149 |
else if (!c.isTrash()) |
|
150 |
firstLevelDataProvider.getList().add(c); |
|
151 |
} |
|
152 |
if (callback != null) |
|
153 |
callback.execute(); |
|
154 |
} |
|
155 |
}); |
|
113 |
firstLevelDataProvider.getList().clear(); |
|
114 |
Folder t = null; |
|
115 |
for (Folder c : _result.getContainers()) { |
|
116 |
if (c.isHome()) |
|
117 |
firstLevelDataProvider.getList().add(0, c); //Pithos is always first |
|
118 |
else if (!c.isTrash()) |
|
119 |
firstLevelDataProvider.getList().add(c); |
|
120 |
} |
|
121 |
if (callback != null) |
|
122 |
callback.execute(); |
|
156 | 123 |
} |
157 | 124 |
|
158 | 125 |
@Override |
... | ... | |
178 | 145 |
public boolean isLeaf(Object o) { |
179 | 146 |
if (o == null) |
180 | 147 |
return false; |
181 |
else if (o instanceof Folder) { |
|
182 |
Folder f = (Folder) o; |
|
183 |
return f.getSubfolders().isEmpty(); |
|
184 |
} |
|
185 |
else { |
|
186 |
return firstLevelDataProvider.getList().isEmpty(); |
|
187 |
} |
|
148 |
return true; |
|
188 | 149 |
} |
189 | 150 |
|
190 | 151 |
private native void log(String msg) /*-{ |
... | ... | |
229 | 190 |
} |
230 | 191 |
|
231 | 192 |
public void updateFolder(Folder folder, boolean showfiles) { |
232 |
if (dataProviderMap.get(folder) == null) { |
|
233 |
dataProviderMap.put(folder, new ListDataProvider<Folder>()); |
|
234 |
} |
|
235 |
final ListDataProvider<Folder> dataProvider = dataProviderMap.get(folder); |
|
236 |
fetchFolder(folder, dataProvider, showfiles); |
|
193 |
fetchFolder(folder,showfiles); |
|
237 | 194 |
} |
238 | 195 |
|
239 |
public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider, final boolean showfiles) {
|
|
240 |
String path = "/" + f.getContainer() + "?format=json&shared=&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix());
|
|
241 |
GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
|
|
196 |
public void fetchFolder(final Folder f, final boolean showfiles) { |
|
197 |
String path = "/" + f.getContainer() + "?format=json&shared=" + URL.encodeQueryString(f.getPrefix()); |
|
198 |
GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, null) {
|
|
242 | 199 |
@Override |
243 | 200 |
public void onSuccess(final Folder _result) { |
244 | 201 |
if (showfiles) |
245 | 202 |
app.showFiles(_result); |
246 |
Iterator<Folder> iter = new ArrayList<Folder>(_result.getSubfolders()).listIterator(); |
|
247 |
fetchFolder(iter, new Command() { |
|
248 |
@Override |
|
249 |
public void execute() { |
|
250 |
dataProvider.getList().clear(); |
|
251 |
dataProvider.getList().addAll(_result.getSubfolders()); |
|
252 |
app.getMySharedTreeView().updateChildren(f); |
|
253 |
} |
|
254 |
}); |
|
255 | 203 |
} |
256 | 204 |
|
257 | 205 |
@Override |
Also available in: Unified diff