Revision 5d18aa82

b/src/gr/grnet/pithos/web/client/FileContextMenu.java
204 204
        	}
205 205
        }
206 206
        boolean isFolderTreeSelected = selectedTree.equals(app.getFolderTreeView());
207
        boolean isMysharedSelected = selectedTree.equals(app.getMySharedTreeView());
207 208
        if (selectedFolder != null) {
208 209
		    if (!selectedFolder.isInTrash()) {
209
		        if (canWrite && app.getClipboard().hasFiles()) {
210
		        if (canWrite && app.getClipboard().hasFiles() && !isMysharedSelected) {
210 211
	        		pasteItem = new MenuItem("<span>" + AbstractImagePrototype.create(images.paste()).getHTML() + "&nbsp;Paste</span>", true, new PasteCommand(app, this, selectedFolder));
211 212
	        		contextMenu.addItem(pasteItem);
212 213
		        }
213 214
		
214
		        if (canWrite) {
215
		        if (canWrite && !isMysharedSelected) {
215 216
			        MenuItem upload = new MenuItem("<span>" + AbstractImagePrototype.create(images.fileUpdate()).getHTML() + "&nbsp;Upload</span>", true, new UploadFileCommand(app, this, selectedFolder));
216 217
			        contextMenu.addItem(upload);
217 218
		        }
......
231 232
				contextMenu.addItem(restore);
232 233
		    }
233 234
        }
234
		copyItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + "&nbsp;Copy</span>", true, new CopyCommand(app, this, selectedFiles));
235
        contextMenu.addItem(copyItem);
235
        if (!isMysharedSelected) {
236
			copyItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + "&nbsp;Copy</span>", true, new CopyCommand(app, this, selectedFiles));
237
	        contextMenu.addItem(copyItem);
238
        }
236 239

  
237 240
        if (isFolderTreeSelected) {
238 241
			deleteItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + "&nbsp;Delete</span>", true, new DeleteCommand(app, this, selectedFiles, MessagePanel.images));
......
240 243
        }
241 244

  
242 245
        if (selectedFolder != null && !selectedFolder.isInTrash()) {
243
        	if (isFolderTreeSelected && selectedFiles.size() == 1) {
246
        	if ((isFolderTreeSelected || isMysharedSelected) && selectedFiles.size() == 1) {
244 247
        		contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + "&nbsp;Properties</span>", true, new PropertiesCommand(app, this, selectedFiles, PropertiesCommand.PROPERTIES)));
245 248
        		contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.sharing()).getHTML() + "&nbsp;Sharing</span>", true, new PropertiesCommand(app, this, selectedFiles, PropertiesCommand.PERMISSIONS)));
246 249
        		contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.internet()).getHTML() + "&nbsp;Publish</span>", true, new PropertiesCommand(app, this, selectedFiles, PropertiesCommand.PUBLISH)));
247
        		contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.versions()).getHTML() + "&nbsp;Versions</span>", true, new PropertiesCommand(app, this, selectedFiles, PropertiesCommand.VERSIONS)));
250
        		if (!isMysharedSelected)
251
        			contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.versions()).getHTML() + "&nbsp;Versions</span>", true, new PropertiesCommand(app, this, selectedFiles, PropertiesCommand.VERSIONS)));
248 252
        	}
249 253

  
250 254
        }
b/src/gr/grnet/pithos/web/client/FileList.java
288 288
				SafeHtmlBuilder sb = new SafeHtmlBuilder();
289 289
				if (!app.getSelectedTree().equals(app.mysharedTreeView)) {
290 290
					sb.append(Templates.INSTANCE.filenameSpan(object.getName()));
291
					if (object.getContentType() != null && (object.getContentType().endsWith("png") || object.getContentType().endsWith("gif") || object.getContentType().endsWith("jpeg"))) {
292
	        			sb.appendHtmlConstant("&nbsp;")
293
	                      .append(Templates.INSTANCE.viewLink(app.getApiPath() + object.getOwner() + object.getUri(), object.getName()));
294
					}
295 291
				}
296 292
				else {
297 293
					String name = object.getPath();
......
300 296
					}
301 297
					sb.append(Templates.INSTANCE.filenameSpan(name));
302 298
				}
299
				if (object.getContentType() != null && (object.getContentType().endsWith("png") || object.getContentType().endsWith("gif") || object.getContentType().endsWith("jpeg"))) {
300
        			sb.appendHtmlConstant("&nbsp;")
301
                      .append(Templates.INSTANCE.viewLink(app.getApiPath() + object.getOwner() + object.getUri(), object.getName()));
302
				}
303 303
				
304 304
				return sb.toSafeHtml();
305 305
			}
......
373 373
            @Override
374 374
            public void onContextMenu(final ContextMenuEvent event) {
375 375
            	final TreeView tree = app.getSelectedTree();
376
            	if (tree != null && (tree.equals(app.getFolderTreeView()) || tree.equals(app.getOtherSharedTreeView()))) {
376
            	if (tree != null) {
377 377
	                final int x = event.getNativeEvent().getClientX();
378 378
	                final int y = event.getNativeEvent().getClientY();
379 379
	                final Folder selectedFolder = app.getSelection();
b/src/gr/grnet/pithos/web/client/FilePermissionsDialog.java
259 259
						@Override
260 260
						public void onSuccess(File _result) {
261 261
							showLinkIfShared();
262
		                    app.updateFolder(file.getParent(), true, new Command() {
263
								
264
								@Override
265
								public void execute() {
266
									app.updateMySharedRoot();
267
								}
268
							}, true);
262
							if (!app.isMySharedSelected())
263
			                    app.updateFolder(file.getParent(), true, new Command() {
264
									
265
									@Override
266
									public void execute() {
267
										app.updateMySharedRoot();
268
									}
269
								}, true);
270
							else
271
								app.updateSharedFolder(file.getParent(), true);
269 272
						}
270 273

  
271 274
						@Override
......
323 326
            updateFile.setHeader("X-Object-Sharing", permHeader);
324 327
            Scheduler.get().scheduleDeferred(updateFile);
325 328
        }
326
        else
329
        else if (!app.isMySharedSelected())
327 330
            app.updateFolder(file.getParent(), true, new Command() {
328 331
				
329 332
				@Override
......
332 335
						app.updateMySharedRoot();
333 336
				}
334 337
			}, true);
338
        else
339
        	app.updateSharedFolder(file.getParent(), true);
335 340
    }
336 341

  
337 342
	@Override
b/src/gr/grnet/pithos/web/client/FilePropertiesDialog.java
311 311
            PostRequest updateFile = new PostRequest(api, owner, path) {
312 312
                @Override
313 313
                public void onSuccess(Resource result) {
314
                    app.updateFolder(file.getParent(), true, new Command() {
315
						
316
						@Override
317
						public void execute() {
318
							app.updateMySharedRoot();
319
						}
320
					}, true);
314
                	if (!app.isMySharedSelected())
315
	                    app.updateFolder(file.getParent(), true, new Command() {
316
							
317
							@Override
318
							public void execute() {
319
								app.updateMySharedRoot();
320
							}
321
						}, true);
322
                	else
323
                		app.updateSharedFolder(file.getParent(), true);
321 324
                }
322 325

  
323 326
                @Override
......
343 346
            
344 347
            Scheduler.get().scheduleDeferred(updateFile);
345 348
        }
346
        else
349
        else if (!app.isMySharedSelected())
347 350
            app.updateFolder(file.getParent(), true, new Command() {
348 351
				
349 352
				@Override
......
352 355
						app.updateMySharedRoot();
353 356
				}
354 357
			}, true);
358
        else
359
        	app.updateSharedFolder(file.getParent(), true);
355 360
    }
356 361
}
b/src/gr/grnet/pithos/web/client/FilePublishDialog.java
244 244
						@Override
245 245
						public void onSuccess(File _result) {
246 246
							showLinkIfPublished();
247
		                    app.updateFolder(file.getParent(), true, new Command() {
248
								
249
								@Override
250
								public void execute() {
251
									app.updateMySharedRoot();
252
								}
253
							}, true);
247
							if (!app.isMySharedSelected())
248
			                    app.updateFolder(file.getParent(), true, new Command() {
249
									
250
									@Override
251
									public void execute() {
252
										app.updateMySharedRoot();
253
									}
254
								}, true);
255
							else
256
								app.updateSharedFolder(file.getParent(), true);
254 257
						}
255 258

  
256 259
						@Override
......
285 288
            updateFile.setHeader("X-Object-Public", published.toString());
286 289
            Scheduler.get().scheduleDeferred(updateFile);
287 290
        }
288
        else
291
        else if (!app.isMySharedSelected())
289 292
            app.updateFolder(file.getParent(), true, new Command() {
290 293
				
291 294
				@Override
......
294 297
						app.updateMySharedRoot();
295 298
				}
296 299
			}, true);
300
        else
301
        	app.updateSharedFolder(file.getParent(), true);
297 302
    }
298 303

  
299 304
	@Override
b/src/gr/grnet/pithos/web/client/FolderContextMenu.java
87 87
    	boolean canWrite = folder.getOwner().equals(app.getUsername()) || (permissions!= null && permissions[1] != null && permissions[1]);
88 88
    	boolean isFolderTreeSelected = selectedTree.equals(app.getFolderTreeView());
89 89
    	boolean otherSharedTreeSelected = selectedTree.equals(app.getOtherSharedTreeView());
90
    	boolean mysharedTreeSelected = selectedTree.equals(app.getMySharedTreeView());
90 91
    	
91
    	if (isFolderTreeSelected || otherSharedTreeSelected) {
92
	    	MenuItem refresh = new MenuItem("<span id = 'folderContextMenu.refresh'>" + AbstractImagePrototype.create(images.refresh()).getHTML() + "&nbsp;Refresh</span>", true, new RefreshCommand(app, this, folder));
93
	        contextMenu.addItem(refresh);
94
    	}
92
    	MenuItem refresh = new MenuItem("<span id = 'folderContextMenu.refresh'>" + AbstractImagePrototype.create(images.refresh()).getHTML() + "&nbsp;Refresh</span>", true, new RefreshCommand(app, this, folder));
93
        contextMenu.addItem(refresh);
95 94

  
96 95
        if (!folder.isInTrash()) {
97 96
        	if (canWrite) {
98
		        MenuItem newFolder = new MenuItem("<span id = 'folderContextMenu.newFolder'>" + AbstractImagePrototype.create(newImages.folderNew()).getHTML() + "&nbsp;New Folder</span>", true, new NewFolderCommand(app, this, folder));
99
		        contextMenu.addItem(newFolder);
97
        		if (!mysharedTreeSelected) {
98
        			MenuItem newFolder = new MenuItem("<span id = 'folderContextMenu.newFolder'>" + AbstractImagePrototype.create(newImages.folderNew()).getHTML() + "&nbsp;New Folder</span>", true, new NewFolderCommand(app, this, folder));
99
        			contextMenu.addItem(newFolder);
100
        		}
100 101

  
101 102
		        if (isFolderTreeSelected && !folder.isContainer()) {
102 103
		            MenuItem cut = new MenuItem("<span id = 'folderContextMenu.cut'>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + "&nbsp;Cut</span>", true, new CutCommand(app, this, folder));
......
110 111
        	}
111 112
	
112 113
        	if (canWrite) {
113
		        if (!app.getClipboard().isEmpty()) {
114
		        if (!app.getClipboard().isEmpty() && !mysharedTreeSelected) {
114 115
		        	Object item = app.getClipboard().getItem();
115 116
		        	boolean showPaste = true;
116 117
		        	if (item instanceof Folder) {
b/src/gr/grnet/pithos/web/client/Pithos.java
437 437
            }
438 438
        });
439 439
        
440
        Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
441
			
442
			@Override
443
			public boolean execute() {
444
				Folder f = getSelection();
445
				if (f != null) {
446
					if (getSelectedTree().equals(folderTreeView))
447
						updateFolder(f, true, null, false);
448
					else if (getSelectedTree().equals(mysharedTreeView))
449
						updateSharedFolder(f, true);
450
				}
451
				return true;
452
			}
453
		}, 3000);
440
//        Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
441
//			
442
//			@Override
443
//			public boolean execute() {
444
//				Folder f = getSelection();
445
//				if (f != null) {
446
//					if (getSelectedTree().equals(folderTreeView))
447
//						updateFolder(f, true, null, false);
448
//					else if (getSelectedTree().equals(mysharedTreeView))
449
//						updateSharedFolder(f, true);
450
//				}
451
//				return true;
452
//			}
453
//		}, 3000);
454 454
    }
455 455

  
456 456
    public void applyPermissions(Folder f) {
......
1274 1274
		headFile.setHeader("X-Auth-Token", getToken());
1275 1275
		Scheduler.get().scheduleDeferred(headFile);
1276 1276
	}
1277

  
1278
	public boolean isMySharedSelected() {
1279
		return getSelectedTree().equals(getMySharedTreeView());
1280
	}
1277 1281
}
b/src/gr/grnet/pithos/web/client/Toolbar.java
121 121
		    	boolean otherSharedTreeSelected = app.getSelectedTree().equals(app.getOtherSharedTreeView());
122 122
		    	Folder folder = app.getSelectedTree().getSelection();
123 123
		    	
124
		    	if (folder != null && (isFolderTreeSelected || otherSharedTreeSelected))
125
		    		app.updateFolder(folder, true, new Command() {
124
		    	if (folder != null) {
125
		    		if (!app.isMySharedSelected()) {
126
			    		app.updateFolder(folder, true, new Command() {
127
			    			
128
			    			@Override
129
			    			public void execute() {
130
			    				app.updateStatistics();
131
			    			}
132
			    		}, true);
133
		    		}
134
		    		else
135
		    			app.updateSharedFolder(folder, true);
126 136
		    			
127
		    			@Override
128
		    			public void execute() {
129
		    				app.updateStatistics();
130
		    			}
131
		    		}, true);
137
		    	}
132 138
			}
133
		});
139
        });
134 140
        toolbar.add(refreshButton);
135 141

  
136 142
        toolsButton = new Anchor("<span class='ico'></span><span class='title'>More...</span>", true);
......
166 172
				    	boolean isFolderTreeSelected = app.getSelectedTree().equals(app.getFolderTreeView());
167 173
				    	boolean otherSharedTreeSelected = app.getSelectedTree().equals(app.getOtherSharedTreeView());
168 174
				    	
169
				    	if (isFolderTreeSelected || otherSharedTreeSelected)
170
				    		refreshButton.setVisible(true);
171
				    	else
172
				    		refreshButton.setVisible(true);
175
			    		refreshButton.setVisible(true);
173 176
				    	
174 177
				    	if (!folder.isInTrash() && canWrite) {
175 178
				    		if (isFolderTreeSelected || otherSharedTreeSelected)
b/src/gr/grnet/pithos/web/client/ToolsMenu.java
100 100
	        Boolean[] permissions = folder.getPermissions().get(app.getUsername());
101 101
	    	boolean canWrite = folder.getOwner().equals(app.getUsername()) || (permissions!= null && permissions[1] != null && permissions[1]);
102 102
	    	boolean isFolderTreeSelected = selectedTree.equals(app.getFolderTreeView());
103
	    	boolean isMysharedTreeSelected = app.isMySharedSelected();
103 104
	    	
104 105
	        if (!folder.isInTrash()) {
105 106
	        	if (canWrite) {
......
119 120
			        }
120 121
	        	}
121 122
	
122
        		MenuItem copy = null;
123
	        	if (files != null && !files.isEmpty())
124
	        		copy = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + "&nbsp;Copy files</span>", true, new CopyCommand(app, this, files));
125
	        	else if (isFolderTreeSelected && !folder.isContainer())
126
	        		copy = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + "&nbsp;Copy folder</span>", true, new CopyCommand(app, this, folder));
127
	        	if (copy != null) {
128
	        		contextMenu.addItem(copy);
129
		        	empty = false;
123
	        	if (!isMysharedTreeSelected) {
124
	        		MenuItem copy = null;
125
		        	if (files != null && !files.isEmpty())
126
		        		copy = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + "&nbsp;Copy files</span>", true, new CopyCommand(app, this, files));
127
		        	else if (isFolderTreeSelected && !folder.isContainer())
128
		        		copy = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + "&nbsp;Copy folder</span>", true, new CopyCommand(app, this, folder));
129
		        	if (copy != null) {
130
		        		contextMenu.addItem(copy);
131
			        	empty = false;
132
		        	}
130 133
	        	}
131 134
		
132 135
	        	if (canWrite) {
133
			        if (!app.getClipboard().isEmpty()) {
136
			        if (!isMysharedTreeSelected && !app.getClipboard().isEmpty()) {
134 137
			        	Object item = app.getClipboard().getItem();
135 138
			        	boolean showPaste = false;
136 139
			        	if (item instanceof List) {
......
174 177
				        	contextMenu.addItem(delete);
175 178
				        	empty = false;
176 179
				        }
177
				
180
				    }
181
				    if (isFolderTreeSelected || isMysharedTreeSelected) {
178 182
				        if (files != null && files.size() == 1) {
179 183
				        	contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + "&nbsp;File properties</span>", true, new PropertiesCommand(app, this, files, PropertiesCommand.PROPERTIES)));
180 184
				        	contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.group()).getHTML() + "&nbsp;Sharing</span>", true, new PropertiesCommand(app, this, files, PropertiesCommand.PERMISSIONS)));
181 185
				        	contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.internet()).getHTML() + "&nbsp;Publish</span>", true, new PropertiesCommand(app, this, files, PropertiesCommand.PUBLISH)));
182
				        	contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.versions()).getHTML() + "&nbsp;Versions</span>", true, new PropertiesCommand(app, this, files, PropertiesCommand.VERSIONS)));
186
				        	if (!isMysharedTreeSelected)
187
				        		contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.versions()).getHTML() + "&nbsp;Versions</span>", true, new PropertiesCommand(app, this, files, PropertiesCommand.VERSIONS)));
183 188
				        	empty = false;
184 189
				        }
185 190
				        else if (!folder.isContainer()) {
b/src/gr/grnet/pithos/web/client/commands/RefreshCommand.java
62 62
	public void execute() {
63 63
		if (containerPanel != null)
64 64
			containerPanel.hide();
65
		app.updateFolder(folder, true, new Command() {
66
			
67
			@Override
68
			public void execute() {
69
				app.updateStatistics();
70
			}
71
		}, true);
65
		if (app.getSelectedTree().equals(app.getMySharedTreeView()))
66
			app.updateSharedFolder(folder, true);
67
		else
68
			app.updateFolder(folder, true, new Command() {
69
				
70
				@Override
71
				public void execute() {
72
					app.updateStatistics();
73
				}
74
			}, true);
72 75
	}
73 76
}
b/src/gr/grnet/pithos/web/client/mysharedtree/MysharedTreeViewModel.java
42 42
import gr.grnet.pithos.web.client.foldertree.Folder;
43 43
import gr.grnet.pithos.web.client.foldertree.FolderTreeView;
44 44
import gr.grnet.pithos.web.client.mysharedtree.MysharedTreeView.Templates;
45
import gr.grnet.pithos.web.client.othersharedtree.OtherSharedTreeView;
46
import gr.grnet.pithos.web.client.othersharedtree.OtherSharedTreeViewModel;
45 47
import gr.grnet.pithos.web.client.rest.GetRequest;
46 48
import gr.grnet.pithos.web.client.rest.RestException;
47 49

  
......
57 59
import com.google.gwt.cell.client.Cell;
58 60
import com.google.gwt.cell.client.TextCell;
59 61
import com.google.gwt.cell.client.ValueUpdater;
62
import com.google.gwt.cell.client.Cell.Context;
60 63
import com.google.gwt.core.client.GWT;
61 64
import com.google.gwt.core.client.Scheduler;
62 65
import com.google.gwt.event.dom.client.ContextMenuEvent;
......
77 80

  
78 81
    protected Pithos app;
79 82

  
80
    private Cell<Folder> folderCell = new AbstractCell<Folder>() {
83
    private Cell<Folder> folderCell = new AbstractCell<Folder>(ContextMenuEvent.getType().getName()) {
81 84

  
82 85
       @Override
83 86
        public void render(Context context, Folder folder, SafeHtmlBuilder safeHtmlBuilder) {
......
85 88
            safeHtmlBuilder.appendHtmlConstant(html).appendHtmlConstant("&nbsp;");
86 89
            safeHtmlBuilder.append(Templates.INSTANCE.nameSpan(folder.getName()));
87 90
        }
91

  
92
       @Override
93
       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) {
94
           if (event.getType().equals(ContextMenuEvent.getType().getName())) {
95
           	final int x = event.getClientX();
96
           	final int y = event.getClientY();
97
               MysharedTreeViewModel.this.selectionModel.setSelected(folder, true);
98
               app.scheduleFolderHeadCommand(folder, new Command() {
99
					
100
					@Override
101
					public void execute() {
102
		                FolderContextMenu menu = new FolderContextMenu(app, MysharedTreeView.images, app.getSelectedTree(), folder);
103
		                menu.setPopupPosition(x, y);
104
		                menu.show();
105
					}
106
				});
107
           }
108
       }
88 109
    };
89 110

  
90 111
    protected ListDataProvider<Folder> firstLevelDataProvider = new ListDataProvider<Folder>();
......
195 216

  
196 217
    public void fetchFolder(final Folder f, final boolean showfiles) {
197 218
        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) {
219
        GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
199 220
            @Override
200 221
            public void onSuccess(final Folder _result) {
201 222
                if (showfiles)

Also available in: Unified diff