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
 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)
Пример #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