+\r
+ @Override\r
+ public void onSelection(SelectionEvent event) {\r
+ final TreeItem item = (TreeItem)event.getSelectedItem();\r
+ onSelection(item);\r
+\r
+ }\r
+\r
+ private void onSelection(TreeItem item){\r
+ final Object selected = item.getUserObject();\r
+ // Preserve the previously selected item, so that the current's\r
+ // onClick() method gets a chance to find it.\r
+ if (getPrevious() != null)\r
+ getPrevious().getWidget().removeStyleName("gss-SelectedRow");\r
+ setCurrent(item);\r
+ getCurrent().getWidget().addStyleName("gss-SelectedRow");\r
+ setPrevious(getCurrent());\r
+ GSS.get().setCurrentSelection(selected);\r
+ //cache the latest top level node (group) for selecting and expanding on refresh\r
+ if (item.getParentItem() == null)\r
+ selectedGroup = item.getText();\r
+ else\r
+ selectedGroup = item.getParentItem().getText();\r
+ }\r
+\r
+ @Override\r
+ public void onOpen(OpenEvent event) {\r
+ final TreeItem item = (TreeItem) event.getTarget();\r
+ updateUsers(item);\r
+ }\r