コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
 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
コード例 #4
0
 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)
コード例 #5
0
 def renderProfiles(self, addContentToPnl, profiles):
     """
     Render profiles in the stream
     """
     addContentToPnl.clear()
     addContentToPnl.add(HTML(u"<h3>Profiles in Strea</h3>"))
     for p in Util.iterate(profiles):
         tmp = FlowPanel() #  Split pic on the left, name on the right
         tmp.addStyleName(u"profiles fbColorLight rounded addSpace")
         tmp.add(Image(p.getPicSquare()))
         a = Anchor(p.getName()) #  Link to profile
         a.addStyleName(u"postContent")
         a.setHref(p.getUrl())
         tmp.add(a)
         addContentToPnl.add(tmp)
コード例 #6
0
 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)
コード例 #7
0
 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)
コード例 #8
0
 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.
コード例 #9
0
 def createAttachmentUI(self, attachment):
     """
     Create attachment UI
     """
     p = VerticalPanel()
     p.addStyleName(u"attachment fbColorLight rounded addSpace")
     p.add(HTML(u"<h3>Attachment</h3> "))
     thumbs = HorizontalPanel()
     thumbs.setSpacing(10)
     for m in Util.iterate(attachment.getMedia()):
         p.add(HTML(u"<b>MediaContent:</b> " + java.str(m.getType())))
         if m.getSrc() is not None:
             thumbs.add(Image(m.getSrc()))
         if m.getTypeEnum() == Type.video:
             vLink = Anchor(u"See Video")
             vLink.setHref(m.getVideo().getSourceUrl())
             p.add(vLink)
     p.add(thumbs)
     return p
コード例 #10
0
ファイル: TopMenu.py プロジェクト: pombredanne/pygwt-facebook
 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)
コード例 #11
0
 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)
コード例 #12
0
 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
コード例 #13
0
 def __init__(self, *a, **kw):
     self.outer = VerticalPanel()
     self.pics = FlowPanel()
     self.seeAllLink = Anchor(u"See All")
     self.PAGE_SIZE = 10
     self.uids = None
コード例 #14
0
 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)
コード例 #15
0
 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