Revision c46c9e31 src/gr/grnet/pithos/web/client/mysharedtree/MysharedTreeViewModel.java

b/src/gr/grnet/pithos/web/client/mysharedtree/MysharedTreeViewModel.java
85 85
            safeHtmlBuilder.appendHtmlConstant(html).appendHtmlConstant(" ");
86 86
            safeHtmlBuilder.append(Templates.INSTANCE.nameSpan(folder.getName()));
87 87
        }
88

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

  
108 90
    protected ListDataProvider<Folder> firstLevelDataProvider = new ListDataProvider<Folder>();
109

  
110
    private Map<Folder, ListDataProvider<Folder>> dataProviderMap = new HashMap<Folder, ListDataProvider<Folder>>();
111
    
91
 
112 92
    protected SingleSelectionModel<Folder> selectionModel;
113 93

  
114 94
    public MysharedTreeViewModel(Pithos _app, SingleSelectionModel<Folder> selectionModel) {
......
122 102
        	fetchSharedContainers(null);
123 103
            return new DefaultNodeInfo<Folder>(firstLevelDataProvider, folderCell, selectionModel, null);
124 104
        }
125
        final Folder f = (Folder) value;
126
        if (dataProviderMap.get(f) == null) {
127
            dataProviderMap.put(f, new ListDataProvider<Folder>());
128
        }
129
        final ListDataProvider<Folder> dataProvider = dataProviderMap.get(f);
130
        fetchFolder(f, dataProvider, false);
131
        return new DefaultNodeInfo<Folder>(dataProvider, folderCell, selectionModel, null);
105
        return null;
132 106
    }
133 107

  
134 108
	private void fetchSharedContainers(final Command callback) {
......
136 110
        GetRequest<AccountResource> getAccount = new GetRequest<AccountResource>(AccountResource.class, app.getApiPath(), app.getUsername(), path) {
137 111
            @Override
138 112
            public void onSuccess(final AccountResource _result) {
139
            	Iterator<Folder> iter = _result.getContainers().listIterator();
140
            	fetchFolder(iter, new Command() {
141
					
142
					@Override
143
					public void execute() {
144
						firstLevelDataProvider.getList().clear();
145
		                Folder t = null;
146
		                for (Folder c : _result.getContainers()) {
147
		                	if (c.isHome())
148
		                		firstLevelDataProvider.getList().add(0, c); //Pithos is always first
149
		                	else if (!c.isTrash())
150
		                		firstLevelDataProvider.getList().add(c);
151
		                }
152
						if (callback != null)
153
							callback.execute();
154
					}
155
				});
113
				firstLevelDataProvider.getList().clear();
114
                Folder t = null;
115
                for (Folder c : _result.getContainers()) {
116
                	if (c.isHome())
117
                		firstLevelDataProvider.getList().add(0, c); //Pithos is always first
118
                	else if (!c.isTrash())
119
                		firstLevelDataProvider.getList().add(c);
120
                }
121
				if (callback != null)
122
					callback.execute();
156 123
            }
157 124

  
158 125
            @Override
......
178 145
    public boolean isLeaf(Object o) {
179 146
		if (o == null)
180 147
			return false;
181
		else if (o instanceof Folder) {
182
            Folder f = (Folder) o;
183
            return f.getSubfolders().isEmpty();
184
        }
185
		else {
186
			return firstLevelDataProvider.getList().isEmpty();
187
		}
148
		return true;
188 149
    }
189 150
	
190 151
	private native void log(String msg) /*-{
......
229 190
    }
230 191

  
231 192
    public void updateFolder(Folder folder, boolean showfiles) {
232
        if (dataProviderMap.get(folder) == null) {
233
            dataProviderMap.put(folder, new ListDataProvider<Folder>());
234
        }
235
        final ListDataProvider<Folder> dataProvider = dataProviderMap.get(folder);
236
        fetchFolder(folder, dataProvider, showfiles);
193
        fetchFolder(folder,showfiles);
237 194
    }
238 195

  
239
    public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider, final boolean showfiles) {
240
        String path = "/" + f.getContainer() + "?format=json&shared=&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix());
241
        GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
196
    public void fetchFolder(final Folder f, final boolean showfiles) {
197
        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) {
242 199
            @Override
243 200
            public void onSuccess(final Folder _result) {
244 201
                if (showfiles)
245 202
                    app.showFiles(_result);
246
                Iterator<Folder> iter = new ArrayList<Folder>(_result.getSubfolders()).listIterator();
247
                fetchFolder(iter, new Command() {
248
                    @Override
249
                    public void execute() {
250
                        dataProvider.getList().clear();
251
                   		dataProvider.getList().addAll(_result.getSubfolders());
252
                        app.getMySharedTreeView().updateChildren(f);
253
                    }
254
                });
255 203
            }
256 204

  
257 205
            @Override

Also available in: Unified diff