X-Git-Url: https://code.grnet.gr/git/pithos/blobdiff_plain/4bf05cadf6d6717dd975d083d31bbeb7dd2d9946..7fac9334048078b87411068073cb2568a7cb6929:/src/gr/ebs/gss/client/FileList.java diff --git a/src/gr/ebs/gss/client/FileList.java b/src/gr/ebs/gss/client/FileList.java index db4a970..7cd33c1 100644 --- a/src/gr/ebs/gss/client/FileList.java +++ b/src/gr/ebs/gss/client/FileList.java @@ -44,6 +44,7 @@ import com.google.gwt.http.client.URL; 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; @@ -220,7 +221,7 @@ public class FileList extends Composite implements ClickHandler { 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 @@ -242,6 +243,8 @@ public class FileList extends Composite implements ClickHandler { table.setCellSpacing(0); table.setCellPadding(2); table.setWidth("100%"); + + // Hook up events. table.addClickHandler(new ClickHandler() { @Override @@ -251,6 +254,7 @@ public class FileList extends Composite implements ClickHandler { onRowClicked(cell.getRowIndex(), true); } }); + // Create the 'navigation' bar at the upper-right. HorizontalPanel innerNavBar = new HorizontalPanel(); innerNavBar.setStyleName("gss-ListNavBar"); @@ -303,7 +307,6 @@ public class FileList extends Composite implements ClickHandler { } } - @Override public void onBrowserEvent(Event event) { if (DOM.eventGetType(event) == Event.ONMOUSEDOWN && DOM.eventGetButton(event) == NativeEvent.BUTTON_RIGHT){ @@ -326,20 +329,20 @@ public class FileList extends Composite implements ClickHandler { 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(); @@ -392,17 +395,20 @@ public class FileList extends Composite implements ClickHandler { 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); @@ -410,6 +416,7 @@ public class FileList extends Composite implements ClickHandler { 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(); @@ -417,9 +424,10 @@ public class FileList extends Composite implements ClickHandler { 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) @@ -437,7 +445,6 @@ public class FileList extends Composite implements ClickHandler { @Override public void onClick(ClickEvent event) { sortFiles("name"); - } }); @@ -666,14 +673,17 @@ public class FileList extends Composite implements ClickHandler { //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() + " " + + "' title='" + file.getOwner() + " : " + file.getPath() + file.getName() + + "' rel='lytebox[mnf]' " + + "onclick='myLytebox.start(this, false, false); return false;'>" + "(view)" + ""); 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()); @@ -730,7 +740,7 @@ public class FileList extends Composite implements ClickHandler { */ 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()); @@ -808,69 +818,69 @@ public class FileList extends Composite implements ClickHandler { } 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 gf = new GetCommand(FolderResource.class, folderItem.getFolderResource().getUri(),folderItem.getFolderResource()) { + update(true); + GetCommand gf = new GetCommand(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++; + String[] filePaths = new String[folderItem.getFolderResource().getFilePaths().size()]; + int c=0; + for(String fpath : folderItem.getFolderResource().getFilePaths()){ + filePaths[c] = fpath + "?" + Math.random(); + c++; + } + MultipleHeadCommand getFiles = new MultipleHeadCommand(FileResource.class, filePaths, folderItem.getFolderResource().getFileCache()){ + + @Override + public void onComplete(){ + List result = getResult(); + //remove random from path + 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); } - MultipleHeadCommand getFiles = new MultipleHeadCommand(FileResource.class, filePaths, folderItem.getFolderResource().getFileCache()){ - - @Override - public void onComplete(){ - List result = getResult(); - //remove random from path - 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); - } - - @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 + folderItem.getFolderResource().setFiles(result); + folderItem.getFolderResource().setFilesExpanded(true); 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) { @@ -900,45 +910,16 @@ public class FileList extends Composite implements ClickHandler { @Override public void onComplete() { folderItem.setUserObject(getResult()); - updateFileCache(clearSelection, newFilename); - String[] filePaths = new String[folderItem.getSharedResource().getFilePaths().size()]; - int c=0; - for(String fpath : folderItem.getSharedResource().getFilePaths()){ - filePaths[c] = fpath + "?" + Math.random(); - c++; - } - MultipleHeadCommand getFiles = new MultipleHeadCommand(FileResource.class, filePaths, folderItem.getSharedResource().getFileCache()){ - - @Override - public void onComplete(){ - List result = getResult(); - //remove random from path - for(FileResource r : result){ + 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().setFiles(result); folderItem.getSharedResource().setFilesExpanded(true); updateFileCache(clearSelection, newFilename); - } - - @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); + } @Override @@ -954,45 +935,17 @@ public class FileList extends Composite implements ClickHandler { @Override public void onComplete() { folderItem.setUserObject(getResult()); - updateFileCache(clearSelection, newFilename); - String[] filePaths = new String[folderItem.getOtherUserResource().getFilePaths().size()]; - int c=0; - for(String fpath : folderItem.getOtherUserResource().getFilePaths()){ - filePaths[c] = fpath + "?" + Math.random(); - c++; - } - MultipleHeadCommand getFiles = new MultipleHeadCommand(FileResource.class, filePaths, folderItem.getOtherUserResource().getFileCache()){ - - @Override - public void onComplete(){ - List result = getResult(); - //remove random from path - for(FileResource r : result){ + //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().setFiles(result); folderItem.getOtherUserResource().setFilesExpanded(true); updateFileCache(clearSelection, newFilename); - } - - @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); + } @Override @@ -1007,6 +960,7 @@ public class FileList extends Composite implements ClickHandler { updateFileCache(clearSelection); } + private void updateFileCache(boolean clearSelection) { updateFileCache(clearSelection, null); } @@ -1014,7 +968,6 @@ public class FileList extends Composite implements ClickHandler { /** * 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 */ @@ -1133,11 +1086,16 @@ public class FileList extends Composite implements ClickHandler { 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; + } } /** @@ -1160,10 +1118,11 @@ public class FileList extends Composite implements ClickHandler { break; selectedRows.add(startIndex + i - 1); styleRow(i - 1, true); + makeRowDraggable(i); } GSS.get().setCurrentSelection(getSelectedFiles()); contextMenu.setFiles(getSelectedFiles()); - makeRowDraggable(i-1); + } @@ -1173,6 +1132,19 @@ public class FileList extends Composite implements ClickHandler { 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