Revision ba0078a6

b/web_client/src/gr/grnet/pithos/web/client/Pithos.java
48 48
import com.google.gwt.json.client.JSONValue;
49 49
import com.google.gwt.user.client.Command;
50 50
import com.google.gwt.view.client.SelectionChangeEvent;
51
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
51 52
import com.google.gwt.view.client.SingleSelectionModel;
52 53
import gr.grnet.pithos.web.client.commands.GetUserCommand;
53 54
import gr.grnet.pithos.web.client.foldertree.AccountResource;
......
135 136
        folderTreeView.updateFolder(f);
136 137
    }
137 138

  
139
    public void updateTag(Tag t) {
140
        tagTreeView.updateTag(t);
141
    }
142

  
143
    public void updateTags() {
144
        tagTreeViewModel.initialize(account);
145
    }
146

  
138 147
    /**
139 148
	 * An aggregate image bundle that pulls together all the images for this
140 149
	 * application into a single bundle.
......
309 318
        inner.add(fileList, createHeaderHTML(AbstractImagePrototype.create(images.folders()), "Files"), true);
310 319

  
311 320
        tagTreeSelectionModel = new SingleSelectionModel<Tag>();
321
        tagTreeSelectionModel.addSelectionChangeHandler(new Handler() {
322
            @Override
323
            public void onSelectionChange(SelectionChangeEvent event) {
324
                Tag t = tagTreeSelectionModel.getSelectedObject();
325
                updateTag(t);
326
            }
327
        });
312 328
        tagTreeViewModel = new TagTreeViewModel(tagTreeSelectionModel);
313 329
        tagTreeView = new TagTreeView(tagTreeViewModel);
314
        
330

  
315 331
        VerticalPanel trees = new VerticalPanel();
316 332
        trees.add(folderTreeView);
317 333
        trees.add(tagTreeView);
b/web_client/src/gr/grnet/pithos/web/client/foldertree/Folder.java
83 83
     */
84 84
    private boolean trash = false;
85 85

  
86
    private Set<String> tags = new LinkedHashSet<String>();
87

  
86 88
    public Folder() {};
87 89

  
88 90
    public Folder(String name) {
......
138 140
        if (header != null && header.equals("true"))
139 141
            inTrash = true;
140 142

  
143
        header = response.getHeader("X-Container-Object-Meta");
144
        if (header != null) {
145
            tags.add("tag1");
146
            tags.add("tag2");
147
        }
148

  
141 149
        subfolders.clear(); //This is necessary in case we update a pre-existing Folder so that stale subfolders won't show up
142 150
        files.clear();
143 151
        JSONValue json = JSONParser.parseStrict(response.getText());
......
254 262
    public void setContainer(String container) {
255 263
        this.container = container;
256 264
    }
265

  
266
    public Set<String> getTags() {
267
        return tags;
268
    }
257 269
}
b/web_client/src/gr/grnet/pithos/web/client/foldertree/FolderTreeViewModel.java
154 154
                f.setTrash(true);
155 155
                f.setContainer("trash");
156 156
                dataProvider.getList().add(f);
157
                Pithos.get().updateTags();
157 158
            }
158 159
        }
159 160
    }
b/web_client/src/gr/grnet/pithos/web/client/tagtree/TagTreeViewModel.java
46 46
import com.google.gwt.view.client.ListDataProvider;
47 47
import com.google.gwt.view.client.SingleSelectionModel;
48 48
import com.google.gwt.view.client.TreeViewModel;
49
import gr.grnet.pithos.web.client.Pithos;
50
import gr.grnet.pithos.web.client.foldertree.AccountResource;
51
import gr.grnet.pithos.web.client.foldertree.Folder;
49 52
import gr.grnet.pithos.web.client.tagtree.TagTreeView.Templates;
53
import java.util.Arrays;
54
import java.util.Iterator;
55
import java.util.List;
56
import java.util.Set;
50 57

  
51 58
public class TagTreeViewModel implements TreeViewModel {
52 59

  
......
54 61

  
55 62
       @Override
56 63
        public void render(Context context, Tag tag, SafeHtmlBuilder safeHtmlBuilder) {
57
            String html = AbstractImagePrototype.create(TagTreeView.images.info()).getHTML();
64
            String html = AbstractImagePrototype.create(TagTreeView.images.tag()).getHTML();
58 65
            safeHtmlBuilder.appendHtmlConstant(html);
59 66
            safeHtmlBuilder.append(Templates.INSTANCE.nameSpan(tag.getName()));
60 67
        }
......
79 86
    @Override
80 87
    public <T> NodeInfo<?> getNodeInfo(T value) {
81 88
        if (value == null) {
82
            rootDataProvider.getList().add("Tags");
89
//            rootDataProvider.getList().add("Tags");
83 90
            return new DefaultNodeInfo<String>(rootDataProvider, new TextCell(new SafeHtmlRenderer<String>() {
84 91
                @Override
85 92
                public SafeHtml render(String object) {
86 93
                    SafeHtmlBuilder builder = new SafeHtmlBuilder();
87
                    String html = AbstractImagePrototype.create(TagTreeView.images.tag()).getHTML();
88
                    builder.appendHtmlConstant(html);
89
                    builder.append(Templates.INSTANCE.nameSpan(object));
94
                    render(object, builder);
90 95
                    return builder.toSafeHtml();
91 96
                }
92 97

  
......
111 116
        if (o == null)
112 117
            return false;
113 118
        if (o instanceof String)
114
            return false;
119
            return tagDataProvider.getList().isEmpty();
115 120
        else
116 121
            return true;
117 122
    }
118 123

  
119
//    private void fetchFolder(final Iterator<Tag> iter, final ListDataProvider<Tag> dataProvider, final Set<Tag> tags) {
120
//        final Pithos app = Pithos.get();
121
//        if (iter.hasNext()) {
122
//            final Tag f = iter.next();
123
//
124
//            String path = app.getApiPath() + app.getUsername() + "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
124
    private void fetchTags(final Iterator<Folder> iter) {
125
        final Pithos app = Pithos.get();
126
        if (iter.hasNext()) {
127
            final Folder f = iter.next();
128

  
129
            String path = app.getApiPath() + app.getUsername() + "/" + f.getUri() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
125 130
//            GetRequest<Tag> getFolder = new GetRequest<Tag>(Tag.class, path, f) {
126 131
//                @Override
127 132
//                public void onSuccess(Tag result) {
......
139 144
//            };
140 145
//            getFolder.setHeader("X-Auth-Token", app.getToken());
141 146
//            Scheduler.get().scheduleDeferred(getFolder);
142
//        }
143
//        else {
144
//            dataProvider.getList().clear();
145
//            dataProvider.getList().addAll(tags);
146
//            if (dataProvider.equals(rootDataProvider)) {
147
//                selectionModel.setSelected(dataProvider.getList().get(0), true);
148
//
149
//                Tag f = new Tag("Trash");
150
//                f.setTrash(true);
151
//                f.setContainer("trash");
152
//                dataProvider.getList().add(f);
153
//
154
//                f = new Tag("Shared");
155
//                f.setContainer("shared");
156
//                dataProvider.getList().add(f);
157
//
158
//                f = new Tag("Others");
159
//                f.setContainer("others");
160
//                dataProvider.getList().add(f);
161
//
162
//                f = new Tag("Tags");
163
//                f.setContainer("tags");
164
//                dataProvider.getList().add(f);
165
//
166
//                f = new Tag("Groups");
167
//                f.setContainer("groups");
168
//                dataProvider.getList().add(f);
169
//            }
170
//        }
171
//    }
147
        }
148
    }
172 149
//
173 150
//    public void initialize(AccountResource account) {
174 151
//        Iterator<Tag> iter = account.getContainers().iterator();
......
219 196
//            }
220 197
//        });
221 198
//    }
199

  
200
    public void initialize(AccountResource account) {
201
        List<Tag> tagList = tagDataProvider.getList();
202
        for (Folder f : account.getContainers()) {
203
            for (String t : f.getTags())
204
                tagList.add(new Tag(t));
205
        }
206
        rootDataProvider.getList().add("Tags");
207
    }
222 208
}

Also available in: Unified diff