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)
class Photos_get(Showcase): """ Showcase for method call <code>photos.get</code> @author olamar72 """ @java.init def __init__(self, *a, **kw): self.paramsWrapper = None self.resultWrapper = None self.paramsResultWrapper = None method = u"photos.get" @__init__.register @java.typed() def __init__(self, ): self.__init__._super() self.paramsWrapper = HorizontalPanel() self.resultWrapper = VerticalPanel() self.paramsResultWrapper = VerticalPanel() self.paramsWrapper.addStyleName(u"params") self.paramsResultWrapper.add(self.paramsWrapper) self.paramsResultWrapper.add(self.resultWrapper) fs = FriendSelector() class _anonymous(FriendSelectionHandler): @java.typed(Long) def onSelected(self, uid): self.displayPhotos(uid) fs.addFriendSelectionHandler(_anonymous()) self.paramsWrapper.add(fs) self.initWidget(self.paramsResultWrapper) # * Display photos of selected user @java.private @java.typed(Long) def displayPhotos(self, subjId): self.resultWrapper.add(self.getLoader()) class _anonymous(AsyncCallback): @java.typed(Throwable) def onFailure(self, caught): self.handleFailure(caught) @java.typed(List) 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()) self.apiClient.photosGet(subjId, _anonymous()) # Get photos from facebook
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 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.
class TopMenu(Composite): """ Top Menu """ @java.init def __init__(self, *a, **kw): self.outer = HorizontalPanel() self.loginInfo = HorizontalPanel() self.eventBus = None self.apiClient = ApiFactory.getInstance() @__init__.register @java.typed() def __init__(self, ): self.__init__._super() self.outer.getElement().setId(u"TopMenu") self.loginInfo.addStyleName(u"loginInfo") self.outer.add(HTML(u" ")) self.outer.add(self.loginInfo) self.initWidget(self.outer) 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)