Revision c24efcc9 src/gr/ebs/gss/client/PopupTree.java

b/src/gr/ebs/gss/client/PopupTree.java
34 34
import com.google.gwt.event.logical.shared.OpenHandler;
35 35
import com.google.gwt.event.logical.shared.SelectionEvent;
36 36
import com.google.gwt.event.logical.shared.SelectionHandler;
37
import com.google.gwt.http.client.URL;
37 38
import com.google.gwt.user.client.DOM;
38 39
import com.google.gwt.user.client.Event;
39 40
import com.google.gwt.user.client.History;
......
71 72
				TreeItem item = event.getSelectedItem();
72 73
				processItemSelected(item, true);
73 74

  
74
				String path = GSS.get().getApiPath() +  GSS.get().getCurrentUserResource().getUsername()+ "/";
75
//				Trash is selected
75
				String path = GSS.get().getApiPath() + GSS.get().getCurrentUserResource().getUsername()+ "/";
76

  
77
//				case: Trash is selected
76 78
				if(GSS.get().getFolders().isTrash(item)){
77 79
					TrashResource currentObject = (TrashResource) GSS.get().getFolders().getCurrent().getUserObject();
78
					History.newItem("Trash"+currentObject.getUri().substring(path.lastIndexOf("/")));
80
					String finalUri = currentObject.getUri().substring(path.lastIndexOf("/")+1);
81
					History.newItem("Files/"+finalUri);
82
				}
83
//				case: Other's shared option is selected
84
				else if (GSS.get().getFolders().getCurrent().getUserObject() instanceof OthersResource){
85
					String currentPartTrimmed = DisplayHelper.trim(item.getText());
86
					String finalUri = URL.encodeComponent("Files/"+path.substring(path.lastIndexOf("/")+1) + currentPartTrimmed);
87

  
88
					History.newItem(finalUri);
79 89
				}
80
//				other's shared is selected
81
				else if (GSS.get().getFolders().isOthersShared(item)){
82
					OthersResource currentObject = (OthersResource) GSS.get().getFolders().getCurrent().getUserObject();
83
					History.newItem(currentObject.getUri().substring(path.lastIndexOf("/"))
84
									+ GSS.get().getFolders().getCurrent().getText());
90
//				case: expand Other's shared to folder below
91
				else if(GSS.get().getFolders().getCurrent().getUserObject() instanceof OtherUserResource){
92
					OtherUserResource currentObject = (OtherUserResource) GSS.get().getFolders().getCurrent().getUserObject();
93
					String finalUri = URL.encodeComponent("others/"+ currentObject.getName());
94
					History.newItem(finalUri);
85 95
				}
86
//				my shared is selected
87
				else if(GSS.get().getFolders().isMySharedItem(item)){
96
//				case: my shared is selected
97
				else if(GSS.get().getFolders().getCurrent().getUserObject() instanceof SharedResource){
88 98
					SharedResource currentObject = (SharedResource) GSS.get().getFolders().getCurrent().getUserObject();
89
				History.newItem(currentObject.getUri().substring(path.lastIndexOf("/"))
90
								+ GSS.get().getFolders().getCurrent().getText());
99
					String finalUri = currentObject.getUri().substring(path.lastIndexOf("/")+1);
100
					History.newItem("Files/"+finalUri);
91 101
				}
92
//				home folders are selected
102

  
103
//				case: home folders are selected
93 104
				else{
94 105
					FolderResource currentObject = (FolderResource) GSS.get().getFolders().getCurrent().getUserObject();
95
					int index = path.lastIndexOf("/");
96
					String uri = currentObject.getParentURI();
97
					String res = null;
98
					if(uri == null)
99
						History.newItem("Files" + currentObject.getParentName());
100
					else
101
						History.newItem("Files"+ uri.substring(path.lastIndexOf("/")) + currentObject.getName());
106
					String parentUri = currentObject.getParentURI();
107
					if(parentUri == null){
108
						if(containsTrash(GSS.get().getFolders().getCurrent())){
109
							String finalUri = constructPartialPath(GSS.get().getFolders().getCurrent());
110
							History.newItem("trash/"+finalUri);
111
						}else{
112
							String nonEncodedUri = "Files/" + currentObject.getName();
113

  
114
							History.newItem(URL.encode(nonEncodedUri));
115
						}
116
					} else if(containsSharedFolder(GSS.get().getFolders().getCurrent())){
117
						String finalUri = constructPartialPath(GSS.get().getFolders().getCurrent());
118
						History.newItem("shared/"+finalUri);
119
					}else if(containsSharedFolder(GSS.get().getFolders().getCurrent())){
120
						String finalUri = constructPartialPath(GSS.get().getFolders().getCurrent());
121
						History.newItem("other's/"+finalUri);
122
					}
123
					else{
124
						String uri = "Files"+ parentUri.substring(path.lastIndexOf("/")) + URL.encode(currentObject.getName());
125
						History.newItem(uri);
126
					}
102 127
				}
103

  
104 128
			}
129

  
130

  
105 131
		});
106 132

  
107 133
		addOpenHandler(new OpenHandler<TreeItem>() {
......
263 289
		treeSelectedItem = newSelectedItem;
264 290
	}
265 291

  
292
	/**
293
	 * examine whether there is "My Shared" inside path
294
	 *
295
	 * @param selectedItem the selectedItem to check
296
	 */
297

  
298
	public boolean containsSharedFolder(TreeItem selectedItem){
299
		   TreeItem parent = selectedItem.getParentItem();
300
		   while (parent != null){
301
		      String parentItemText = parent.getText();
302
		      String parentItemTextTr = DisplayHelper.trim(parentItemText);
303
		      if(parentItemTextTr.equals("My Shared")||parentItemTextTr.equals("Other's Shared")) return true;
304
		      parent = parent.getParentItem();
305
		   }
306
		   return false;
307
	}
308
	public boolean containsTrash(TreeItem selectedItem){
309
		   TreeItem parent = selectedItem.getParentItem();
310
		   while (parent != null){
311
		      String parentItemText = parent.getText();
312
		      String parentItemTextTr = DisplayHelper.trim(parentItemText);
313
		      if(parentItemTextTr.equals("Trash")) return true;
314
		      parent = parent.getParentItem();
315
		   }
316
		   return false;
317
	}
318

  
319
	/**
320
	 * construct the partial path of the selected TreeItem
321
	 *
322
	 * @param selectedItem the selectedItem to check
323
	 */
324
	public String constructPartialPath(TreeItem selectedItem){
325
	   String result = DisplayHelper.trim(selectedItem.getText());
326
	   TreeItem parent = selectedItem.getParentItem();
327
	   while (!(DisplayHelper.trim(parent.getText()).equals("My Shared") || DisplayHelper.trim(parent.getText()).equals("Other's Shared")||DisplayHelper.trim(parent.getText()).equals("Trash"))){
328
	      result = DisplayHelper.trim(parent.getText()) + "/" + result;
329
	      if(result.equals("My Shared")||result.equals("Other's Shared")) return result;
330
	      parent = parent.getParentItem();
331
	   }
332

  
333
	   return result;
334
	}
335

  
336

  
266 337
}

Also available in: Unified diff