import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.resources.client.ClientBundle.Source;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Event;
private HTML ownerLabel;
private HTML pathLabel;
-
+ private FileContextMenu menuShowing;
/**
* Construct the file list widget. This entails setting up the widget
* layout, fetching the number of files in the current folder from the
table.setCellSpacing(0);
table.setCellPadding(2);
table.setWidth("100%");
+
+ // Hook up events.
table.addClickHandler(new ClickHandler() {
@Override
onRowClicked(cell.getRowIndex(), true);
}
});
+
// Create the 'navigation' bar at the upper-right.
HorizontalPanel innerNavBar = new HorizontalPanel();
innerNavBar.setStyleName("gss-ListNavBar");
}
}
-
@Override
public void onBrowserEvent(Event event) {
if (DOM.eventGetType(event) == Event.ONMOUSEDOWN && DOM.eventGetButton(event) == NativeEvent.BUTTON_RIGHT){
if(!selectedRows.contains(ri-1))
onRowClicked(ri, false);
}
-
if (files == null || files.size() == 0) {
if (DOM.eventGetType(event) == Event.ONCONTEXTMENU && selectedRows.size() == 0) {
- FileContextMenu fm = new FileContextMenu(images, false, true);
- fm.onEmptyEvent(event);
+ menuShowing = new FileContextMenu(images, false, true);
+ menuShowing=menuShowing.onEmptyEvent(event);
}
return;
}
if (DOM.eventGetType(event) == Event.ONCONTEXTMENU && selectedRows.size() != 0) {
- FileContextMenu fm = new FileContextMenu(images, false, false);
- fm.onEvent(event);
+ GWT.log("*****GOING TO SHOW CONTEXT MENU ****", null);
+ menuShowing = new FileContextMenu(images, false, false);
+ menuShowing=menuShowing.onEvent(event);
} else if (DOM.eventGetType(event) == Event.ONCONTEXTMENU && selectedRows.size() == 0) {
- FileContextMenu fm = new FileContextMenu(images, false, true);
- fm.onEmptyEvent(event);
+ menuShowing = new FileContextMenu(images, false, true);
+ menuShowing=menuShowing.onEmptyEvent(event);
} else if (DOM.eventGetType(event) == Event.ONDBLCLICK)
if (getSelectedFiles().size() == 1) {
GSS app = GSS.get();
return;
if (clickShift) {
GWT.log("Row is: " + row + " fs: " + firstShift, null);
- if (firstShift == -1)
+ if (firstShift == -1){
firstShift = row;
+ makeRowDraggable(row);
+ }
else if (row > firstShift) {
clearSelectedRows();
for (int i = firstShift; i < row; i++) {
selectedRows.add(startIndex + i);
styleRow(i, true);
+ makeRowDraggable(i+1);
}
GSS.get().setCurrentSelection(getSelectedFiles());
contextMenu.setFiles(getSelectedFiles());
- makeRowDraggable(row);
+ //makeRowDraggable(row);
} else if (row != -1 && row == firstShift) {
selectedRows.add(row - 1);
styleRow(row, true);
GSS.get().setCurrentSelection(getSelectedFiles());
contextMenu.setFiles(getSelectedFiles());
makeRowDraggable(row);
+ makeRowDraggable(row+1);
} else if (row < firstShift) {
GWT.log("Row is:" + row + " fs:" + firstShift, null);
clearSelectedRows();
for (int i = firstShift; i >= row - 1; i--) {
selectedRows.add(startIndex + i);
styleRow(i, true);
+ makeRowDraggable(i+1);
}
GSS.get().setCurrentSelection(getSelectedFiles());
- makeRowDraggable(row);
+ //makeRowDraggable(row);
contextMenu.setFiles(getSelectedFiles());
}
} else if (row > 0)
@Override
public void onClick(ClickEvent event) {
sortFiles("name");
-
}
});
//add view image link for image files
String contentType = file.getContentType();
+ HTML nameHtml = null;
if (contentType.endsWith("png") || contentType.endsWith("gif") || contentType.endsWith("jpeg") )
- table.setHTML(i, 1, file.getName() + " <a href='" +
+ nameHtml = new HTML( file.getName() + " <a href='" +
GSS.get().getTopPanel().getFileMenu().getDownloadURL(file) +
- "' title='" + file.getName() + "' rel='lytebox[p]' " +
- "onclick='myLytebox.start(this, false, false);return false;'>" +
+ "' title='" + file.getOwner() + " : " + file.getPath() + file.getName() +
+ "' rel='lytebox[mnf]' " +
+ "onclick='myLytebox.start(this, false, false); return false;'>" +
"(view)" + "</a>");
else
- table.setHTML(i, 1, file.getName());
+ nameHtml=new HTML( file.getName());
+ table.setWidget(i, 1, nameHtml);
if(GSS.get().findUserFullName(file.getOwner()) == null){
GetUserCommand guc = new GetUserCommand(file.getOwner());
*/
private AbstractImagePrototype getFileIcon(FileResource file) {
String mimetype = file.getContentType();
- boolean shared=false;
+ boolean shared = false;
Folders folders = GSS.get().getFolders();
if(folders.getCurrent() != null && folders.isOthersSharedItem(folders.getCurrent())){
DnDTreeItem otherUser = (DnDTreeItem) folders.getUserOfSharedItem(folders.getCurrent());
if(uname==null)
uname = ((DnDTreeItem)folders.getSharesItem()).getOthersResource().getUsernameOfUri(otherUser.getOtherUserResource().getUri());
if(uname != null)
- shared = file.getShared();
+ shared = file.isShared();
}
}
else
- shared = file.getShared();
+ shared = file.isShared();
if (mimetype == null)
return shared ? AbstractImagePrototype.create(images.documentShared()) : AbstractImagePrototype.create(images.document());
mimetype = mimetype.toLowerCase();
}
public void updateFileCache(boolean updateSelectedFolder, final boolean clearSelection, final String newFilename) {
- if (!updateSelectedFolder && !GSS.get().getFolders().getTrashItem().equals(GSS.get().getFolders().getCurrent()))
+ if (!updateSelectedFolder && !GSS.get().getFolders().getCurrent().equals(GSS.get().getFolders().getTrashItem()))
updateFileCache(clearSelection);
else if (GSS.get().getFolders().getCurrent() != null) {
final DnDTreeItem folderItem = (DnDTreeItem) GSS.get().getFolders().getCurrent();
- if( folderItem.getFolderResource()!= null){
+ if (folderItem.getFolderResource() != null) {
if(GSS.get().getFolders().isFileItem(folderItem) || GSS.get().getFolders().isMySharedItem(folderItem) || GSS.get().getFolders().isOthersSharedItem(folderItem) ){
- update(true);
- GetCommand<FolderResource> gf = new GetCommand<FolderResource>(FolderResource.class, folderItem.getFolderResource().getUri(),folderItem.getFolderResource()) {
+ update(true);
+ GetCommand<FolderResource> gf = new GetCommand<FolderResource>(FolderResource.class, folderItem.getFolderResource().getUri(),folderItem.getFolderResource()) {
- @Override
- public void onComplete() {
- folderItem.setUserObject(getResult());
+ @Override
+ public void onComplete() {
+ folderItem.setUserObject(getResult());
if(GSS.get().getFolders().isFileItem(folderItem)){
-
+ String[] filePaths = new String[folderItem.getFolderResource().getFilePaths().size()];
+ int c=0;
+ for(String fpath : folderItem.getFolderResource().getFilePaths()){
+ filePaths[c] = fpath + "?" + Math.random();
+ c++;
+ }
+ MultipleHeadCommand<FileResource> getFiles = new MultipleHeadCommand<FileResource>(FileResource.class, filePaths, folderItem.getFolderResource().getFileCache()){
+
+ @Override
+ public void onComplete(){
+ List<FileResource> result = getResult();
//remove random from path
- for(FileResource r : folderItem.getFolderResource().getFiles()){
+ for(FileResource r : result){
String p = r.getUri();
int indexOfQuestionMark = p.lastIndexOf('?');
if(indexOfQuestionMark>0)
r.setUri(p.substring(0, indexOfQuestionMark));
GWT.log("FETCHED:"+r.getLastModifiedSince(), null);
}
+ folderItem.getFolderResource().setFiles(result);
folderItem.getFolderResource().setFilesExpanded(true);
updateFileCache(clearSelection, newFilename);
}
- else
- updateFileCache(clearSelection, newFilename);
- }
- @Override
- public void onError(Throwable t) {
- GWT.log("", t);
- GSS.get().displayError("Unable to fetch folder " + folderItem.getFolderResource().getName());
- }
- };
- DeferredCommand.addCommand(gf);
+ @Override
+ public void onError(String p, Throwable throwable) {
+ if(throwable instanceof RestException)
+ GSS.get().displayError("Unable to retrieve file details:"+((RestException)throwable).getHttpStatusText());
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ GWT.log("", t);
+ GSS.get().displayError("Unable to fetch files for folder " + folderItem.getFolderResource().getName());
+ }
+
+ };
+ DeferredCommand.addCommand(getFiles);
+ }
+ else
+ updateFileCache(clearSelection, newFilename);
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ GWT.log("", t);
+ GSS.get().displayError("Unable to fetch folder " + folderItem.getFolderResource().getName());
+ }
+ };
+ DeferredCommand.addCommand(gf);
}
}
else if (folderItem.getTrashResource() != null) {
public void onComplete() {
folderItem.setUserObject(getResult());
for(FileResource r : folderItem.getSharedResource().getFiles()){
- String p = r.getUri();
- int indexOfQuestionMark = p.lastIndexOf('?');
- if(indexOfQuestionMark>0)
- r.setUri(p.substring(0, indexOfQuestionMark));
- GWT.log("FETCHED:"+r.getLastModifiedSince(), null);
- }
- folderItem.getSharedResource().setFilesExpanded(true);
- updateFileCache(clearSelection, newFilename);
+ String p = r.getUri();
+ int indexOfQuestionMark = p.lastIndexOf('?');
+ if(indexOfQuestionMark>0)
+ r.setUri(p.substring(0, indexOfQuestionMark));
+ GWT.log("FETCHED:"+r.getLastModifiedSince(), null);
+ }
+ folderItem.getSharedResource().setFilesExpanded(true);
+ updateFileCache(clearSelection, newFilename);
}
folderItem.setUserObject(getResult());
//updateFileCache(clearSelection, newFilename);
for(FileResource r : folderItem.getOtherUserResource().getFiles()){
- String p = r.getUri();
- int indexOfQuestionMark = p.lastIndexOf('?');
- if(indexOfQuestionMark>0)
- r.setUri(p.substring(0, indexOfQuestionMark));
- GWT.log("FETCHED:"+r.getLastModifiedSince(), null);
- }
- folderItem.getOtherUserResource().setFilesExpanded(true);
- updateFileCache(clearSelection, newFilename);
+ String p = r.getUri();
+ int indexOfQuestionMark = p.lastIndexOf('?');
+ if(indexOfQuestionMark>0)
+ r.setUri(p.substring(0, indexOfQuestionMark));
+ GWT.log("FETCHED:"+r.getLastModifiedSince(), null);
+ }
+ folderItem.getOtherUserResource().setFilesExpanded(true);
+ updateFileCache(clearSelection, newFilename);
}
updateFileCache(clearSelection);
}
+
private void updateFileCache(boolean clearSelection) {
updateFileCache(clearSelection, null);
}
/**
* Update the file cache with data from the server.
*
- * @param userId the ID of the current user
* @param newFilename the new name of the previously selected file,
* if a rename operation has taken place
*/
for (int r : selectedRows) {
int row = r - startIndex;
styleRow(row, false);
+ makeRowNotDraggable(row+1);
}
selectedRows.clear();
Object sel = GSS.get().getCurrentSelection();
if (sel instanceof FileResource || sel instanceof List)
GSS.get().setCurrentSelection(null);
+ if(menuShowing != null && menuShowing.isShowing()){
+ menuShowing.hide();
+ menuShowing=null;
+ }
}
/**
break;
selectedRows.add(startIndex + i - 1);
styleRow(i - 1, true);
+ makeRowDraggable(i);
}
GSS.get().setCurrentSelection(getSelectedFiles());
contextMenu.setFiles(getSelectedFiles());
- makeRowDraggable(i-1);
+
}
table.setWidget(contextRow, 0, getFileIcon(files.get(contextRow - 1)).createImage());
contextMenu.setWidget(new HTML(getFileIcon(files.get(row - 1)).getHTML()));
table.setWidget(row, 0, contextMenu);
+ //for(int i=1;i<table.getCellCount(row);i++)
+ //GSS.get().getDragController().makeDraggable(table.getWidget(row, i));
+ table.setWidget(row, 1, new DnDSimpleFocusPanel(table.getWidget(row, 1)));
+ ((DnDSimpleFocusPanel)table.getWidget(row, 1)).setFiles(getSelectedFiles());
+ GSS.get().getDragController().makeDraggable(table.getWidget(row, 1));
+ }
+ private void makeRowNotDraggable(int row){
+ if(table.getWidget(row, 1) instanceof DnDSimpleFocusPanel){
+ ((DnDSimpleFocusPanel)table.getWidget(row, 1)).setFiles(null);
+ GSS.get().getDragController().makeNotDraggable(table.getWidget(row, 1));
+ table.setWidget(row, 1, new DnDSimpleFocusPanel(((DnDSimpleFocusPanel)table.getWidget(row, 1)).getWidget()));
+
+ }
}
private int getWidgetRow(Widget widget, Grid grid) {
return -1;
}
-
-
}