projects
/
pithos
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c51e2c9
)
initial context menu support for celltree
author
koutsoub
<devnull@localhost>
Thu, 20 Jan 2011 13:53:14 +0000
(15:53 +0200)
committer
koutsoub
<devnull@localhost>
Thu, 20 Jan 2011 13:53:14 +0000
(15:53 +0200)
src/gr/ebs/gss/client/CellTreeView.java
patch
|
blob
|
history
diff --git
a/src/gr/ebs/gss/client/CellTreeView.java
b/src/gr/ebs/gss/client/CellTreeView.java
index
c75ef64
..
da3d296
100644
(file)
--- a/
src/gr/ebs/gss/client/CellTreeView.java
+++ b/
src/gr/ebs/gss/client/CellTreeView.java
@@
-31,6
+31,8
@@
import java.util.List;
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.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.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
@@
-38,10
+40,12
@@
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.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.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;
import com.google.gwt.view.client.AsyncDataProvider;
import com.google.gwt.view.client.HasData;
import com.google.gwt.view.client.ListDataProvider;
@@
-60,6
+64,7
@@
public class CellTreeView extends Composite{
Images images;
private final ListDataProvider<FolderResource> rootNodes = new ListDataProvider<FolderResource>();
SingleSelectionModel<FolderResource> selectionModel = new SingleSelectionModel<FolderResource>();
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.
/**
* Specifies the images that will be bundled for this Composite and other
* inherited images that will be included in the same bundle.
@@
-87,7
+92,7
@@
public class CellTreeView extends Composite{
@Source("gr/ebs/gss/resources/trashcan_empty.png")
ImageResource trash();
}
@Source("gr/ebs/gss/resources/trashcan_empty.png")
ImageResource trash();
}
-
+ final CellTree tree;
/**
*
*/
/**
*
*/
@@
-101,10
+106,18
@@
public class CellTreeView extends Composite{
* CustomTreeModel#getNodeInfo();
*/
CellTree.Resources res = GWT.create(CellTree.BasicResources.class);
* 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);
tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
-
+ sinkEvents(Event.ONCONTEXTMENU);
+ sinkEvents(Event.ONMOUSEUP);
initWidget(tree);
DeferredCommand.addCommand(new IncrementalCommand() {
initWidget(tree);
DeferredCommand.addCommand(new IncrementalCommand() {
@@
-114,6
+127,17
@@
public class CellTreeView extends Composite{
}
});
}
}
});
}
+
+ 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 boolean fetchRootFolders() {
UserResource userResource = GSS.get().getCurrentUserResource();
if (userResource == null)
@@
-126,6
+150,7
@@
public class CellTreeView extends Composite{
public void onComplete() {
FolderResource rootResource = getResult();
rootNodes.setList(Arrays.asList((FolderResource)rootResource));
public void onComplete() {
FolderResource rootResource = getResult();
rootNodes.setList(Arrays.asList((FolderResource)rootResource));
+ tree.getRootTreeNode().setChildOpen(0, true);
}
}
@@
-146,11
+171,13
@@
public class CellTreeView extends Composite{
class CustomTreeModel implements TreeViewModel{
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) {
@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
arg2.appendHtmlConstant(AbstractImagePrototype.create(images.home()).getHTML());
}
else
@@
-159,11
+186,20
@@
public class CellTreeView extends Composite{
}
}
+ 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) {
};
@Override
public <T> NodeInfo<?> getNodeInfo(T value) {
+
if(value==null){
return new DefaultNodeInfo<FolderResource>(rootNodes, departmentCell,
selectionModel, null);
if(value==null){
return new DefaultNodeInfo<FolderResource>(rootNodes, departmentCell,
selectionModel, null);