def addContact(self, contact): link = HTML("<a href='javascript:;'>" + contact.name + "</a>") self.panel.add(link) # Add a click listener that displays a ContactPopup when it is clicked. listener = ContactListener(contact, link) link.addClickListener(listener)
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")
def __init__(self): DialogBox.__init__(self) # Use this opportunity to set the dialog's caption. self.setText("About the Mail Sample") # Create a DockPanel to contain the 'about' label and the 'OK' button. outer = DockPanel() outer.setSpacing(4) outer.add(Image(AboutDialog.LOGO_IMAGE), DockPanel.WEST) # Create the 'OK' button, along with a listener that hides the dialog # when the button is clicked. Adding it to the 'south' position within # the dock causes it to be placed at the bottom. buttonPanel = HorizontalPanel() buttonPanel.setHorizontalAlignment(HasAlignment.ALIGN_RIGHT) buttonPanel.add(Button("Close", self)) outer.add(buttonPanel, DockPanel.SOUTH) # Create the 'about' label. Placing it in the 'rest' position within the # dock causes it to take up any remaining space after the 'OK' button # has been laid out. textplain = "This sample application demonstrates the construction " textplain += "of a complex user interface using pyjamas' built-in widgets. Have a look " textplain += "at the code to see how easy it is to build your own apps!" text = HTML(textplain) text.setStyleName("mail-AboutText") outer.add(text, DockPanel.CENTER) # Add a bit of spacing and margin to the dock to keep the components from # being placed too closely together. outer.setSpacing(8) self.setWidget(outer)
def createLabelAndInput(self, label, field): h = HorizontalPanel() l = HTML(java.str(u"<b>" + java.str(label)) + u": </b>") l.setWidth(u"150px") h.add(l) h.add(field) return h
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 __init__(self): Composite.__init__(self) panel = VerticalPanel() headerPanel = VerticalPanel() self.subject = HTML() self.sender = HTML() self.recipient = HTML() self.body = HTML() self.scroller = ScrollPanel(self.body) self.body.setWordWrap(True) headerPanel.add(self.subject) headerPanel.add(self.sender) headerPanel.add(self.recipient) headerPanel.setWidth("100%") innerPanel = DockPanel() innerPanel.add(headerPanel, DockPanel.NORTH) innerPanel.add(self.scroller, DockPanel.CENTER) innerPanel.setCellHeight(self.scroller, "100%") panel.add(innerPanel) innerPanel.setSize("100%", "100%") self.scroller.setSize("100%", "100%") self.initWidget(panel) self.setStyleName("mail-Detail") headerPanel.setStyleName("mail-DetailHeader") innerPanel.setStyleName("mail-DetailInner") self.subject.setStyleName("mail-DetailSubject") self.sender.setStyleName("mail-DetailSender") self.recipient.setStyleName("mail-DetailRecipient") self.body.setStyleName("mail-DetailBody")
def createInput(self, lbl, w): h = HorizontalPanel() lblHtml = HTML(lbl) lblHtml.setWidth(u"150px") h.add(lblHtml) h.add(w) return h
def __init__(self): PopupPanel.__init__(self, True) contents = HTML("Click anywhere outside this popup to make it disappear.") contents.setWidth("128px") contents.setHeight("128px") self.setWidget(contents) self.setStyleName("ks-popups-Popup")
def renderUI(self): fbName = FbName(self.apiClient.getLoggedInUser()) fbName.setUseyou(False) text = HTML(java.str(u"This will send an email notification to " + java.str(fbName)) + u"(you).") text.getElement().setId(u"text") self.notificationText.setWidth(u"500px") self.notificationText.setHeight(u"100px") self.notificationText.setFocus(True) self.outer.setSpacing(10) submit = Button(u"Send") submit.addClickHandler(self.NotificationSendHandler()) self.outer.add(text) self.outer.add(self.notificationText) self.outer.add(submit) Xfbml.parse(text)
def __init__(self, owner): Composite.__init__(self) self.owner = owner self.bar = DockPanel() self.gotoFirst = Button("<<", self) self.gotoNext = Button(">", self) self.gotoPrev = Button("<", self) self.status = HTML() self.initWidget(self.bar) self.bar.setStyleName("navbar") self.status.setStyleName("status") buttons = HorizontalPanel() buttons.add(self.gotoFirst) buttons.add(self.gotoPrev) buttons.add(self.gotoNext) self.bar.add(buttons, DockPanel.EAST) self.bar.setCellHorizontalAlignment(buttons, HasAlignment.ALIGN_RIGHT) self.bar.add(self.status, DockPanel.CENTER) self.bar.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE) self.bar.setCellHorizontalAlignment(self.status, HasAlignment.ALIGN_RIGHT) self.bar.setCellVerticalAlignment(self.status, HasAlignment.ALIGN_MIDDLE) self.bar.setCellWidth(self.status, "100%") self.gotoPrev.setEnabled(False) self.gotoFirst.setEnabled(False)
def onModuleLoad(self): self.curInfo='' self.curSink=None self.description=HTML() self.sink_list=SinkList() self.panel=DockPanel() self.loadSinks() self.sinkContainer = DockPanel() self.sinkContainer.setStyleName("ks-Sink") vp=VerticalPanel() vp.setWidth("100%") vp.add(self.description) vp.add(self.sinkContainer) self.description.setStyleName("ks-Info") self.panel.add(self.sink_list, DockPanel.WEST) self.panel.add(vp, DockPanel.CENTER) self.panel.setCellVerticalAlignment(self.sink_list, HasAlignment.ALIGN_TOP) self.panel.setCellWidth(vp, "100%") History().addHistoryListener(self) RootPanel().add(self.panel) #RootPanel().add(Logger()) #Show the initial screen. initToken = History().getToken() if len(initToken): self.onHistoryChanged(initToken) else: self.showInfo()
class TopPanel(Composite): 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") def onClick(self, sender, event): if (sender == self.signOutLink): Window.alert("If this were implemented, you would be signed out now.") elif (sender == self.aboutLink): # When the 'About' item is selected, show the AboutDialog. # Note that showing a dialog box does not block -- execution continues # normally, and the dialog fires an event when it is closed. dlg = AboutDialog() # Position it roughly in the middle of the screen. left = (Window.getClientWidth() - 512) / 2 top = (Window.getClientHeight() - 256) / 2 #Logger("TopPanel", "left: " + left) #Logger("TopPanel", "top: " + top) dlg.setPopupPosition(left, top) dlg.show()
def __init__(self, *a, **kw): self.outer = VerticalPanel() self.topMenu = None self.apiClient = GWT.create(FacebookApi.__class__) self.loginBoxPanel = None self.loginCallback = None self.waitingText = HTML(u"Waiting for facebook connect status...") self.userService = GWT.create(UserService.__class__)
class NavBar(Composite): def __init__(self, owner): Composite.__init__(self) self.owner = owner self.bar = DockPanel() self.gotoFirst = Button("<<", self) self.gotoNext = Button(">", self) self.gotoPrev = Button("<", self) self.status = HTML() self.initWidget(self.bar) self.bar.setStyleName("navbar") self.status.setStyleName("status") buttons = HorizontalPanel() buttons.add(self.gotoFirst) buttons.add(self.gotoPrev) buttons.add(self.gotoNext) self.bar.add(buttons, DockPanel.EAST) self.bar.setCellHorizontalAlignment(buttons, HasAlignment.ALIGN_RIGHT) self.bar.add(self.status, DockPanel.CENTER) self.bar.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE) self.bar.setCellHorizontalAlignment(self.status, HasAlignment.ALIGN_RIGHT) self.bar.setCellVerticalAlignment(self.status, HasAlignment.ALIGN_MIDDLE) self.bar.setCellWidth(self.status, "100%") self.gotoPrev.setEnabled(False) self.gotoFirst.setEnabled(False) def onClick(self, sender): if sender == self.gotoNext: self.owner.startRow += self.owner.getDataRowCount() self.owner.refresh() elif sender == self.gotoPrev: self.owner.startRow -= self.owner.getDataRowCount() if self.owner.startRow < 0: self.owner.startRow = 0 self.owner.refresh() elif sender == self.gotoFirst: self.owner.startRow = 0 self.owner.refresh()
class ClassDoc(Composite): def __init__(self, classes, class_content): Composite.__init__(self) self.class_content = class_content t = Trees(self, classes) clspan = DockPanel() clspan.setWidth("100%%") self.clstext = HTML() txtscroll = ScrollPanel(self.clstext) clsscroll = ScrollPanel(t) clspan.add(clsscroll, DockPanel.WEST) clspan.add(txtscroll, DockPanel.EAST) clspan.setCellWidth(txtscroll, "100%%") clspan.setCellWidth(clsscroll, "260px") t.setWidth("250px") title = bigtitle('Classes') self.initWidget(section(title, 'classes', clspan)) self.clspan = clspan self.txtscroll = txtscroll self.clsscroll = clsscroll self.t = t def setSize(self, width, height): #self.clsscroll.setWidth("%dpx" % cls_scroll_width) offs = self.clsscroll.getAbsoluteLeft() + 260 self.txtscroll.setWidth("%dpx" % (width - offs)) #self.clspan.setCellWidth(self.txtscroll, "%dpx" % (width - offs - 10)) self.clstext.setWidth("%dpx" % (width - offs - 20)) self.txtscroll.setHeight("%dpx" % height) self.clsscroll.setHeight("%dpx" % height) def class_show(self, itemname): self.clstext.setHTML(self.class_content[itemname])
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, classes, class_content): Composite.__init__(self) self.class_content = class_content t = Trees(self, classes) clspan = DockPanel() clspan.setWidth("100%%") self.clstext = HTML() txtscroll = ScrollPanel(self.clstext) clsscroll = ScrollPanel(t) clspan.add(clsscroll, DockPanel.WEST) clspan.add(txtscroll, DockPanel.EAST) clspan.setCellWidth(txtscroll, "100%%") clspan.setCellWidth(clsscroll, "260px") t.setWidth("250px") title = bigtitle('Classes') self.initWidget(section(title, 'classes', clspan)) self.clspan = clspan self.txtscroll = txtscroll self.clsscroll = clsscroll self.t = t
class MailList(Composite): VISIBLE_EMAIL_COUNT = 10 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 onCellClicked(self, sender, row, cell): # Select the row that was clicked (-1 to account for header row). if (row > 0): self.selectRow(row - 1) def onClick(self, sender, event): print "click", sender if (sender == self.olderButton): # Move forward a page. self.startIndex = self.startIndex + MailList.VISIBLE_EMAIL_COUNT if (self.startIndex >= MailItems().getMailItemCount()): self.startIndex = self.startIndex - MailList.VISIBLE_EMAIL_COUNT else: self.styleRow(self.selectedRow, False) self.selectedRow = -1 self.update() elif (sender == self.newerButton): # Move back a page. self.startIndex = self.startIndex - MailList.VISIBLE_EMAIL_COUNT if (self.startIndex < 0): self.startIndex = 0 else: self.styleRow(self.selectedRow, False) self.selectedRow = -1 self.update() def initTable(self): # Create the header row. self.table.setText(0, 0, "sender") self.table.setText(0, 1, "email") self.table.setText(0, 2, "subject") self.table.setWidget(0, 3, self.navBar) self.table.getRowFormatter().setStyleName(0, "mail-ListHeader") # Initialize the rest of the rows. i = 0 while i < MailList.VISIBLE_EMAIL_COUNT: self.table.setText(i + 1, 0, "") self.table.setText(i + 1, 1, "") self.table.setText(i + 1, 2, "") self.table.getCellFormatter().setWordWrap(i + 1, 0, False) self.table.getCellFormatter().setWordWrap(i + 1, 1, False) self.table.getCellFormatter().setWordWrap(i + 1, 2, False) self.table.getFlexCellFormatter().setColSpan(i + 1, 2, 2) i = i + 1 def selectRow(self, row): # When a row (other than the first one, which is used as a header) is # selected, display its associated MailItem. item = MailItems().getMailItem(self.startIndex + row) if (item == None): return self.styleRow(self.selectedRow, False) self.styleRow(row, True) item.read = True self.selectedRow = row self.mailObject.get().displayItem(item) def styleRow(self, row, selected): if (row != -1): if (selected): self.table.getRowFormatter().addStyleName(row + 1, "mail-SelectedRow") else: self.table.getRowFormatter().removeStyleName(row + 1, "mail-SelectedRow") def update(self): # Update the older/newer buttons & label. count = MailItems().getMailItemCount() max = self.startIndex + MailList.VISIBLE_EMAIL_COUNT if (max > count): max = count self.newerButton.setVisible(self.startIndex != 0) self.olderButton.setVisible(self.startIndex + MailList.VISIBLE_EMAIL_COUNT < count) startIndexPlusOne = self.startIndex + 1 self.countLabel.setText("" + "%d" % startIndexPlusOne + " - " + "%d" % max + " of " + "%d" % count) # Show the selected emails. i = 0 while (i < MailList.VISIBLE_EMAIL_COUNT): # Don't read past the end. if (self.startIndex + i >= MailItems().getMailItemCount()): break item = MailItems().getMailItem(self.startIndex + i) # Add a row to the table, then set each of its columns to the # email's sender and subject values. self.table.setText(i + 1, 0, item.sender) self.table.setText(i + 1, 1, item.email) self.table.setText(i + 1, 2, item.subject) i = i + 1 # Clear any remaining slots. while (i < MailList.VISIBLE_EMAIL_COUNT): self.table.setHTML(i + 1, 0, " ") self.table.setHTML(i + 1, 1, " ") self.table.setHTML(i + 1, 2, " ") i = i + 1 # Select the first row if none is selected. if (self.selectedRow == -1): self.selectRow(0)
class MailDetail(Composite): def __init__(self): Composite.__init__(self) panel = VerticalPanel() headerPanel = VerticalPanel() self.subject = HTML() self.sender = HTML() self.recipient = HTML() self.body = HTML() self.scroller = ScrollPanel(self.body) self.body.setWordWrap(True) headerPanel.add(self.subject) headerPanel.add(self.sender) headerPanel.add(self.recipient) headerPanel.setWidth("100%") innerPanel = DockPanel() innerPanel.add(headerPanel, DockPanel.NORTH) innerPanel.add(self.scroller, DockPanel.CENTER) innerPanel.setCellHeight(self.scroller, "100%") panel.add(innerPanel) innerPanel.setSize("100%", "100%") self.scroller.setSize("100%", "100%") self.initWidget(panel) self.setStyleName("mail-Detail") headerPanel.setStyleName("mail-DetailHeader") innerPanel.setStyleName("mail-DetailInner") self.subject.setStyleName("mail-DetailSubject") self.sender.setStyleName("mail-DetailSender") self.recipient.setStyleName("mail-DetailRecipient") self.body.setStyleName("mail-DetailBody") #Logger("Mail detail", " ") def setItem(self, item): self.subject.setHTML(item.subject) self.sender.setHTML("<b>From:</b> " + item.sender) self.recipient.setHTML("<b>To:</b> [email protected]") self.body.setHTML(item.body) def adjustSize(self, windowWidth, windowHeight): scrollWidth = windowWidth - self.scroller.getAbsoluteLeft() - 9 if (scrollWidth < 1): scrollWidth = 1 scrollHeight = windowHeight - self.scroller.getAbsoluteTop() - 9 if (scrollHeight < 1): scrollHeight = 1 self.scroller.setSize("%dpx" % scrollWidth, "%dpx" % scrollHeight)
class PermissionDialog(Composite): """ Display permission dialog to user. """ @java.init def __init__(self, *a, **kw): self.outer = VerticalPanel() self.handler = None self.apiClient = ApiFactory.getInstance() self.loader = HTML(u"Checking permission") self.message = None @java.interface class PermissionHandler(java.Interface): def onPermissionChange(self, granted): pass @__init__.register @java.typed() def __init__(self, ): self.__init__._super() """ Create a new PermissionDialog """ self.initWidget(self.outer) @__init__.register @java.typed(String) def __init__(self, message): self.__init__._super() self.initWidget(self.outer) self.message = message @java.private @java.typed(Permission) 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 @java.typed(Permission) def checkPermission(self, permission): self.outer.clear() self.loader.setHTML(java.str(u"Checking " + java.str(permission)) + u" permission ") self.outer.add(self.loader) class _anonymous(AsyncCallback): @java.typed(Throwable) def onFailure(self, caught): ErrorResponseUI(caught).center() @java.typed(Boolean) def onSuccess(self, hasPermission): self.outer.remove(self.loader) if hasPermission: self.handler.onPermissionChange(True) else: self.outer.add(self.createShowPermissionUI(permission)) self.apiClient.usersHasAppPermission(permission, _anonymous()) # Check if user has the right permission. If not show permission dialog @java.typed(PermissionHandler) def addPermissionHandler(self, handler): self.handler = handler
def __init__(self, *a, **kw): self.outer = VerticalPanel() self.handler = None self.apiClient = ApiFactory.getInstance() self.loader = HTML(u"Checking permission") self.message = None
class GwittIt(Object): """ Entry point classes define <code>onModuleLoad()</code>. """ @java.init def __init__(self, *a, **kw): self.outer = VerticalPanel() self.topMenu = None self.apiClient = GWT.create(FacebookApi.__class__) self.loginBoxPanel = None self.loginCallback = None self.waitingText = HTML(u"Waiting for facebook connect status...") self.userService = GWT.create(UserService.__class__) # Runs on every localhost port 8080 API_KEY = u"1d81c942b38e2e6b3fc35a147d371ab3" @java.private @java.innerclass @java.implements(AsyncCallbackVoid) class LogCallback(Object): """ Change this if you setup your own app """ @java.init def __init__(self, *a, **kw): pass @java.typed(Throwable) def onFailure(self, caught): pass @java.typed(Void) def onSuccess(self, result): pass @java.private @java.innerclass @java.implements(AsyncCallbackConnectState) class RenderAppWhenReadyCallback(Object): """ Fired when we know users status """ @java.init def __init__(self, *a, **kw): pass @java.typed(Throwable) def onFailure(self, caught): Window.alert(u"Failed to get status:" + java.str(caught)) @java.typed(ConnectState) def onSuccess(self, result): self.outer.remove(self.waitingText) if result == ConnectState.connected: self.renderWhenConnected() else: self.renderWhenNotConnected() @java.private @java.innerclass @java.implements(LoginCallback) class MyLoginCallback(Object): """ Fired when user clicks fb login button """ @java.init def __init__(self, *a, **kw): pass def onLogin(self): self.renderWhenConnected() self.sendNotificationToDeveloper() self.logUser() def onModuleLoad(self): """ Load Main Module """ self.loginCallback = self.MyLoginCallback() self.topMenu = TopMenu() self.outer.getElement().setId(u"GwittIt") self.outer.ensureDebugId(u"GwittIt") self.waitingText.getElement().setAttribute(u"style", u"color: white; font-weight: bold") self.outer.add(self.waitingText) FacebookConnect.init( self.__class__.API_KEY, u"/xd_receiver.htm", self.loginCallback ) # Set up Facebook Connect FacebookConnect.waitUntilStatusReady( self.RenderAppWhenReadyCallback() ) # Wait until we can determine the users status RootPanel.get().add(self.outer) # Add UI. def renderWhenConnected(self): """ Render when user is connected """ self.topMenu.renderLoginInfo() self.outer.clear() self.outer.add(self.topMenu) self.outer.add(ShowcaseClient()) def renderWhenNotConnected(self): """ Render when user is not connected """ self.loginBoxPanel = LoginBox() self.loginBoxPanel.addLoginCallback(self.loginCallback) self.outer.add(self.topMenu) self.outer.add(self.loginBoxPanel) @java.private def sendNotificationToDeveloper(self): """ Send notification about who added the app. used for personal stats . """ notification = u" logged in using " + java.str(self.getUserAgent()) recepients = ArrayList((Long)) recepients.add(Long(744450545)) self.apiClient.notificationsSendEmail(recepients, u"User logged in", notification, u"", Callback((List))) @java.private def logUser(self): self.userService.logUser(self.apiClient.getLoggedInUser(), self.LogCallback()) @java.static @java.native def getUserAgent(self): """
def makeLabel(self, caption): html = HTML(caption) html.setStyleName("ks-layouts-Label") return html
class KitchenSink: def onHistoryChanged(self, token): print "history changed", token info = self.sink_list.find(token) if info: self.show(info, False) else: self.showInfo() def onModuleLoad(self): self.curInfo='' self.curSink=None self.description=HTML() self.sink_list=SinkList() self.panel=DockPanel() self.loadSinks() self.sinkContainer = DockPanel() self.sinkContainer.setStyleName("ks-Sink") vp=VerticalPanel() vp.setWidth("100%") vp.add(self.description) vp.add(self.sinkContainer) self.description.setStyleName("ks-Info") self.panel.add(self.sink_list, DockPanel.WEST) self.panel.add(vp, DockPanel.CENTER) self.panel.setCellVerticalAlignment(self.sink_list, HasAlignment.ALIGN_TOP) self.panel.setCellWidth(vp, "100%") History().addHistoryListener(self) RootPanel().add(self.panel) #RootPanel().add(Logger()) #Show the initial screen. initToken = History().getToken() if len(initToken): self.onHistoryChanged(initToken) else: self.showInfo() def show(self, info, affectHistory): if info == self.curInfo: return self.curInfo = info #Logger().write("", "showing " + info.getName()) if self.curSink <> None: self.curSink.onHide() #Logger().write("", "removing " + self.curSink) self.sinkContainer.remove(self.curSink) self.curSink = info.getInstance() self.sink_list.setSinkSelection(info.getName()) self.description.setHTML(info.getDescription()) if (affectHistory): History().newItem(info.getName()) self.sinkContainer.add(self.curSink, DockPanel.CENTER) self.sinkContainer.setCellWidth(self.curSink, "100%") self.sinkContainer.setCellHeight(self.curSink, "100%") self.sinkContainer.setCellVerticalAlignment(self.curSink, HasAlignment.ALIGN_TOP) self.curSink.onShow() def loadSinks(self): self.sink_list.addSink(Info.init()) self.sink_list.addSink(Buttons.init()) self.sink_list.addSink(Menus.init()) self.sink_list.addSink(Images.init()) self.sink_list.addSink(Layouts.init()) self.sink_list.addSink(Lists.init()) self.sink_list.addSink(Popups.init()) self.sink_list.addSink(Tables.init()) self.sink_list.addSink(Text.init()) self.sink_list.addSink(Trees.init()) self.sink_list.addSink(Frames.init()) self.sink_list.addSink(Tabs.init()) def showInfo(self): self.show(self.sink_list.find("Info"), False)