import com.google.gwt.resources.client.ImageResource.ImageOptions;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.cellview.client.CellTree;
+import com.google.gwt.user.cellview.client.TreeNode;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Event;
}});
FolderContextMenu menu;
Map<String,FolderDataProvider> mymap=new HashMap<String, FolderDataProvider>();
-
+ Map<String,NodeInfo<RestResource>> nodeInfos = new HashMap<String, NodeInfo<RestResource>>();
FolderResource myFolders=null;
TrashResource trash = null;
SharedResource myshared = null;
}
};
tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
+
Handler selectionHandler = new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(com.google.gwt.view.client.SelectionChangeEvent event) {
}
public void updateNodeChildren(final RestResource resource){
- /*NodeInfo<RestResource> nodeInfo = (NodeInfo<RestResource>) getModel().getNodeInfo(resource);
- GWT.log("NODE INFO:"+nodeInfo);
- if(nodeInfo!=null){
- if(nodeInfo.getProvidesKey()==null)
- GWT.log("VALUE UPDATER IS NULL");
- else if (nodeInfo.getProvidesKey() instanceof FolderDataProvider){
- GWT.log("VALUE UPDATER IS OK");
- ((FolderDataProvider)nodeInfo.getProvidesKey()).refresh();
- }
- }*/
- if(resource.equals(myFolders)){
- GWT.log("myfolders");
- updateNode(resource);
- return;
- }
- if(resource instanceof FolderResource){
- FolderDataProvider dp = mymap.get(((FolderResource)resource).getParentURI());
- GWT.log("DP:"+dp);
- if(dp!=null){
- dp.refresh(null);/*new RefreshHandler(){
-
- @Override
- public void onRefresh() {
- FolderDataProvider dp2 = mymap.get(resource.getUri());
- GWT.log("DP2:"+dp2);
- if(dp2!=null){
- dp2.refresh(null);
- }
-
- }
-
- });
- return;*/
+ if(resource instanceof FolderResource)
+ if(((FolderResource)resource).getFolders().size()==0){
+ mymap.get(((FolderResource)resource).getParentURI()).refresh(null);
+ return;
}
- }
- FolderDataProvider dp2 = mymap.get(resource.getUri());
- GWT.log("DP2:"+dp2);
- if(dp2!=null){
- dp2.refresh(null);
- }
+ refreshNodeContainingResource(resource);
+ }
+
+ public void updateNodeChildren(final String resource){
+ refreshNodeContainingResource(resource);
}
protected void showPopup(final int x, final int y) {
}
public void onBrowserEvent(Cell.Context context, com.google.gwt.dom.client.Element parent, RestResource value, com.google.gwt.dom.client.NativeEvent event, com.google.gwt.cell.client.ValueUpdater<RestResource> valueUpdater) {
- GWT.log("-->"+event.getType());
if(event.getType().equals("contextmenu")){
selectionModel.setSelected(value, true);
showPopup(event.getClientX(), event.getClientY());
((FolderResource) value));
DragAndDropNodeInfo<RestResource> n = new DragAndDropNodeInfo<RestResource>(dataProvider, departmentCell,
selectionModel, new ResourceValueUpdater());
+ nodeInfos.put(((FolderResource) value).getUri(), n);
DroppableOptions options = n.getDroppableOptions();
options.setDroppableHoverClass("droppableHover");
// use a DroppableFunction here. We can also add a DropHandler in the tree
public void f(DragAndDropContext context) {
GWT.log("DROPPED");
- /*MemberInfo droppedMember = context.getDraggableData();
- Permission dropPermission = context.getDroppableData();
-
- MemberDatabase.get().permissionChange(droppedMember, dropPermission);
- */
+
}
});
// permission cell are not draggable
return ((FolderResource)value).getFolders().size()==0;
if(value instanceof TrashResource)
return ((TrashResource)value).getFolders().size()==0;
+
return false;
}
selectionModel.setSelected(value, true);
GWT.log("UPDATYING");
GSS.get().onResourceUpdate(value);
+
}
@Override
}
public void refresh(final RefreshHandler refresh){
+ GWT.log("******************************************");
+ GWT.log("[REFRESHING]:"+restResource.getUri());
+ GWT.log("******************************************");
GetCommand<FolderResource> gf = new GetCommand<FolderResource>(FolderResource.class, restResource.getUri(), null) {
@Override
public void onComplete() {
restResource = getResult();
+ if(CellTreeView.this.mymap.get(restResource.getUri())!=null)
+ CellTreeView.this.mymap.get(restResource.getUri()).setRestResource(restResource);
MultipleGetCommand<FolderResource> gf2 = new MultipleGetCommand<FolderResource>(FolderResource.class,
((FolderResource) restResource).getSubfolderPaths().toArray(new String[] {}), null) {
};
DeferredCommand.addCommand(gf);
- }
+ }
}
public TreeViewModel getModel() {
return model;
}
- /*
- private TreeNode getUserItem(TreeNode parent, RestResource folder) {
- if(parent==null)
- parent = tree.getRootTreeNode();
- TreeNode tmp = null;
- if (parent.getValue() instanceof RestResource &&
- (parent.getValue().equals(folder) ||
- ((FolderResource) parent.getValue()).getUri().equals(folder.getUri())))
- return parent;
- for (int i = 0; i < parent.getChildCount(); i++) {
- boolean op = parent.isChildOpen(i);
- TreeNode child = parent.setChildOpen(index, open, fireEvents)(i);
- if (child.getUserObject() instanceof FolderResource) {
- FolderResource dto = (FolderResource) child.getUserObject();
- if (dto.equals(folder) || dto.getUri().equals(folder.getUri()))
- return child;
+
+ private void refreshNodeContainingResource(RestResource r){
+ TreeNode node = tree.getRootTreeNode();
+ refreshNodeContainingResource(node,r);
+ }
+
+ private void refreshNodeContainingResource(String uri){
+ TreeNode node = tree.getRootTreeNode();
+ refreshNodeContainingResource(node,uri);
+ }
+
+ private void refreshNodeContainingResource(TreeNode node, RestResource resource){
+ int count = node.getChildCount();
+ for(int i=0;i<count;i++){
+ if(node.isChildOpen(i)){
+ if(node.getChildValue(i).equals(resource)){
+ GWT.log("FOUND RESOURCE");
+ node.setChildOpen(i, false, true);
+ node.setChildOpen(i, true, true);
+ return;
+ }
+ else{
+ TreeNode n = node.setChildOpen(i, true);
+ if(n!=null)
+ refreshNodeContainingResource(n,resource);
+ }
+ }
+ }
+ }
+
+ private void refreshNodeContainingResource(TreeNode node, String uri){
+ int count = node.getChildCount();
+ for(int i=0;i<count;i++){
+ if(node.isChildOpen(i)){
+ if(node.getChildValue(i) instanceof RestResource && ((RestResource)node.getChildValue(i)).getUri().equals(uri)){
+ GWT.log("FOUND RESOURCE");
+ node.setChildOpen(i, false, true);
+ node.setChildOpen(i, true, true);
+ return;
+ }
+ else{
+ TreeNode n = node.setChildOpen(i, true);
+ if(n!=null)
+ refreshNodeContainingResource(n,uri);
+ }
}
- tmp = getUserItem(child, folder);
- if (tmp != null)
- return tmp;
}
- return null;
- }*/
+ }
+
public interface RefreshHandler{
void onRefresh();
import com.google.gwt.event.dom.client.ClickEvent;\r
import com.google.gwt.event.dom.client.ClickHandler;\r
import com.google.gwt.event.dom.client.KeyCodes;\r
-import com.google.gwt.event.dom.client.KeyDownEvent;\r
-import com.google.gwt.event.dom.client.KeyDownHandler;\r
import com.google.gwt.http.client.URL;\r
import com.google.gwt.i18n.client.DateTimeFormat;\r
import com.google.gwt.json.client.JSONArray;\r
@Override\r
public void onComplete() {\r
//TODO:CELLTREE\r
+ GSS.get().getTreeView().updateNodeChildren(folder);\r
//GSS.get().getFolders().updateFolder((DnDTreeItem) GSS.get().getFolders().getCurrent());\r
}\r
\r
@Override\r
public void onComplete() {\r
//TODO:CELLTREE\r
- /*\r
+ \r
if(getPostBody() != null && !"".equals(getPostBody().trim())){\r
\r
- DnDTreeItem folderItem = (DnDTreeItem) GSS.get().getFolders().getCurrent();\r
- FolderResource fres = folderItem.getFolderResource();\r
+ \r
+ FolderResource fres = (FolderResource) GSS.get().getTreeView().getSelection();\r
String initialPath = fres.getUri();\r
String newPath = getPostBody().trim();\r
fres.setUri(newPath);\r
-\r
+ GSS.get().getTreeView().updateNodeChildren(fres.getParentURI());\r
+ /*\r
if(folderItem.getParentItem() != null && ((DnDTreeItem)folderItem.getParentItem()).getFolderResource() != null){\r
((DnDTreeItem)folderItem.getParentItem()).getFolderResource().removeSubfolderPath(initialPath);\r
((DnDTreeItem)folderItem.getParentItem()).getFolderResource().getSubfolderPaths().add(newPath);\r
- }\r
+ }*/\r
}\r
- GSS.get().getFolders().updateFolder( (DnDTreeItem) GSS.get().getFolders().getCurrent());\r
- */\r
+ //GSS.get().getFolders().updateFolder( (DnDTreeItem) GSS.get().getFolders().getCurrent());\r
+ \r
GSS.get().showFileList(true);\r
}\r
\r