import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.Cell;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ContextMenuEvent;
+import com.google.gwt.event.dom.client.ContextMenuHandler;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
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;
import com.google.gwt.user.client.IncrementalCommand;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Tree;
+import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.view.client.AsyncDataProvider;
import com.google.gwt.view.client.HasData;
import com.google.gwt.view.client.ListDataProvider;
Images images;
private final ListDataProvider<FolderResource> rootNodes = new ListDataProvider<FolderResource>();
SingleSelectionModel<FolderResource> selectionModel = new SingleSelectionModel<FolderResource>();
+ FolderContextMenu menu;
/**
* Specifies the images that will be bundled for this Composite and other
* inherited images that will be included in the same bundle.
@Source("gr/ebs/gss/resources/trashcan_empty.png")
ImageResource trash();
}
-
+ final CellTree tree;
/**
*
*/
* CustomTreeModel#getNodeInfo();
*/
CellTree.Resources res = GWT.create(CellTree.BasicResources.class);
- CellTree tree = new CellTree(model,null, res);
+ tree = new CellTree(model,null, res){
+ @Override
+ public void onBrowserEvent(Event event) {
+ // TODO Auto-generated method stub
+ super.onBrowserEvent(event);
+ GWT.log(event.getType());
+ }
+ };
tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
-
+ sinkEvents(Event.ONCONTEXTMENU);
+ sinkEvents(Event.ONMOUSEUP);
initWidget(tree);
DeferredCommand.addCommand(new IncrementalCommand() {
}
});
}
+
+ protected void showPopup(final int x, final int y) {
+ if (selectionModel.getSelectedObject() == null)
+ return;
+ if (menu != null)
+ menu.hide();
+ menu = new FolderContextMenu(images);
+ menu.setPopupPosition(x, y);
+ menu.show();
+ }
+
public boolean fetchRootFolders() {
UserResource userResource = GSS.get().getCurrentUserResource();
if (userResource == null)
public void onComplete() {
FolderResource rootResource = getResult();
rootNodes.setList(Arrays.asList((FolderResource)rootResource));
+ tree.getRootTreeNode().setChildOpen(0, true);
}
class CustomTreeModel implements TreeViewModel{
- private final Cell<FolderResource> departmentCell = new AbstractCell<FolderResource>(){
-
+ private final Cell<FolderResource> departmentCell = new AbstractCell<FolderResource>("contextmenu"){
+
@Override
public void render(com.google.gwt.cell.client.Cell.Context arg0, FolderResource arg1, SafeHtmlBuilder arg2) {
- if(arg1.getParentName()==null){
+ if(arg1.isShared())
+ arg2.appendHtmlConstant(AbstractImagePrototype.create(images.sharedFolder()).getHTML());
+ else if(arg1.getParentName()==null){
arg2.appendHtmlConstant(AbstractImagePrototype.create(images.home()).getHTML());
}
else
}
+ public void onBrowserEvent(Cell.Context context, com.google.gwt.dom.client.Element parent, FolderResource value, com.google.gwt.dom.client.NativeEvent event, com.google.gwt.cell.client.ValueUpdater<FolderResource> valueUpdater) {
+ GWT.log("-->"+event.getType());
+ if(event.getType().equals("contextmenu")){
+ selectionModel.setSelected(value, true);
+ showPopup(event.getClientX(), event.getClientY());
+ }
+ };
+
};
@Override
public <T> NodeInfo<?> getNodeInfo(T value) {
+
if(value==null){
return new DefaultNodeInfo<FolderResource>(rootNodes, departmentCell,
selectionModel, null);