import gr.ebs.gss.client.dnd.DnDFocusPanel;\r
import gr.ebs.gss.client.dnd.DnDTreeItem;\r
import gr.ebs.gss.client.rest.GetCommand;\r
+import gr.ebs.gss.client.rest.MultipleHeadCommand;\r
import gr.ebs.gss.client.rest.RestCommand;\r
import gr.ebs.gss.client.rest.RestException;\r
import gr.ebs.gss.client.rest.resource.FileResource;\r
@Resource("gr/ebs/gss/resources/desc.png")\r
AbstractImagePrototype desc();\r
\r
+ @Resource("gr/ebs/gss/resources/mimetypes/document_shared.png")\r
+ AbstractImagePrototype documentShared();\r
+\r
@Resource("gr/ebs/gss/resources/mimetypes/kcmfontinst.png")\r
AbstractImagePrototype wordprocessor();\r
\r
\r
@Resource("gr/ebs/gss/resources/mimetypes/ark2.png")\r
AbstractImagePrototype zip();\r
+\r
+ @Resource("gr/ebs/gss/resources/mimetypes/kcmfontinst_shared.png")\r
+ AbstractImagePrototype wordprocessorShared();\r
+\r
+ @Resource("gr/ebs/gss/resources/mimetypes/log_shared.png")\r
+ AbstractImagePrototype spreadsheetShared();\r
+\r
+ @Resource("gr/ebs/gss/resources/mimetypes/kpresenter_kpr_shared.png")\r
+ AbstractImagePrototype presentationShared();\r
+\r
+ @Resource("gr/ebs/gss/resources/mimetypes/acroread_shared.png")\r
+ AbstractImagePrototype pdfShared();\r
+\r
+ @Resource("gr/ebs/gss/resources/mimetypes/image_shared.png")\r
+ AbstractImagePrototype imageShared();\r
+\r
+ @Resource("gr/ebs/gss/resources/mimetypes/video2_shared.png")\r
+ AbstractImagePrototype videoShared();\r
+\r
+ @Resource("gr/ebs/gss/resources/mimetypes/knotify_shared.png")\r
+ AbstractImagePrototype audioShared();\r
+\r
+ @Resource("gr/ebs/gss/resources/mimetypes/html_shared.png")\r
+ AbstractImagePrototype htmlShared();\r
+\r
+ @Resource("gr/ebs/gss/resources/mimetypes/txt_shared.png")\r
+ AbstractImagePrototype txtShared();\r
+\r
+ @Resource("gr/ebs/gss/resources/mimetypes/ark2_shared.png")\r
+ AbstractImagePrototype zipShared();\r
+\r
}\r
\r
/**\r
*/\r
private AbstractImagePrototype getFileIcon(FileResource file) {\r
String mimetype = file.getContentType();\r
- if (mimetype == null)\r
+ boolean shared = file.isShared();\r
+ if (mimetype == null){\r
+ if(shared)\r
+ return images.documentShared();\r
return images.document();\r
- else if ("application/pdf".equalsIgnoreCase(mimetype))\r
+ }\r
+ else if ("application/pdf".equalsIgnoreCase(mimetype)){\r
+ if(shared)\r
+ return images.pdfShared();\r
return images.pdf();\r
- else if ("application/vnd.ms-excel".equalsIgnoreCase(mimetype))\r
+ }\r
+ else if ("application/vnd.ms-excel".equalsIgnoreCase(mimetype)){\r
+ if(shared)\r
+ return images.spreadsheetShared();\r
return images.spreadsheet();\r
- else if ("application/msword".equalsIgnoreCase(mimetype))\r
+ }\r
+ else if ("application/msword".equalsIgnoreCase(mimetype)){\r
+ if(shared)\r
+ return images.wordprocessorShared();\r
return images.wordprocessor();\r
- else if ("application/vnd.ms-powerpoint".equalsIgnoreCase(mimetype))\r
+ }\r
+ else if ("application/vnd.ms-powerpoint".equalsIgnoreCase(mimetype)){\r
+ if(shared)\r
+ return images.presentationShared();\r
return images.presentation();\r
+ }\r
else if ("application/zip".equalsIgnoreCase(mimetype) ||\r
"application/gzip".equalsIgnoreCase(mimetype) ||\r
"application/x-gzip".equalsIgnoreCase(mimetype) ||\r
"application/x-tar".equalsIgnoreCase(mimetype) ||\r
- "application/x-gtar".equalsIgnoreCase(mimetype))\r
+ "application/x-gtar".equalsIgnoreCase(mimetype)){\r
+ if(shared)\r
+ return images.zipShared();\r
return images.zip();\r
- else if ("text/html".equalsIgnoreCase(mimetype))\r
+ }\r
+ else if ("text/html".equalsIgnoreCase(mimetype)){\r
+ if(shared)\r
+ return images.htmlShared();\r
return images.html();\r
- else if ("text/plain".equalsIgnoreCase(mimetype))\r
+ }\r
+ else if ("text/plain".equalsIgnoreCase(mimetype)){\r
+ if(shared)\r
+ return images.txtShared();\r
return images.txt();\r
- else if (mimetype.startsWith("image/"))\r
+ }\r
+ else if (mimetype.startsWith("image/")){\r
+ if(shared)\r
+ return images.imageShared();\r
return images.image();\r
- else if (mimetype.startsWith("video/"))\r
+ }\r
+ else if (mimetype.startsWith("video/")){\r
+ if(shared)\r
+ return images.videoShared();\r
return images.video();\r
- else if (mimetype.startsWith("audio/"))\r
+ }\r
+ else if (mimetype.startsWith("audio/")){\r
+ if(shared)\r
+ return images.audioShared();\r
return images.audio();\r
+ }\r
+ else if(shared)\r
+ return images.documentShared();\r
else\r
return images.document();\r
}\r
else if (GSS.get().getFolders().getCurrent() != null) {\r
final DnDTreeItem folderItem = (DnDTreeItem) GSS.get().getFolders().getCurrent();\r
if (folderItem.getFolderResource() != null) {\r
+ if(GSS.get().getFolders().isFileItem(folderItem)){\r
+ MultipleHeadCommand<FileResource> getFiles = new MultipleHeadCommand<FileResource>(FileResource.class, folderItem.getFolderResource().getFilePaths().toArray(new String[0])){\r
\r
- GetCommand<FolderResource> gf = new GetCommand<FolderResource>(FolderResource.class, folderItem.getFolderResource().getUri()) {\r
+ public void onComplete(){\r
+ folderItem.getFolderResource().setFiles(getResult());\r
+ updateFileCache(clearSelection);\r
+ }\r
\r
- @Override\r
- public void onComplete() {\r
- folderItem.setUserObject(getResult());\r
- updateFileCache(clearSelection);\r
- }\r
+ @Override\r
+ public void onError(String p, Throwable throwable) {\r
+ if(throwable instanceof RestException)\r
+ GSS.get().displayError("Unable to retrieve file details:"+((RestException)throwable).getHttpStatusText());\r
+ }\r
\r
- @Override\r
- public void onError(Throwable t) {\r
- GWT.log("", t);\r
- GSS.get().displayError("Unable to fetch folder " + folderItem.getFolderResource().getName());\r
- }\r
- };\r
- DeferredCommand.addCommand(gf);\r
+ @Override\r
+ public void onError(Throwable t) {\r
+ GWT.log("", t);\r
+ GSS.get().displayError("Unable to fetch files for folder " + folderItem.getFolderResource().getName());\r
+ }\r
+\r
+ };\r
+ DeferredCommand.addCommand(getFiles);\r
+ }\r
+ else{\r
+ GetCommand<FolderResource> gf = new GetCommand<FolderResource>(FolderResource.class, folderItem.getFolderResource().getUri()) {\r
+\r
+ @Override\r
+ public void onComplete() {\r
+ folderItem.setUserObject(getResult());\r
+ updateFileCache(clearSelection);\r
+ }\r
+\r
+ @Override\r
+ public void onError(Throwable t) {\r
+ GWT.log("", t);\r
+ GSS.get().displayError("Unable to fetch folder " + folderItem.getFolderResource().getName());\r
+ }\r
+ };\r
+ DeferredCommand.addCommand(gf);\r
+ }\r
} else if (folderItem.getTrashResource() != null) {\r
GetCommand<TrashResource> gt = new GetCommand<TrashResource>(TrashResource.class, folderItem.getTrashResource().getUri()) {\r
\r
tree.addItem(rootItem);
rootItem.doDroppable();
GSS.get().getFolders().select(rootItem);
- updateSubFoldersLazily(rootItem, rootResource.getFolders(), images.folderYellow());
+ updateSubFoldersLazily(rootItem, rootResource.getFolders(), images.folderYellow(), images.sharedFolder());
rootItem.setState(true);
}
public void onComplete() {
List<FolderResource> res = getResult();
folderItem.getFolderResource().setFolders(res);
- updateSubFoldersLazily(folderItem, res, images.folderYellow());
+ updateSubFoldersLazily(folderItem, res, images.folderYellow(), images.sharedFolder());
for (int i = 0; i < folderItem.getChildCount(); i++) {
DnDTreeItem anItem = (DnDTreeItem) folderItem.getChild(i);
- updateSubFoldersLazily(anItem, anItem.getFolderResource().getFolders(), images.folderYellow());
+ updateSubFoldersLazily(anItem, anItem.getFolderResource().getFolders(), images.folderYellow(), images.sharedFolder());
anItem.setState(false);
}
}
FolderResource rootResource = getResult();
if (!folderItem.equals(rootItem)) {
folderItem.undoDraggable();
- folderItem.updateWidget(imageItemHTML(images.folderYellow(), rootResource.getName()));
+ if(rootResource.isShared())
+ folderItem.updateWidget(imageItemHTML(images.sharedFolder(), rootResource.getName()));
+ else
+ folderItem.updateWidget(imageItemHTML(images.folderYellow(), rootResource.getName()));
folderItem.setUserObject(rootResource);
folderItem.doDraggable();
} else{
List<FolderResource> res = getResult();
for (FolderResource r : res)
if(r.isShared()){
- DnDTreeItem child = (DnDTreeItem) addImageItem(folderItem, r.getName(), images.folderYellow(), true);
+ DnDTreeItem child = (DnDTreeItem) addImageItem(folderItem, r.getName(), images.sharedFolder(), true);
child.setUserObject(r);
child.setState(false);
child.doDraggable();
public void onComplete() {
List<FolderResource> res = getResult();
for (FolderResource r : res) {
- DnDTreeItem child = (DnDTreeItem) addImageItem(folderItem, r.getName(), images.folderYellow(), true);
+ DnDTreeItem child = (DnDTreeItem) addImageItem(folderItem, r.getName(), images.sharedFolder(), true);
child.setUserObject(r);
child.setState(false);
child.doDraggable();
FolderResource rootResource = getResult();
if(rootResource.isShared()){
folderItem.undoDraggable();
- folderItem.updateWidget(imageItemHTML(images.folderYellow(), rootResource.getName()));
+ folderItem.updateWidget(imageItemHTML(images.sharedFolder(), rootResource.getName()));
folderItem.setUserObject(rootResource);
folderItem.doDraggable();
update(folderItem);
node.getWidget().removeStyleName("gss-SelectedRow");
if (node instanceof DnDTreeItem) {
((DnDTreeItem) node).undoDraggable();
- ((DnDTreeItem) node).updateWidget(imageItemHTML(images.folderYellow(), folder.getName()));
+ ((DnDTreeItem) node).updateWidget(imageItemHTML(images.sharedFolder(), folder.getName()));
((DnDTreeItem) node).doDraggable();
} else
- node.setWidget(imageItemHTML(images.folderYellow(), folder.getName()));
+ node.setWidget(imageItemHTML(images.sharedFolder(), folder.getName()));
node.setUserObject(folder);
}
}
}
}
+ public void updateSubFoldersLazily(DnDTreeItem folderItem, List<FolderResource> subfolders, AbstractImagePrototype image, AbstractImagePrototype sharedImage) {
+ for (int i = 0; i < folderItem.getChildCount(); i++) {
+ DnDTreeItem c = (DnDTreeItem) folderItem.getChild(i);
+ FolderResource f = (FolderResource) c.getUserObject();
+ if (!listContainsFolder(f, subfolders)) {
+ c.undoDraggable();
+ folderItem.removeItem(c);
+ }
+ }
+
+ LinkedList<DnDTreeItem> itemList = new LinkedList();
+ for (FolderResource subfolder : subfolders) {
+ DnDTreeItem item = folderItem.getChild(subfolder);
+ if (item == null){
+ if(subfolder.isShared())
+ item = (DnDTreeItem) addImageItem(folderItem, subfolder.getName(), sharedImage, true);
+ else
+ item = (DnDTreeItem) addImageItem(folderItem, subfolder.getName(), image, true);
+ } else if(subfolder.isShared())
+ item.updateWidget(imageItemHTML(sharedImage, subfolder.getName()));
+ else
+ item.updateWidget(imageItemHTML(image, subfolder.getName()));
+ item.setUserObject(subfolder);
+ itemList.add(item);
+ }
+ for (DnDTreeItem it : itemList)
+ it.remove();
+ for (DnDTreeItem it : itemList)
+ folderItem.addItem(it);
+ for (int i = 0; i < folderItem.getChildCount(); i++) {
+ DnDTreeItem c = (DnDTreeItem) folderItem.getChild(i);
+ c.doDraggable();
+ }
+ }
+
private boolean listContainsFolder(FolderResource folder, List<FolderResource> subfolders) {
for (FolderResource f : subfolders)
if (f.getUri().equals(folder.getUri()))