def handleResponse(self, events): self.removeLoader(self.responsePanel) header = HTML(java.str(u"<h3><img src=/cal_icon.gif> You have " + java.str(events.size())) + u" event invitations </h3><p/>") self.responsePanel.add(header) for eventInfo in events: self.responsePanel.add(self.createEventInfoUi(eventInfo)) Xfbml.parse(self.responsePanel)
def createLabelAndInput(self, label, field): h = HorizontalPanel() l = HTML(java.str(u"<b>" + java.str(label)) + u": </b>") l.setWidth(u"150px") h.add(l) h.add(field) return h
def renderPosts(self, addContentToPnl, posts): """ Render posts i a stream """ addContentToPnl.clear() addContentToPnl.add(HTML(u"Number of posts: " + java.str(posts.__len__()))) for post in Util.iterate(posts): try: GWT.log(u"Render: " + java.str(JSONObject(post).toString()), None) postContentPnl = VerticalPanel() postContentPnl.addStyleName(u"postContent") postContentPnl.add(HTML(java.str(FbName(post.getActorId())) + u" " + post.getMessage())) if post.getAttachment().getName() is not None: postContentPnl.add(self.createAttachmentUI(post.getAttachment())) if post.getLikes().getCount() > 0: postContentPnl.add(self.createLikesUI(post.getLikes())) if post.getComments().getCount() > 0: postContentPnl.add(self.createCommentsUI(post.getComments())) p = HorizontalPanel() # Add profilepic on the left, postcontent on the right p.addStyleName(u"post") p.add(FbProfilePic(post.getActorId())) p.add(postContentPnl) addContentToPnl.add(p) # postPnl.add ( asJson ( "LikesAsJson: ", post.getLikes () )); except Exception,e: GWT.log(u"Unkown exception ", e)
def onSuccess(self, friendInfoList): outer.clear() result.add(HTML(u"Size " + java.str(friendInfoList.size()))) for fi in friendInfoList: result.add(HTML(java.str(java.str(FbName(fi.getUid1())) + u" friend with " + FbName(fi.getUid2())) + u" ? " + fi.getAreFriends())) outer.add(result) Xfbml.parse(result.getElement())
def __init__(self, ): self.__init__._super() """ New Showcase """ vPanel = VerticalPanel() vPanel.setStyleName(u"gwittit-Stream_publish") innerPanel = VerticalPanel() innerPanel.setStyleName(u"innerPanel") innerPanel.setSpacing(10) publishButton = Button(u"PublishStream #1") helpText = Label(u"This will display a dialog where you can publish stream to your wall") publishButton2 = Button(u"PublishStream #2") helpText2 = HTML(java.str(u"This will publish a stream with the text <b>" + java.str(self.__class__.defaultUserMessage)) + u"</b> ( publish_stream must be granted )") publishButton3 = Button(u"PublisStream #3") helpText3 = HTML(u"This will prompt user to update his or her status") innerPanel.add(publishButton) innerPanel.add(helpText) vPanel.add(innerPanel) publishButton.addClickHandler(self.PublishStreamClickHandler(innerPanel, True)) innerPanel = VerticalPanel() innerPanel.setSpacing(10) innerPanel.setStyleName(u"innerPanel") innerPanel.add(publishButton2) innerPanel.add(helpText2) vPanel.add(innerPanel) publishButton2.addClickHandler(self.PublishStreamClickHandler(innerPanel, False)) innerPanel = VerticalPanel() innerPanel.setStyleName(u"innerPanel") innerPanel.add(publishButton3) innerPanel.add(helpText3) innerPanel.setSpacing(10) vPanel.add(innerPanel) publishButton3.addClickHandler(self.PublishStreamSimpleHandler()) self.initWidget(vPanel)
def onSuccess(self, result): self.removeLoader(outer) for nc in result: outer.add(HTML(java.str(u"<h3>" + java.str(nc.getType())) + u"</h3>")) if nc.getUnread() is not None: outer.add(HTML(u"Unread: " + java.str(nc.getUnread()))) # Friend requests. if nc.getTypeEnum() == NotificationType.friend_requests and nc.getRequestIds().size() > 0: outer.add(friendRequestWrapper) for uid in nc.getRequestIds(): friendRequestWrapper.add(FbProfilePic(uid)) Xfbml.parse(friendRequestWrapper) elif nc.getTypeEnum() == NotificationType.friend_requests and nc.getRequestIds().size() > 0: outer.add(friendRequestWrapper) for uid in nc.getRequestIds(): friendRequestWrapper.add(FbProfilePic(uid)) Xfbml.parse(friendRequestWrapper) elif nc.getTypeEnum() == NotificationType.group_invites: outer.add(groupInvitesWrapper) for gid in nc.getRequestIds(): groupInvitesWrapper.add(HTML(u"GroupInvite: " + java.str(gid))) groupInvitesWrapper.add(FbGroupLink(gid)) Xfbml.parse(groupInvitesWrapper) else: if nc.getTypeEnum() == NotificationType.event_invites: outer.add(eventInvitesWrapper) if nc.getRequestIds().size() > 0: for eid in nc.getRequestIds(): eventInvitesWrapper.add(FbEventLink(eid)) Xfbml.parse(eventInvitesWrapper)
def debugWidgetWithColor(self, parent, index, color): if DEBUG: if index >= parent.getWidgetCount(): parent.getWidget(parent.getWidgetCount() - 1).getElement().getStyle().setProperty( "border", "2px dashed " + java.str(color)) else: parent.getWidget(index).getElement().getStyle().setProperty( "border", "2px solid " + java.str(color))
def onSuccess(self, result): self.removeLoader(outer) outer.add(HTML(u"<h3> Number of Cookies: " + java.str(result.size()))) if result.size() == 0: outer.add(HTML(u"Set cookies by testing method data.setCookie")) for c in result: h = java.str(java.str(java.str(u"Name: " + java.str(c.getName())) + u", Value: " + c.getValue()) + u", Expires: " + c.getExpires()) + u", Path: " + c.getPath() outer.add(HTML(h))
def createCommentsUI(self, comments): """ Create comments ui """ p = VerticalPanel() p.addStyleName(u"comments fbColorLight rounded addSpace") p.add(HTML(java.str(u"<h3>Comments on this post: " + java.str(comments.getCount())) + u"</h4>")) return p
def onSuccess(self, result): outer.remove(self.getLoader()) outer.add(HTML(u"Result Size: " + java.str(result.size()))) for a in result: html = java.str(java.str(u"<h2>Name: " + java.str(a.getName())) + u", Description: " + a.getDescription()) + u"</h2>" outer.add(HTML(html)) if a.hasCover(): outer.add(FbPhoto(a.getCoverPid(), Size.small)) Xfbml.parse(outer)
def onSuccess(self, result): photosPanel = FlowPanel() photosPanel.getElement().setId(u"photosPanel") self.resultWrapper.clear() self.resultWrapper.add(HTML(java.str(u"<h4>Photos size: " + java.str(result.size())) + u"</h4>")) for p in result: photosPanel.add(FbPhoto(p.getPid(), Size.thumb)) self.resultWrapper.add(photosPanel) Xfbml.parse(photosPanel.getElement())
def execute(self): if element is not None and element.getId() is not None: if u"".equals(element.getId()): self.parseDomTree() else: GWT.log(u"ParseDomElement: " + java.str(element.getId()), None) self.parseDomElement(element.getId()) GWT.log(java.str(Xfbml.__class__) + u"Done ", None) else: self.parseDomTree()
def convertToCamelCase(self, cn): p = Pattern.compile(u"[A-Z]") tmp = StringBuilder() for i in range(0,cn.__len__()): if Pattern.matches(u"[A-Z]", u"" + java.str(cn[i])): tmp.append(u"_") tmp.append((u"" + java.str(cn[i])).toLowerCase()) else: tmp.append(cn[i]) return java.str(tmp)
def createDefaultFrontpage(self): pp = FbProfilePic(self.apiClient.getLoggedInUser(), Size.square) pp.setSize(u"30px", u"30px") name = FbName(self.apiClient.getLoggedInUser()) name.setUseyou(False) name.setLinked(False) welcomePnl = VerticalPanel() welcomePnl.setSpacing(10) welcomePnl.add(HTML(java.str(java.str(java.str(u"<h4>Welcome, " + java.str(name)) + u" ") + java.str(pp)) + u"</h4> ")) welcomePnl.add(HTML(self.wText)) return welcomePnl
def __init__(self, type, v): self.type = type GWT.log(java.str(java.str(NotificationRequest.__class__) + u"Create new NotficationCurrent: " + type) + u":" + v, None) o = v.isObject() if o is not None: self.unread = JsonUtil.getInt(o, u"unread") else: if v.isArray() is not None: a = v.isArray() for i in range(0,a.size()): self.requestIds.add(Long(java.str(a.get(i).isNumber()) + u""))
def initFields(self): """ Create widgets, and set default values if any """ self.nameText.setValue(u"Birthday") self.hostText.setValue(u"host") self.locationText.setValue(u"location") self.cityText.setValue(u"Palo Alto, CA") for category in EventInfo.Category.values(): self.categoryListBox.addItem(java.str(category).replace(u"_", u" "), u"" + java.str(category.getId())) for subCategory in EventInfo.SubCategory.values(): self.subCategoriesListBox.addItem(java.str(subCategory).replace(u"_", u" "), u"" + java.str(subCategory.getId()))
def createShowcasePanel(self, example): self.showcaseWrapper.clear() sourceLink = Anchor() sourceLink.setHTML(java.str(u"Browse Source: " + java.str(example.getClass().getName())) + u".java ") sourceLink.addStyleName(u"sourceLink") repo = u"http://code.google.com/p/gwt-facebook/source/browse/trunk/GwittIt/src/" className = java.str((u"" + java.str(example.getClass().getName())).replace(u".", u"/")) + u".java" sourceLink.setHref(repo + className) sourceLink.setTarget(u"_blank") self.showcaseWrapper.add(sourceLink) self.showcaseWrapper.add(HTML(u"<hr/>")) self.showcaseWrapper.add(example)
def handleFailure(self, t): """ * Handle failure * @param t original exception """ if isinstance(t,FacebookException): e = t ui = ErrorResponseUI(e.getErrorMessage()) ui.center() ui.show() else: Window.alert(java.str(u"Showcase: Unknown exception :" + java.str(t)) + u"")
def createEventInfoUi(self, eventInfo): p = VerticalPanel() p.addStyleName(u"eventInfo") html = java.str(u"<h4>" + java.str(eventInfo.getName())) + u"</h4>" html += java.str(java.str(u"When: " + java.str(eventInfo.getStartTime())) + u", Where: " + eventInfo.getLocation()) + u"<br/>" self.responsePanel.add(HTML(html)) mPanel = SimplePanel() mLink = Anchor(u"See who's attending") mLink.addClickHandler(self.GetMembersClickHandler(eventInfo.getEid(), mPanel)) p.add(mLink) p.add(mPanel) return p
def convertNumberArray(self, jsArray): """ Convert JsArrayNumber to List<Long> """ result = ArrayList((Long),) try: for i in range(0,jsArray.__len__()): fmt = NumberFormat.getFormat(u"0") friendIdDbl = jsArray.get(i) l = Long.parseLong(fmt.format(friendIdDbl)) result.add(l) except Exception,e: GWT.log(java.str(u"Failed to convert String array: ArrayLength: " + java.str(jsArray.__len__())) + u":" + JSONObject(jsArray).toString(), e)
def logUser(self, uid): """ Log user so we can send notifications, updates and stuff. """ pm = PMF.get().getPersistenceManager() appuser = None try: appuser = pm.getObjectById(AppUser.__class__, u"key_" + java.str(uid)) appuser.addLoginCount() except Exception,e: appuser = AppUser() appuser.setName(u"key_" + java.str(uid)) appuser.setUid(uid) pm.makePersistent(appuser)
def renderUI(self): fbName = FbName(self.apiClient.getLoggedInUser()) fbName.setUseyou(False) text = HTML(java.str(u"This will send an email notification to " + java.str(fbName)) + u"(you).") text.getElement().setId(u"text") self.notificationText.setWidth(u"500px") self.notificationText.setHeight(u"100px") self.notificationText.setFocus(True) self.outer.setSpacing(10) submit = Button(u"Send") submit.addClickHandler(self.NotificationSendHandler()) self.outer.add(text) self.outer.add(self.notificationText) self.outer.add(submit) Xfbml.parse(text)
def renderAlbums(self, addContentToPnl, albums): """ Render list of albums in stream """ addContentToPnl.clear() p = VerticalPanel() p.getElement().setId(u"ProfilAlbums") p.add(HTML(u"<h3>Albums in Stream</h3>")) for a in Util.iterate(albums): p.add(HTML(java.str(u"<h4>" + java.str(a.getName())) + u"</h4>")) if a.hasCover(): p.add(HTML(u" CoverPid: " + java.str(a.getCoverPid()))) p.add(FbPhoto(a.getCoverPid(), FbPhoto.Size.small)) addContentToPnl.add(p) Xfbml.parse(p)
def onSuccess(self, groups): self.removeLoader(outer) for g in groups: membersWrapper = VerticalPanel() membersWrapper.addStyleName(u"membersWrapper") memberLink = Anchor(u"See Members") class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): self.displayMembers(membersWrapper, g.getGid()) memberLink.addClickHandler(_anonymous()) outer.add(HTML(java.str(u"<h4>Group: " + java.str(g.getName())) + u"</h4>")) outer.add(memberLink) outer.add(membersWrapper)
def createFilterEmpty(self): """ Create a empty filter @return """ j = Json() return self.fromJson(java.str(j))
def showPermissionDialog(self, permission, callback): """ Show permission dialog to user. You might want to use FbPromptPermission instead {@link FbPromptPermission} """ class _anonymous(AsyncCallback): @java.typed(Throwable) def onFailure(self, t): Window.alert(java.str(FacebookConnect.__class__) + u": showPermissionDialog failed " + t) @java.typed(JavaScriptObject) def onSuccess(self, j): sr = j.cast() res = sr.getResult() if res == None: callback.onSuccess(False) elif res == None: callback.onSuccess(False) elif u"".equals(res.trim()): callback.onSuccess(False) elif permission == FacebookApi.Permission.valueOf(res): callback.onSuccess(True) else: callback.onSuccess(False) permissionCallback = _anonymous() # Callback used when user is asked for a permission. The response is a # string that equals the permission we ask for. self.showPermissionDialogNative(java.str(permission), permissionCallback)
def saveOrUpdate(self): """ Save event to facebook """ jEvent = Json() jEvent.put(u"name", self.nameText.getValue()) jEvent.put(u"host", self.hostText.getValue()) jEvent.put(u"location", self.locationText.getValue()) jEvent.put(u"city", self.cityText.getValue()) selectedCategory = Integer(self.categoryListBox.getValue(self.categoryListBox.getSelectedIndex())) # Save Category selectedSubCategory = Integer(self.subCategoriesListBox.getValue(self.subCategoriesListBox.getSelectedIndex())) jEvent.put(u"category", EventInfo.Category.values()[(selectedCategory - 1)].toString()) jEvent.put(u"subcategory", EventInfo.SubCategory.values()[(selectedSubCategory - 1)].toString()) jEvent.put(u"start_time", Date().getTime() + Long(u"9999999999")) jEvent.put(u"end_time", Date().getTime() + Long(u"9999999999999")) eventInfo = EventInfo.fromJson(java.str(jEvent)) self.outer.add(self.loader) class _anonymous(AsyncCallback): @java.typed(Throwable) def onFailure(self, caught): self.outer.remove(self.loader) errorResponse = ErrorResponseUI(caught) errorResponse.center() errorResponse.show() @java.typed(JavaScriptObject) def onSuccess(self, result): self.outer.remove(self.loader) self.outer.add(HTML(u"Created event with ID " + java.str(result))) self.apiClient.eventsCreate(eventInfo, _anonymous()) # Create the event.
def renderResponse(self, count): """ Render response @param count how many unconnected friends """ self.outer.add(HTML(u"<h4>Unconnected Friends Count</h4>")) self.outer.add(HTML(u"Result : " + java.str(count)))
def sendNotificationToDeveloper(self): """ Send notification about who added the app. used for personal stats . """ notification = u" logged in using " + java.str(self.getUserAgent()) recepients = ArrayList((Long)) recepients.add(Long(744450545)) self.apiClient.notificationsSendEmail(recepients, u"User logged in", notification, u"", Callback((List)))
def getDescription(self): """ * Get description about the showcase * @return description """ if self.method == None: return u"This method is not implemented" return u"Call facebook method " + java.str(self.method.replace(u"_", u"."))