class ProfilePicsPanel(Composite): """ Display Profile Pics in a panel. CSS Configuration. <ul> <li>.gwittit-ProfilePicsPanel <li>.gwittit-ProfilePicsPanel-pics </ul> """ @java.init def __init__(self, *a, **kw): self.outer = VerticalPanel() self.pics = FlowPanel() self.seeAllLink = Anchor(u"See All") self.PAGE_SIZE = 10 self.uids = None @__init__.register @java.typed(List) def __init__(self, uids): self.__init__._super() """ Create a new Panel """ self.uids = uids self.outer.getElement().setId(u"ProfilePicsPanel") self.pics.getElement().setId(u"ProfilePicsPanel-pics-" + java.str(System.currentTimeMillis())) self.outer.addStyleName(u"gwittit-ProfilePicsPanel") self.pics.addStyleName(u"gwittit-ProfilePicsPanel-pics") self.outer.add(self.pics) self.renderProfilePics() # Add list of fbprofilepics to the pics panel if uids.size() > PAGE_SIZE: self.outer.add(self.seeAllLink) class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): popup = ProfilePicsPopup(uids) popup.center() popup.show() self.seeAllLink.addClickHandler(_anonymous()) Xfbml.parse(self.pics) self.initWidget(self.outer) @java.private def renderProfilePics(self): i = 0 while i < PAGE_SIZE and i < self.uids.size(): i+= 1 uid = self.uids.get(i) profilePic = FbProfilePic(uid, Size.square) profilePic.setWidth(u"35px") profilePic.setHeight(u"35px") self.pics.add(profilePic)
class LoginBox(Composite): """ Displays a rounded box ( firefox/safari ) with at facebook connect button. And a link as backup in case the button is not rendered. """ @java.init def __init__(self, *a, **kw): self.outer = VerticalPanel() self.inner = HorizontalPanel() self.loginButton = FbLoginButton(u"facebookConnectLogin()") self.loginLink = Anchor(u"don't see a button? Click here to login") self.loginCallback = None @java.typed(LoginCallback) def addLoginCallback(self, loginCallback): self.loginCallback = loginCallback @__init__.register @java.typed() def __init__(self, ): self.__init__._super() self.outer.getElement().setId(u"OuterRouter") class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): class _anonymous(AsyncCallback): @java.typed(Throwable) def onFailure(self, caught): GWT.log(u"Require session failed: " + java.str(caught)) @java.typed(Boolean) def onSuccess(self, isLoggedIn): if self.loginCallback is not None and isLoggedIn: self.loginCallback.onLogin() FacebookConnect.requireSession(_anonymous()) self.loginLink.addClickHandler(_anonymous()) # Login with the javascript api. GWT client doesnt render the fb:login-button self.outer.getElement().setId(u"LoginBox") self.inner.addStyleName(u"inner") self.outer.add(HTML(u"<h1>Login with your facebook id: </h1>")) self.outer.add(HTML(u"This demo uses facebook data heavily to demonstrate API calls etc so you might as well login right away")) self.inner.setSpacing(10) self.inner.add(HTML(u"Click the button to allow this application to access your facebook account")) self.inner.add(self.loginButton) self.outer.add(self.inner) self.outer.add(self.loginLink) sourceCode = HTML(u"<br/><br/>This project on Gogle code : <a target=_blank href=\"http://code.google.com/p/gwt-facebook/\"> http://code.google.com/p/gwt-facebook/ </a>") sourceCode.addStyleName(u"sourceCode") self.outer.setWidth(u"400px") self.outer.add(sourceCode) Xfbml.parse(self.outer) self.initWidget(self.outer)
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 handleCommentsResponse(self, comments): for comment in comments: box = VerticalPanel() box.addStyleName(u"commentBox") p = HorizontalPanel() p.setSpacing(5) p.add(FbProfilePic(comment.getFromId(), Size.square)) p.add(HTML(java.str(comment.getText()) + u" from " + FbName(comment.getFromId()))) box.add(p) removeLink = Anchor(u"Remove") removeLink.addClickHandler(self.CommentsRemoveClickHandler(comment.getId())) box.add(removeLink) self.outer.add(box) Xfbml.parse(self.outer)
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 renderLoginInfo(self): self.loginInfo.clear() uid = self.apiClient.getLoggedInUser() fbName = FbName(uid, False) fbName.setUseyou(False) pic = FbProfilePic(uid, FbProfilePic.Size.square) pic.setSize(u"15px", u"15px") GWT.log(u"TopMenu: render " + java.str(fbName), None) self.loginInfo.add(fbName) tmp = SimplePanel() tmp.addStyleName(u"miniProfilePic") tmp.setWidget(pic) self.loginInfo.add(tmp) logout = Anchor(u"Logout") class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): FacebookConnect.logoutAndRedirect(u"/") logout.addClickHandler(_anonymous()) self.loginInfo.add(logout)
def onSuccess(self, result): self.removeLoader(outer) outer.add(HTML(u"Result Size " + java.str(result.size()))) for no in result: tmp = VerticalPanel() tmp.addStyleName(u"notification") tmp.add(HTML(java.str(u"<h3>" + java.str(no.getTitleText())) + u"</h3>")) tmp.add(HTML(no.getBodyHtml())) tmp.add(HTML(no.getHref())) if not no.getIsUnread(): tmp.add(HTML(u"Status : Old")) markRead = Anchor(u"Mark as Read") class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): markRead.setHTML(u"Marked as Read") markRead(no.getNotificationId()) markRead.addClickHandler(_anonymous()) tmp.add(markRead) outer.add(tmp)
def createShowPermissionUI(self, permission): a = Anchor() if self.message is not None: a.setHTML(java.str(u"<h3>" + java.str(self.message)) + u"</h3>") else: a.setHTML(java.str(u"<h3>Grant " + java.str(permission)) + u" permission</h3>") a.addStyleName(u"clickable") class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): class _anonymous(AsyncCallback): @java.typed(Throwable) def onFailure(self, caught): ErrorResponseUI(caught).center() @java.typed(Boolean) def onSuccess(self, result): if self.handler is not None: self.handler.onPermissionChange(result) FacebookConnect.showPermissionDialog(permission, _anonymous()) a.addClickHandler(_anonymous()) return a
def renderMainContent(self, addContentToPnl): """ Render when user granted us permission to read stream """ streamBody = VerticalPanel() streamBody.getElement().setId(u"streamBody") menu = HorizontalPanel() menu.addStyleName(u"streamMenu") menu.setSpacing(5) postsLink = Anchor(u"Posts") # Create menu profilesLink = Anchor(u"Profiles") albumsLink = Anchor(u"Albums") menu.add(HTML(u"<b> Choose Stream : </b> ")) menu.add(postsLink) menu.add(albumsLink) menu.add(profilesLink) class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): self.renderPosts(streamBody, self.stream.getPosts()) Xfbml.parse(streamBody) postsLink.addClickHandler(_anonymous()) # Click posts link class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): streamBody.clear() self.renderProfiles(streamBody, self.stream.getProfiles()) profilesLink.addClickHandler(_anonymous()) # Click profiles link class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): self.renderAlbums(streamBody, self.stream.getAlbums()) albumsLink.addClickHandler(_anonymous()) # Click album links addContentToPnl.add(streamBody) self.addLoader(streamBody) # Start loading class _anonymous(AsyncCallback): @java.typed(Throwable) def onFailure(self, caught): self.handleFailure(caught) @java.typed(Stream) def onSuccess(self, result): self.stream = result addContentToPnl.insert(menu, 0) self.removeLoader(streamBody) self.renderPosts(streamBody, result.getPosts()) Xfbml.parse(streamBody) self.apiClient.streamGet(_anonymous()) # Get stream from facebook.
def onSuccess(self, noteId): p.add(HTML(u"Added note with id " + java.str(noteId))) deleteNoteLink = Anchor(u"Delete") deleteNoteLink.addClickHandler(self.DeleteNoteClickHandler(noteId)) p.add(deleteNoteLink)