コード例 #1
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>&nbsp;" + item.sender)
        self.recipient.setHTML("<b>To:</b>&nbsp;[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)
コード例 #2
0
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])
コード例 #3
0
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)
コード例 #4
0
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