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)
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)