/v3.2/nimbits-tds/src/com/nimbits/client/panels/UserListPanel.java

http://nimbits-server.googlecode.com/ · Java · 233 lines · 114 code · 60 blank · 59 comment · 1 complexity · ca5318063284bda441fa13d87164db54 MD5 · raw file

  1. /*
  2. * Copyright (c) 2010 Tonic Solutions LLC.
  3. *
  4. * http://www.nimbits.com
  5. *
  6. *
  7. * Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
  8. *
  9. * http://www.gnu.org/licenses/gpl.html
  10. *
  11. * Unless required by applicable law or agreed to in writing, software distributed under the license is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
  12. */
  13. package com.nimbits.client.panels;
  14. import com.extjs.gxt.ui.client.event.Events;
  15. import com.extjs.gxt.ui.client.event.Listener;
  16. import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
  17. import com.extjs.gxt.ui.client.store.ListStore;
  18. import com.extjs.gxt.ui.client.util.Format;
  19. import com.extjs.gxt.ui.client.widget.ContentPanel;
  20. import com.extjs.gxt.ui.client.widget.ListView;
  21. import com.extjs.gxt.ui.client.widget.layout.FillLayout;
  22. import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
  23. import com.google.gwt.core.client.GWT;
  24. import com.google.gwt.user.client.Element;
  25. import com.google.gwt.user.client.rpc.AsyncCallback;
  26. import com.nimbits.client.exception.NimbitsException;
  27. import com.nimbits.client.model.Const;
  28. import com.nimbits.client.model.GxtUserModel;
  29. import com.nimbits.client.model.category.Category;
  30. import com.nimbits.client.model.diagram.Diagram;
  31. import com.nimbits.client.model.email.EmailAddress;
  32. import com.nimbits.client.model.point.Point;
  33. import com.nimbits.client.model.user.User;
  34. import com.nimbits.client.service.user.UserService;
  35. import com.nimbits.client.service.user.UserServiceAsync;
  36. import java.util.List;
  37. class UserListPanel extends NavigationEventProvider {
  38. private final UserServiceAsync userService = GWT.create(UserService.class);
  39. // private NavigationPanel navTree;// = new NavTree();
  40. private final EmailAddress email;
  41. public UserListPanel(EmailAddress email) {
  42. setLayout(new FlowLayout(10));
  43. this.email = email;
  44. }
  45. @Override
  46. protected void onRender(Element parent, int index) {
  47. super.onRender(parent, index);
  48. final ListStore<GxtUserModel> store = new ListStore<GxtUserModel>();
  49. userService.getConnections(email, new AsyncCallback<List<User>>() {
  50. @Override
  51. public void onFailure(Throwable caught) {
  52. }
  53. @Override
  54. public void onSuccess(List<User> result) {
  55. for (User n : result) {
  56. store.add(new GxtUserModel(n));
  57. }
  58. }
  59. });
  60. final ContentPanel panel = new ContentPanel();
  61. panel.setCollapsible(false);
  62. panel.setAnimCollapse(false);
  63. panel.setFrame(false);
  64. panel.setHeaderVisible(false);
  65. panel.setBorders(false);
  66. panel.setId("images-view");
  67. // panel.setWidth(535);
  68. panel.setAutoHeight(true);
  69. panel.setBodyBorder(false);
  70. ListView<GxtUserModel> view = new ListView<GxtUserModel>() {
  71. @Override
  72. protected GxtUserModel prepareData(GxtUserModel model) {
  73. String s = model.get(Const.PARAM_NAME);
  74. model.set("shortName", Format.ellipse(s, 15));
  75. model.set(Const.PARAM_PATH, model.get(Const.PARAM_PATH));
  76. return model;
  77. }
  78. };
  79. view.setTemplate(getTemplate());
  80. view.setBorders(false);
  81. view.setStore(store);
  82. view.setItemSelector("div.thumb-wrap");
  83. view.setWidth(100);
  84. view.getSelectionModel().addListener(Events.SelectionChange,
  85. new Listener<SelectionChangedEvent<GxtUserModel>>() {
  86. public void handleEvent(SelectionChangedEvent<GxtUserModel> be) {
  87. final NavigationPanel navigationPanel = createNavigationPanel(be.getSelectedItem().getEmail());
  88. navigationPanel.setLayout(new FillLayout());
  89. // initTree(true);
  90. //navigationPanel.setHeight(400);
  91. panel.removeAll();
  92. panel.add(navigationPanel);
  93. panel.setHeight("100%");
  94. // panel.setHeight(800);
  95. // panel.setHeaderVisible(true);
  96. // panel.setHeading(be.getSelectedItem().getValue());
  97. doLayout();
  98. }
  99. });
  100. panel.add(view);
  101. add(panel);
  102. }
  103. final NavigationPanel createNavigationPanel(final EmailAddress selectedEmail) {
  104. final NavigationPanel navTree = new NavigationPanel(selectedEmail, true);
  105. // navTree.loadAuthTree();
  106. navTree.addCategoryClickedListeners(new NavigationEventProvider.CategoryClickedListener() {
  107. @Override
  108. public void onCategoryClicked(final Category c, boolean readOnly) throws NimbitsException {
  109. notifyCategoryClickedListener(c, readOnly);
  110. }
  111. });
  112. navTree.addPointClickedListeners(new NavigationEventProvider.PointClickedListener() {
  113. @Override
  114. public void onPointClicked(final Point p) {
  115. notifyPointClickedListener(p);
  116. }
  117. });
  118. navTree.addDiagramClickedListeners(new NavigationEventProvider.DiagramClickedListener() {
  119. @Override
  120. public void onDiagramClicked(final Diagram p) {
  121. notifyDiagramClickedListener(p);
  122. }
  123. });
  124. navTree.addDiagramDeletedListeners(new NavigationEventProvider.DiagramDeletedListener() {
  125. @Override
  126. public void onDiagramDeleted(final Diagram c, final boolean readOnly) throws NimbitsException {
  127. notifyDiagramDeletedListener(c, readOnly);
  128. }
  129. });
  130. return navTree;
  131. }
  132. // private NavigationPanel createTree() {
  133. // final NavigationPanel navTree = new NavigationPanel(anEmailAddress, true);
  134. // navTree.addCategoryClickedListeners(new CategoryClickedListener() {
  135. // @Override
  136. // public void onCategoryClicked(final Category c, final boolean readOnly) throws NimbitsException {
  137. // notifyCategoryClickedListener(c, readOnly);
  138. // }
  139. //
  140. // });
  141. //
  142. // navTree.addPointClickedListeners(new PointClickedListener() {
  143. //
  144. // @Override
  145. // public void onPointClicked(final Point p) {
  146. //
  147. // notifyPointClickedListener(p);
  148. // }
  149. //
  150. // });
  151. // navTree.addDiagramClickedListeners(new NavigationEventProvider.DiagramClickedListener() {
  152. //
  153. // @Override
  154. // public void onDiagramClicked(Diagram p, String target) {
  155. //
  156. // notifyDiagramClickedListener(p, Const.WORD_BLANK);
  157. // }
  158. //
  159. // });
  160. // return navTree;
  161. //
  162. // }
  163. private native String getTemplate() /*-{
  164. return ['<tpl for=".">',
  165. '<div class="thumb-wrap" id="{name}" style="border: 0px solid white">',
  166. '<div class="thumb"><img border="0px" src="{path}" title="{name}"></div>',
  167. '<span class="x-editable">{shortName}</span></div>',
  168. '</tpl>',
  169. '<div class="x-clear"></div>'].join("");
  170. }-*/;
  171. }