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