Ejemplo n.º 1
0
class ProfilePicsPopup(DecoratedPopupPanel):

    """
    Let user browse a user list in a popup.
    
    CSS Configuration
    
    <ul>
    <li>.gwittit-ProfilePicsPopup
    <li>.gwittit-ProfilePicsPopup-content
    <li>.gwittit-ProfilePicsPopup-moreButton
    </ul>
    """
    
    @java.init
    def __init__(self, *a, **kw):
        self.outer = VerticalPanel()
        self.scrollPanel = ScrollPanel()
        self.picsHolder = VerticalPanel()
        self.PAGE_SIZE = 30
        self.page = 0
        self.moreButton = Button(u"More")
        self.uids = None
    
    @__init__.register
    @java.typed(List)
    def __init__(self, uids):
        self.__init__._super()
        self.uids = uids
        super(self.__class__,self).setAutoHideEnabled(True)
        self.outer.addStyleName(u"gwittit-ProfilePicsPopup")
        self.moreButton.addStyleName(u"gwittit-ProfilePicsPopup-moreButton")
        self.scrollPanel.addStyleDependentName(u"gwittit-ProfilePicsPopup-scrollPanel") #  ScrollPanel
        self.scrollPanel.setWidth(u"400px")
        self.scrollPanel.setHeight(u"500px")
        self.outer.getElement().setId(u"gwittit-ProfilePicsPopup-content") #  Main Content
        self.outer.addStyleName(u"gwittit-ProfilePicsPopup-content")
        self.displayUsers(self.picsHolder, self.page)
        self.outer.add(self.picsHolder) #  Compile Panels
        self.outer.add(self.moreButton)
        self.scrollPanel.add(self.outer)
        super(self.__class__,self).setWidget(self.scrollPanel)
        Xfbml.parse(self.outer)
        class _anonymous(ClickHandler):
            
            @java.typed(ClickEvent)
            def onClick(self, event):
                self.displayUsers(self.picsHolder, self.page+= 1)
        self.moreButton.addClickHandler(_anonymous()) #  Add Clickhandler that enables user to browse list
    
    @java.private
    @java.typed(VerticalPanel, int)
    def displayUsers(self, picsList, page):
        startIdx = page * PAGE_SIZE
        stopIdx = startIdx + (PAGE_SIZE - 1)
        holder = VerticalPanel()
        holder.getElement().setId(u"ProfilePics-Page_" + java.str(page))
        i = startIdx
        while i < self.uids.size() and i < stopIdx:
            i+= 1
            uid = self.uids.get(i)
            wrapper = HorizontalPanel()
            wrapper.setSpacing(10)
            profilePic = FbProfilePic(uid, Size.square)
            name = FbName(uid)
            wrapper.add(profilePic)
            wrapper.add(name)
            holder.add(wrapper)
        picsList.add(holder)
        Xfbml.parse(holder)
Ejemplo n.º 2
0
class ErrorResponseUI(DecoratedPopupPanel):

    """
    Wraps an errorresponse from facebook
    
    Css Configuration
    
    <ul>
    <li>gwittit-ErrorResponse
    <li>gwittit-ErrorResponse-header
    <li>gwittit-ErrorResponse-userData
    <li>gwittit-ErrorResponse-requestArgs
    <li>gwittit-ErrorResponse .closeButton
    </ul>
    """
    
    @java.init
    def __init__(self, *a, **kw):
        self.outer = VerticalPanel()
        self.userDataPanel = VerticalPanel()
        self.requestArgsPanel = VerticalPanel()
        self.closeButton = Button(u"Okay")
    
    @__init__.register
    @java.typed(Throwable)
    def __init__(self, t):
        self((t).getErrorMessage()) ##AltConstrInv
        """
        Create new UI object
        @param t original exception
        """
    
    @__init__.register
    @java.typed(ErrorResponse)
    def __init__(self, errorResponse):
        self.__init__._super()
        """
        Create new UI error response
        @param errorResponse original error response
        """
        super(self.__class__,self).setAutoHideEnabled(True)
        msg = errorResponse.getMessage()
        #  Check if the call resulted in an invalid session state.
        if msg.matches(u".*Invalid session.*"):
            msg = u"You must be logged in to do that..."
        self.outer.setWidth(u"600px")
        self.outer.addStyleName(u"gwittit-ErrorResponse") #  Css
        self.userDataPanel.addStyleName(u"gwittit-ErrorResponse-userData")
        self.requestArgsPanel.addStyleName(u"gwittit-ErrorResponse-requestArgs")
        self.closeButton.addStyleName(u"closeButton")
        self.outer.add(HTML(java.str(u"<h3 class=gwittit-ErrorResponse-header> Error Response: " + java.str(msg)) + u"</h3>")) #  Header
        userData = errorResponse.getUserData() #  User Data
        if userData is not None:
            userDataHtml = java.str(java.str(java.str(u"<h3>User Data </h3>" + u"<ul>") + u"<li>ErrorCode: " + userData.getErrorCode()) + u"<li>ErrorMessage: " + userData.getErrorMsg()) + u"</li>"
            self.userDataPanel.add(HTML(userDataHtml))
            self.outer.add(self.userDataPanel)
        requestArgs = userData.getRequestArgs() #  Request Args
        if requestArgs.__len__() > 0:
            self.requestArgsPanel.add(HTML(u"<h3> Request Args </h3>"))
            self.requestArgsPanel.add(HTML(u"<ul>"))
            for i in range(0,requestArgs.__len__()):
                self.requestArgsPanel.add(HTML(java.str(u"<li> " + java.str(requestArgs.get(i).getKey())) + u": " + requestArgs.get(i).getValue()))
            self.requestArgsPanel.add(HTML(u"</ul>"))
            self.outer.add(self.requestArgsPanel)
        class _anonymous(ClickHandler):
            
            @java.typed(ClickEvent)
            def onClick(self, event):
                ErrorResponseUI.self###NOTIMPL QThis###.hide()
        self.closeButton.addClickHandler(_anonymous()) #  Close Button
        self.outer.add(self.closeButton)
        self.setWidget(self.outer)