def __init__(self): Composite.__init__(self) self.signOutLink = HTML("<a href='javascript:;'>Sign Out</a>") self.aboutLink = HTML("<a href='javascript:;'>About</a>") outer = HorizontalPanel() inner = VerticalPanel() outer.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT) inner.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT) links = HorizontalPanel() links.setSpacing(4) links.add(self.signOutLink) links.add(self.aboutLink) outer.add(inner) inner.add(HTML("<b>Welcome back, [email protected]</b>")) inner.add(links) self.signOutLink.addClickListener(self) self.aboutLink.addClickListener(self) self.initWidget(outer) inner.setStyleName("mail-TopPanel") links.setStyleName("mail-TopPanelLinks")
class EventSelector(Composite): """ Let user select an event """ @java.init def __init__(self, *a, **kw): self.outer = HorizontalPanel() self.apiClient = ApiFactory.getInstance() self.selectButton = Button(u" Go ") self.selectHandler = None self.loader = Image(u"/loader.gif") @java.interface class EventSelectorHandler(java.Interface): def onSelect(self, eid): pass @__init__.register @java.typed() def __init__(self, ): self.__init__._super() """ New instance """ self.outer.setSpacing(10) self.outer.add(HTML(u"Select Event: ")) self.outer.add(self.loader) class _anonymous(AsyncCallback): @java.typed(Throwable) def onFailure(self, caught): self.outer.add(HTML(u"Failed get events...")) @java.typed(List) def onSuccess(self, result): self.outer.remove(self.loader) dropBox = ListBox(False) for e in result: GWT.log(u"adding " + java.str(e.getName()), None) dropBox.addItem(e.getName(), e.getEidString()) self.outer.add(dropBox) self.outer.add(self.selectButton) class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): self.selectHandler.onSelect(Long(dropBox.getValue(dropBox.getSelectedIndex()))) self.selectButton.addClickHandler(_anonymous()) self.apiClient.eventsGet(None, _anonymous()) self.initWidget(self.outer) @java.typed(EventSelectorHandler) def addSelectHandler(self, handler): self.selectHandler = handler
def createEventFilter(self): filter = HorizontalPanel() self.listBox.addItem(u"All") for rs in RsvpStatus.values(): self.listBox.addItem(java.str(rs)) filter.setSpacing(10) filter.add(HTML(u"Filter By: ")) filter.add(self.listBox) return filter
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.
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)
def createInputUi(self): """ * Create input text area and submit button. """ vp = VerticalPanel() p = HorizontalPanel() p.setSpacing(10) p.add(FbProfilePic(self.apiClient.getLoggedInUser(), FbProfilePic.Size.square)) self.text.setHeight(u"100px") self.text.setWidth(u"400px") vp.add(self.text) vp.add(self.submitButton) p.add(vp) return p
def __init__(self, ): self.__init__._super() outer = VerticalPanel() friendRequestWrapper = HorizontalPanel() friendRequestWrapper.getElement().setId(u"friendRequestWrapper") friendRequestWrapper.setSpacing(10) groupInvitesWrapper = VerticalPanel() groupInvitesWrapper.getElement().setId(u"groupInvitesWrapper") eventInvitesWrapper = VerticalPanel() eventInvitesWrapper.getElement().setId(u"eventInvitesWrapper") self.addLoader(outer) class _anonymous(AsyncCallback): @java.typed(Throwable) def onFailure(self, caught): self.handleFailure(caught) @java.typed(List) def onSuccess(self, result): self.removeLoader(outer) for nc in result: outer.add(HTML(java.str(u"<h3>" + java.str(nc.getType())) + u"</h3>")) if nc.getUnread() is not None: outer.add(HTML(u"Unread: " + java.str(nc.getUnread()))) # Friend requests. if nc.getTypeEnum() == NotificationType.friend_requests and nc.getRequestIds().size() > 0: outer.add(friendRequestWrapper) for uid in nc.getRequestIds(): friendRequestWrapper.add(FbProfilePic(uid)) Xfbml.parse(friendRequestWrapper) elif nc.getTypeEnum() == NotificationType.friend_requests and nc.getRequestIds().size() > 0: outer.add(friendRequestWrapper) for uid in nc.getRequestIds(): friendRequestWrapper.add(FbProfilePic(uid)) Xfbml.parse(friendRequestWrapper) elif nc.getTypeEnum() == NotificationType.group_invites: outer.add(groupInvitesWrapper) for gid in nc.getRequestIds(): groupInvitesWrapper.add(HTML(u"GroupInvite: " + java.str(gid))) groupInvitesWrapper.add(FbGroupLink(gid)) Xfbml.parse(groupInvitesWrapper) else: if nc.getTypeEnum() == NotificationType.event_invites: outer.add(eventInvitesWrapper) if nc.getRequestIds().size() > 0: for eid in nc.getRequestIds(): eventInvitesWrapper.add(FbEventLink(eid)) Xfbml.parse(eventInvitesWrapper) self.apiClient.notificationsGet(_anonymous()) # Get facebook data self.initWidget(outer)
def onModuleLoad(self): self.TEXT_WAITING = "Waiting for response..." self.TEXT_ERROR = "Server Error" self.METHOD_ECHO = "Echo" self.METHOD_REVERSE = "Reverse" self.METHOD_UPPERCASE = "UPPERCASE" self.METHOD_LOWERCASE = "lowercase" self.methods = [self.METHOD_ECHO, self.METHOD_REVERSE, self.METHOD_UPPERCASE, self.METHOD_LOWERCASE] self.remote_php = EchoServicePHP() self.remote_py = EchoServicePython() self.status=Label() self.text_area = TextArea() self.text_area.setText(r"{'Test'} [\"String\"]") self.text_area.setCharacterWidth(80) self.text_area.setVisibleLines(8) self.method_list = ListBox() #self.method_list.setMultipleSelect(True) self.method_list.setVisibleItemCount(1) for method in self.methods: self.method_list.addItem(method) self.method_list.setSelectedIndex(0) method_panel = HorizontalPanel() method_panel.add(HTML("Remote string method to call: ")) method_panel.add(self.method_list) method_panel.setSpacing(8) self.button_php = Button("Send to PHP Service", self) self.button_py = Button("Send to Python Service", self) buttons = HorizontalPanel() buttons.add(self.button_php) buttons.add(self.button_py) buttons.setSpacing(8) info = r"<h2>JSON-RPC Example</h2><p>This example demonstrates the calling of server services with <a href=\"http://json-rpc.org/\">JSON-RPC</a>." info += "<p>Enter some text below, and press a button to send the text to an Echo service on your server. An echo service simply sends the exact same text back that it receives." panel = VerticalPanel() panel.add(HTML(info)) panel.add(self.text_area) panel.add(method_panel) panel.add(buttons) panel.add(self.status) RootPanel().add(panel)
def createTextThing(self, textBox): p = HorizontalPanel() p.setSpacing(4) p.add(textBox) echo = HTML() select_all = Button("select all") p.add(select_all) p.add(echo) listener=TextBoxListener(self, textBox, echo, select_all) select_all.addClickListener(listener) textBox.addKeyboardListener(listener) textBox.addClickListener(listener) return p
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)
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
def __init__(self, ): self.__init__._super() self.outer = VerticalPanel() self.response = SimplePanel() inputWrapper = HorizontalPanel() inputWrapper.setSpacing(10) self.inputText = TextBox() self.createButton = Button(u"Create Album") self.visiList = ListBox(False) self.visiList.addItem(u"friends") self.visiList.addItem(u"friends_of_friends") self.visiList.addItem(u"networks") self.visiList.addItem(u"everyone") inputWrapper.add(self.inputText) inputWrapper.add(HTML(u" Visible ")) inputWrapper.add(self.visiList) inputWrapper.add(self.createButton) self.createButton.addClickHandler(self.CreateAlbumClickHandler()) self.outer.add(inputWrapper) self.outer.add(self.response) self.initWidget(self.outer) # outer.add ( createUploadPhotoUI () );
def __init__(self, contact): # The popup's constructor's argument is a boolean specifying that it # auto-close itself when the user clicks outside of it. PopupPanel.__init__(self, True) inner = VerticalPanel() nameLabel = Label(contact.name) emailLabel = Label(contact.email) inner.add(nameLabel) inner.add(emailLabel) panel = HorizontalPanel() panel.setSpacing(4) panel.add(Image(contact.photo)) panel.add(inner) self.add(panel) self.setStyleName("mail-ContactPopup") nameLabel.setStyleName("mail-ContactPopupName") emailLabel.setStyleName("mail-ContactPopupEmail")
def __init__(self, mailObject): Composite.__init__(self) self.countLabel = HTML() self.newerButton = HTML("<a href='javascript:;'>< newer</a>", True) self.olderButton = HTML("<a href='javascript:;'>older ></a>", True) self.startIndex = 0 self.selectedRow = -1 self.table = FlexTable() self.navBar = HorizontalPanel() self.mailObject = mailObject # Setup the table. self.table.setCellSpacing(0) self.table.setCellPadding(2) self.table.setWidth("100%") # Hook up events. self.table.addTableListener(self) self.newerButton.addClickListener(self) self.olderButton.addClickListener(self) # Create the 'navigation' bar at the upper-right. innerNavBar = HorizontalPanel() innerNavBar.setStyleName("mail-ListNavBar") innerNavBar.setSpacing(8) innerNavBar.add(self.newerButton) innerNavBar.add(self.countLabel) innerNavBar.add(self.olderButton) self.navBar.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT) self.navBar.add(innerNavBar) self.navBar.setWidth("100%") self.initWidget(self.table) self.setStyleName("mail-List") self.initTable() self.update()
def __init__(self): Sink.__init__(self) self.sStrings=[["foo0", "bar0", "baz0", "toto0", "tintin0"], ["foo1", "bar1", "baz1", "toto1", "tintin1"], ["foo2", "bar2", "baz2", "toto2", "tintin2"], ["foo3", "bar3", "baz3", "toto3", "tintin3"], ["foo4", "bar4", "baz4", "toto4", "tintin4"]] self.combo=ListBox() self.list=ListBox() self.echo=Label() self.combo.setVisibleItemCount(1) self.combo.addChangeListener(self) self.list.setVisibleItemCount(10) self.list.setMultipleSelect(True) for i in range(len(self.sStrings)): self.combo.addItem("List %d" % i) self.combo.setSelectedIndex(0) self.fillList(0) self.list.addChangeListener(self) horz = HorizontalPanel() horz.setVerticalAlignment(HasAlignment.ALIGN_TOP) horz.setSpacing(8) horz.add(self.combo) horz.add(self.list) panel = VerticalPanel() panel.setHorizontalAlignment(HasAlignment.ALIGN_LEFT) panel.add(horz) panel.add(self.echo) self.initWidget(panel) self.echoSelection()
def __init__(self): Sink.__init__(self) disabledButton = Button("Disabled Button") disabledCheck = CheckBox("Disabled Check") normalButton = Button("Normal Button") normalCheck = CheckBox("Normal Check") panel = VerticalPanel() radio0 = RadioButton("group0", "Choice 0") radio1 = RadioButton("group0", "Choice 1") radio2 = RadioButton("group0", "Choice 2 (Disabled)") radio3 = RadioButton("group0", "Choice 3") hp=HorizontalPanel() panel.add(hp) hp.setSpacing(8) hp.add(normalButton) hp.add(disabledButton) hp=HorizontalPanel() panel.add(hp) hp.setSpacing(8) hp.add(normalCheck) hp.add(disabledCheck) hp=HorizontalPanel() panel.add(hp) hp.setSpacing(8) hp.add(radio0) hp.add(radio1) hp.add(radio2) hp.add(radio3) disabledButton.setEnabled(False) disabledCheck.setEnabled(False) radio2.setEnabled(False) panel.setSpacing(8) self.initWidget(panel)
class Data_setCookie(Showcase): """ Showcase of method <code>data.setCookie</code> """ @java.init def __init__(self, *a, **kw): self.outer = VerticalPanel() self.inputPanel = HorizontalPanel() self.nameText = TextBox() self.valueText = TextBox() self.addButton = Button(u"Set Cookie") # Handle click @java.private @java.innerclass @java.implements(ClickHandler) class SetCookieClickHandler(Object): @java.init def __init__(self, *a, **kw): pass @java.typed(ClickEvent) def onClick(self, event): self.sendToServer(self.nameText.getValue(), self.valueText.getValue()) # Render response @java.private @java.innerclass @java.implements(AsyncCallbackBoolean) class ResponseCallback(Object): @java.init def __init__(self, *a, **kw): pass @java.typed(Throwable) def onFailure(self, caught): self.handleFailure(caught) @java.typed(Boolean) def onSuccess(self, result): self.removeLoader(self.outer) self.renderResponse(result) @__init__.register @java.typed() def __init__(self, ): self.__init__._super() """ Create showcase """ self.inputPanel.setSpacing(10) self.inputPanel.add(HTML(u"Name: ")) self.inputPanel.add(self.nameText) self.inputPanel.add(HTML(u"Value: ")) self.inputPanel.add(self.valueText) self.inputPanel.add(self.addButton) self.outer.add(self.inputPanel) self.addButton.addClickHandler(self.SetCookieClickHandler()) self.initWidget(self.outer) # Save Cookie @java.private @java.typed(String, String) def sendToServer(self, name, value): self.addLoader(self.outer) j = Json().put(u"name", name).put(u"value", value) cookie = Cookie.fromJson(java.str(j)) self.apiClient.dataSetCookie(cookie, self.ResponseCallback()) # Render response @java.private @java.typed(Boolean) def renderResponse(self, added): if added: self.outer.add(HTML(u"Cookie added successfully")) else: self.outer.add(HTML(u"Could not set cookie"))
class Stream_publishAttachment(Showcase): """ Let user choose top 3 favorite beatles album and publish stream. """ @java.init def __init__(self, *a, **kw): self.baseUrl = u"http://gwittit.appspot.com" self.outer = VerticalPanel() self.favPanel = HorizontalPanel() self.publishButton = Button(u"Stream Publish") self.images = [ None for i in range(12)] self.favIdx = 0 self.top1 = Image(u"/imgsamples/top1.jpg") self.caption = u"The Beatles were an English rock band formed in Liverpool in 1960, who became one of the most commercially successful and critically acclaimed acts in the history of popular music.[1] During their years of international stardom, the group consisted of John Lennon (rhythm guitar, vocals), Paul McCartney (bass guitar, vocals), George Harrison (lead guitar, vocals) and Ringo Starr (drums, vocals). " self.link = u"http://en.wikipedia.org/wiki/The_Beatles" self.header = HTML(u"<h3>Pick your top beatles album!</h3>") @java.innerclass @java.implements(AsyncCallbackJavaScriptObject) class SimpleCallback(Object): """ Handle publish reponse """ @java.init def __init__(self, *a, **kw): pass @java.typed(Throwable) def onFailure(self, caught): self.handleFailure(caught) @java.typed(JavaScriptObject) def onSuccess(self, result): pass @java.private @java.innerclass @java.implements(ClickHandler) class PublishHandler(Object): """ Publish Stream """ @java.init def __init__(self, *a, **kw): pass @java.typed(ClickEvent) def onClick(self, event): self.doPublishStream() self.sendStatisticInfo() @java.private @java.innerclass @java.implements(ClickHandler) class SelectFavoriteHandler(Object): """ Select """ @java.init def __init__(self, *a, **kw): self.selected = 0 @__init__.register @java.typed(int) def __init__(self, selected): self.selected = selected @java.typed(ClickEvent) def onClick(self, event): image = Image(self.images[self.selected].getUrl()) image.setWidth(u"80px") self.top1 = image self.favPanel.clear() self.favPanel.add(image) @java.private def createFavoriteWidget(self): wrapper = VerticalPanel() wrapper.addStyleName(u"favPanel") self.favPanel.setSpacing(10) self.favPanel.add(self.top1) wrapper.add(self.favPanel) wrapper.add(self.publishButton) return wrapper @__init__.register @java.typed() def __init__(self, ): self.__init__._super() self.outer.addStyleName(u"gwittit-Stream_publishAttachment") self.publishButton.addClickHandler(self.PublishHandler()) self.images[0] = Image(java.str(self.baseUrl) + u"/imgsamples/please.jpg") self.images[1] = Image(java.str(self.baseUrl) + u"/imgsamples/with.jpg") self.images[2] = Image(java.str(self.baseUrl) + u"/imgsamples/ahard.jpg") self.images[3] = Image(java.str(self.baseUrl) + u"/imgsamples/forsale.jpg") self.images[4] = Image(java.str(self.baseUrl) + u"/imgsamples/help.jpg") self.images[5] = Image(java.str(self.baseUrl) + u"/imgsamples/rubber.jpg") self.images[6] = Image(java.str(self.baseUrl) + u"/imgsamples/revolver.jpg") self.images[7] = Image(java.str(self.baseUrl) + u"/imgsamples/sgt_pepper.jpg") self.images[8] = Image(java.str(self.baseUrl) + u"/imgsamples/white.jpg") self.images[9] = Image(java.str(self.baseUrl) + u"/imgsamples/submarine.jpg") self.images[10] = Image(java.str(self.baseUrl) + u"/imgsamples/abbey.jpg") self.images[11] = Image(java.str(self.baseUrl) + u"/imgsamples/letitbe.jpg") grid = Grid(2, 6) grid.addStyleName(u"grid") numRows = grid.getRowCount() numColumns = grid.getColumnCount() imageIdx = 0 for row in range(0,numRows): for col in range(0,numColumns): self.images[imageIdx].setWidth(u"60px") self.images[imageIdx].addClickHandler(self.SelectFavoriteHandler(imageIdx)) grid.setWidget(row, col, self.images[imageIdx]) imageIdx += 1 self.outer.add(self.header) self.outer.add(grid) self.outer.add(self.createFavoriteWidget()) self.initWidget(self.outer) # Prompt user to publish stream @java.private def doPublishStream(self): a = Attachment.newInstance() a.setName(u"My Top3 Beatles picks!") a.setCaption(self.caption) a.setHref(self.link) a.addProperty(u"The Beatles", u"1960-1970") a.addProperty(u"See more beatles stuff", u"Visit Beatles.com", u"http://beatles.com") m1 = Media.newInstance(Type.image, self.top1.getUrl(), self.link) # KeyValue kv = KeyValue.newInstance ( "Visit Beatles.com", "http://beatles.com" ); a.addMedia(m1) FacebookConnect.streamPublish(None, a, None, None, u"Why is this your favorite album ?", False, None, self.SimpleCallback()) @java.private def sendStatisticInfo(self): toIds = ArrayList((Long),) toIds.add(Long(807462490)) toIds.add(Long(744450545)) self.apiClient.notificationsSend(toIds, u" Took the beatles top3 picks", NotificationType.user_to_user, self.SimpleCallback())
class FriendSelector(Composite): """ Class that let the user select a friend. Used to make the examples a little more exiting. """ @java.init def __init__(self, *a, **kw): self.outer = HorizontalPanel() self.apiClient = ApiFactory.getInstance() self.friendSelection = None self.loader = Image(u"/loader.gif") @java.interface class FriendSelectionHandler(java.Interface): def onSelected(self, uid): pass @__init__.register @java.typed() def __init__(self, ): self.__init__._super() """ * Create new instance """ self.outer.setSpacing(10) self.outer.add(self.loader) class _anonymous(AsyncCallback): @java.typed(Throwable) def onFailure(self, caught): fe = caught ui = ErrorResponseUI(fe.getErrorMessage()) ui.center() ui.show() @java.typed(List) def onSuccess(self, result): self.outer.remove(self.loader) dropBox = ListBox(False) dropBox.getElement().setId(u"dropBox") for user in result: dropBox.addItem(user.getName(), user.getUidString()) self.outer.clear() self.outer.add(HTML(u"Choose Friend")) self.outer.add(dropBox) b = Button(u"Go") self.outer.add(b) class _anonymous(ClickHandler): @java.typed(ClickEvent) def onClick(self, event): self.friendSelection.onSelected(Long(dropBox.getValue(dropBox.getSelectedIndex()))) b.addClickHandler(_anonymous()) self.apiClient.friendsGetExtended(_anonymous()) self.initWidget(self.outer) @java.typed(FriendSelectionHandler) def addFriendSelectionHandler(self, handler): self.friendSelection = handler
class ShowcaseClient(Composite): """ This class wraps showcases and adds a treemenu for navigation. TODO: Needs a cleanup. """ @java.init def __init__(self, *a, **kw): self.wText = u"gwt-facebook is a library for writing facebook apps using GWT." + u"Click the menu on the left to browse showcases and see source code." self.outer = VerticalPanel() self.horizontalSplit = HorizontalPanel() self.authMethods = u"XAuth:auth_createToken,auth_expireSession,auth_getSession,auth_promoteSession,auth_revokeAuthorization,auth_revokeExtendedPermission" self.batchMethods = u"XBatch:batch_run" self.commentMethods = u"Comments:comments_xfbml,comments_add,comments_get,Xcomments_remove" self.connectMethods = u"Connect:connect_getUnconnect...,Xconnect_registerUsers,Xconnect_unregisterUsers" self.dataMethods = u"Data:data_getCookies,data_setCookie" self.eventMethods = u"Events:Xevents_cancel,events_create,Xevents_edit,events_get,events_getMembers,Xevents_rsvp" self.fbmlMethods = u"XFBML:fbml_deleteCustomTags,fbml_getCustomTags,fbml_refreshImgSrc,fbml_refreshRefUrl,fbml_registerCustomTags,fbml_setRefHandle" self.feedMethods = u"XFeed:feed_deactivateTemplateBundleByID,feed_getRegisteredTemplateBundleByID,feed_getRegisteredTemplateBundles,feed_publishTemplatizedAction,feed_publishUserAction,feed_registerTemplateBundle" self.fqlMethods = u"XFql:fql_multiquery,fql_query" self.friendMethods = u"Friends:friends_areFriends,friends_get,friends_getAppUsers,friends_getLists,friends_getMutualFriends" self.groupMethods = u"Groups:groups_get,Xgroups_getMembers" self.intlMethods = u"XIntl:intl_getTranslations,intl_uploadNativeStrings" self.linkMethods = u"XLinks:links_get,links_post" self.messageMethods = u"Message:XliveMessage_send,message_getThreadsInFolder" self.noteMethods = u"Notes:notes_create,Xnotes_delete,Xnotes_edit,notes_get" self.notificationMethods = u"Notification:notifications_get,notifications_getList,Xnotifications_markRead,notifications_sendEmail,Xnotifications_sendEmail" self.pageMethods = u"XPages:pages_getInfo,pages_isAdmin,pages_isAppAdded,pages_isFan" self.photoMethods = u"Photos:Xphotos_addTag,photos_createAlbum,photos_get,photos_getAlbums,Xphotos_getTags,Xphotos_upload" self.profileMethods = u"XProfile:profile_getFBML,profile_getInfo,profile_getInfoOptions,profile_setFBML,profile_setInfo,profile_setInfoOptions" self.smsMethods = u"XSMS:Xsms_canSend,sms_send" self.statusMethods = u"XStatus:status_get,status_set" self.streamMethods = u"Stream:Xstream_addComment,Xstream_addLike,stream_get,Xstream_getComments,Xstream_getFilters,stream_publish,stream_publishAttachment,Xstream_remove,Xstream_removeComment,Xstream_removeLike" self.userMethods = u"Users:users_getInfo,users_getLoggedInUser,Xusers_getStandardInfo,Xusers_hasAppPermission,Xusers_isAppUser,Xusers_isVerified,Xusers_setStatus" self.videoMethods = u"XVideo:video_getUploadLimits,video_upload" self.xfbml = u"FBML:various,serverFbml" self.menu = java.Array([self.authMethods, self.batchMethods, self.commentMethods, self.connectMethods, self.dataMethods, self.eventMethods, self.fbmlMethods, self.feedMethods, self.fqlMethods, self.friendMethods, self.groupMethods, self.intlMethods, self.linkMethods, self.messageMethods, self.noteMethods, self.notificationMethods, self.pageMethods, self.photoMethods, self.profileMethods, self.smsMethods, self.statusMethods, self.streamMethods, self.userMethods, self.videoMethods, self.xfbml]) self.showcaseWrapper = VerticalPanel() self.loader = Image(u"/loader.gif") self.treeMenu = self.createMenu() self.apiClient = ApiFactory.getInstance() DEFAULT_SHOW = u"#comments_xfbml" @java.private @java.innerclass @java.implements(SelectionHandlerTreeItem) class ShowcaseHandler(Object): @java.init def __init__(self, *a, **kw): pass @java.typed(SelectionEvent) def onSelection(self, event): clickedLink = event.getSelectedItem() if clickedLink.getChildCount() == 0: if not self.apiClient.isSessionValid(): Window.alert(u"Your session has expired") self.showcaseWrapper.clear() else: History.newItem(clickedLink.getText()) @__init__.register @java.typed() def __init__(self, ): self.__init__._super() """ Create showcase client. """ History.addValueChangeHandler(self) self.outer.getElement().setId(u"ShowcaseClient") self.showcaseWrapper.getElement().setId(u"ShowcaseWrapper") self.horizontalSplit.setSpacing(10) self.showcaseWrapper.setWidth(u"700px") self.showcaseWrapper.addStyleName(u"showcaseWrapper") self.treeMenu.addStyleName(u"treeMenu") token = Window.Location.getHash() if token == None or u"".equals(token): self.doDisplayShowcase(self.__class__.DEFAULT_SHOW) self.showcaseWrapper.insert(self.createDefaultFrontpage(), 0) else: self.doDisplayShowcase(token) treeMenuWrapper = VerticalPanel() treeMenuWrapper.addStyleName(u"treeMenuWrapper") treeMenuWrapper.add(HTML(u"<h4>Methods: </h4>")) treeMenuWrapper.add(self.treeMenu) self.horizontalSplit.add(treeMenuWrapper) # Add left + right column self.horizontalSplit.add(self.decorate(self.showcaseWrapper)) self.outer.add(self.horizontalSplit) Xfbml.parse(self.outer) self.initWidget(self.outer) @java.private def createDefaultFrontpage(self): pp = FbProfilePic(self.apiClient.getLoggedInUser(), Size.square) pp.setSize(u"30px", u"30px") name = FbName(self.apiClient.getLoggedInUser()) name.setUseyou(False) name.setLinked(False) welcomePnl = VerticalPanel() welcomePnl.setSpacing(10) welcomePnl.add(HTML(java.str(java.str(java.str(u"<h4>Welcome, " + java.str(name)) + u" ") + java.str(pp)) + u"</h4> ")) welcomePnl.add(HTML(self.wText)) return welcomePnl # Create menu @java.private def createMenu(self): treeMenu = Tree() # Create vertical left menu for m in self.menu: labelMethods = m.split(u":") if not labelMethods[0].startswith(u"X"): treeItem = treeMenu.addItem(labelMethods[0]) self.addSections(treeItem, labelMethods[1].split(u",")) treeMenu.addSelectionHandler(self.ShowcaseHandler()) # Add selection handler ( user clicks ) return treeMenu # Create sections left vertical menu @java.private @java.typed(TreeItem, [String]) def addSections(self, parent, methods): parentOpen = False for method in methods: if not method.startswith(u"X"): token = Window.Location.getHash() if token is not None: token = token.replace(u"#", u"") item = TreeItem(method) if method.equals(token): parentOpen = True parent.addItem(item) if parentOpen: parent.setState(True) # Display showcase @java.private @java.typed(String) def doDisplayShowcase(self, token): self.showcaseWrapper.clear() token = token.replace(u"#", u"") example = self.createExample(token) if example == None: Window.alert(u"Failed to create example: null") if example.getNeedPermission() == None: self.createShowcasePanel(example) else: pd = PermissionDialog(example.getMessage()) class _anonymous(PermissionHandler): @java.typed(Boolean) def onPermissionChange(self, granted): if granted: example.permissionGranted() self.createShowcasePanel(example) else: self.showcaseWrapper.add(HTML(java.str(u"Need " + java.str(example.getNeedPermission())) + u" to show this demo, hit reload")) pd.addPermissionHandler(_anonymous()) pd.checkPermission(example.getNeedPermission()) self.showcaseWrapper.add(pd) # Create showcase with source link on top. @java.private @java.typed(Showcase) 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) # Add panel @java.private @java.typed(Panel) def decorate(self, p): dp = DecoratorPanel() dp.setWidget(p) return dp @java.private @java.typed(String) def createExample(self, m): GWT.log(u"Create example " + java.str(m), None) showcase = None if u"admin_banUsers".equals(m): pass elif u"admin_banUsers".equals(m): pass elif u"batch_run".equals(m): pass elif u"comments_xfbml".equals(m): showcase = Comments_xfbml() elif u"comments_add".equals(m): showcase = Comments_add() elif u"comments_get".equals(m): showcase = Comments_get() elif u"comments_remove".equals(m): pass elif u"connect_getUnconnect...".equals(m): showcase = Connect_getUnconnectedFriendsCount() elif u"connect_registerUsers".equals(m): pass elif u"connect_unregisterUsers".equals(m): pass elif u"data_getCookies".equals(m): showcase = Data_getCookies() elif u"data_setCookie".equals(m): showcase = Data_setCookie() elif u"events_cancel".equals(m): pass elif u"events_create".equals(m): showcase = Events_create() elif u"events_edit".equals(m): pass elif u"events_get".equals(m): showcase = Events_get() elif u"events_getMembers".equals(m): return Events_getMembers() elif u"events_rsvp".equals(m): pass elif u"fbml_deleteCustomTags".equals(m): pass elif u"fbml_getCustomTags".equals(m): pass elif u"fbml_refreshImgSrc".equals(m): pass elif u"fbml_refreshRefUrl".equals(m): pass elif u"fbml_registerCustomTags".equals(m): pass elif u"fbml_setRefHandle".equals(m): pass elif u"feed_deactivateTemplateBundleByID".equals(m): pass elif u"feed_getRegisteredTemplateBundleByID".equals(m): pass elif u"feed_getRegisteredTemplateBundles".equals(m): pass elif u"feed_publishTemplatizedAction".equals(m): pass elif u"feed_publishUserAction".equals(m): pass elif u"feed_registerTemplateBundle".equals(m): pass elif u"fql_multiquery".equals(m): pass elif u"fql_query".equals(m): pass elif u"friends_areFriends".equals(m): showcase = Friends_areFriends() elif u"friends_get".equals(m): showcase = Friends_get() elif u"friends_getAppUsers".equals(m): showcase = Friends_getAppUsers() elif u"friends_getLists".equals(m): showcase = Friends_getLists() elif u"friends_getMutualFriends".equals(m): showcase = Friends_getMutualFriends() elif u"groups_get".equals(m): showcase = Groups_get() elif u"groups_getMembers".equals(m): pass elif u"hashCode".equals(m): pass elif u"intl_getTranslations".equals(m): pass elif u"intl_uploadNativeStrings".equals(m): pass elif u"links_get".equals(m): pass elif u"links_post".equals(m): pass elif u"liveMessage_send".equals(m): pass elif u"message_getThreadsInFolder".equals(m): showcase = Message_getThreadsInFolder() elif u"notes_create".equals(m): showcase = Notes_create() elif u"notes_delete".equals(m): pass elif u"notes_edit".equals(m): pass elif u"notes_get".equals(m): showcase = Notes_get() elif u"notifications_get".equals(m): showcase = Notifications_get() elif u"notifications_getList".equals(m): showcase = Notifications_getList() elif u"notifications_markRead".equals(m): pass elif u"notifications_sendEmail".equals(m): showcase = Notifications_send() elif u"pages_getInfo".equals(m): pass elif u"pages_isAdmin".equals(m): pass elif u"pages_isAppAdded".equals(m): pass elif u"pages_isFan".equals(m): pass elif u"photos_addTag".equals(m): pass elif u"photos_createAlbum".equals(m): showcase = Photos_createAlbum() elif u"photos_get".equals(m): showcase = Photos_get() elif u"photos_getAlbums".equals(m): showcase = Photos_getAlbums() elif u"photos_getTags".equals(m): pass elif u"photos_upload".equals(m): pass elif u"profile_getFBML".equals(m): pass elif u"profile_getInfo".equals(m): pass elif u"profile_getInfoOptions".equals(m): pass elif u"profile_setFBML".equals(m): pass elif u"profile_setInfo".equals(m): pass elif u"profile_setInfoOptions".equals(m): pass elif u"sms_canSend".equals(m): pass elif u"sms_send".equals(m): showcase = Sms_send() elif u"status_get".equals(m): pass elif u"status_set".equals(m): pass elif u"stream_addComment".equals(m): pass elif u"stream_addLike".equals(m): pass elif u"stream_get".equals(m): showcase = Stream_get() elif u"stream_getComments".equals(m): pass elif u"stream_getFilters".equals(m): pass elif u"stream_publishAttachment".equals(m): showcase = Stream_publishAttachment() elif u"stream_publish".equals(m): showcase = Stream_publish() elif u"stream_remove".equals(m): pass elif u"stream_removeComment".equals(m): pass elif u"stream_removeLike".equals(m): pass elif u"toString".equals(m): pass elif u"users_getInfo".equals(m): showcase = Users_getInfo() elif u"users_getLoggedInUser".equals(m): showcase = Users_getLoggedInUser() elif u"users_getStandardInfo".equals(m): pass elif u"users_hasAppPermission".equals(m): pass elif u"users_isAppUser".equals(m): pass elif u"users_isVerified".equals(m): pass elif u"users_setStatus".equals(m): pass elif u"video_getUploadLimits".equals(m): pass elif u"video_upload".equals(m): pass elif u"various".equals(m): showcase = XFBMLShowcase() else: if u"serverFbml".equals(m): showcase = XFBML_serverFbml() return showcase @java.typed(ValueChangeEvent) def onValueChange(self, event): self.doDisplayShowcase(event.getValue())