def __init__(self, *a, **kw):
     self.outer = VerticalPanel()
     self.inputWrapper = VerticalPanel()
     self.responseWrapper = SimplePanel()
     self.commentsListPanel = VerticalPanel()
     self.text = TextArea()
     self.submitButton = Button(u"Add Comment ")
    def body(self, frame):
        """ Creates the dialog body. Returns the widget that should have
            initial focus.
        """

        title = Label( text = "Choose Font" )
        frame.add( title )

        # Font family list ----------------------------------------------------

        family = ListBox()
        family.setMultipleSelect( False )
        family.setStyleName( "color", "#ffffff" )

        for family_name in families(master):
            family.addItem( item = family_name )

        # Font size spinner ---------------------------------------------------

        size = TextBox()
        frame.add( size )

        # Example text --------------------------------------------------------

        example = TextArea()

        example.addText( "This is example text.\n" )
        example.addText( "If you like this text, it can be your font." )

        def on_select( event ):
            idx = familt.getSelectedIndex()
            example.setStyleName( "font", family.getValue(idx) )
            example.setStyleName( "em", size.getText() )

        family.addChangeListener( on_select )

        return size # Given initial focus.
    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 __init__(self, *a, **kw):
     self.outer = VerticalPanel()
     self.notificationText = TextArea()
class Notifications_send(Showcase):

    """
    Showcase for <code>notifications.send</code>
    """

    @java.init
    def __init__(self, *a, **kw):
        self.outer = VerticalPanel()
        self.notificationText = TextArea()

    def getNeedPermission(self):
        """
        Get email permissions.
        """
        return Permission.email

    def permissionGranted(self):
        self.renderUI()

    #  Send notification

    @java.private
    @java.innerclass
    @java.implements(ClickHandler)
    class NotificationSendHandler(Object):
        @java.init
        def __init__(self, *a, **kw):
            pass

        @java.typed(ClickEvent)
        def onClick(self, event):
            self.sendToServer()

    #  Notification sent

    @java.private
    @java.innerclass
    @java.implements(AsyncCallbackList)
    class NotificationSent(Object):
        @java.init
        def __init__(self, *a, **kw):
            pass

        @java.typed(Throwable)
        def onFailure(self, caught):
            self.handleFailure(caught)

        @java.typed(List)
        def onSuccess(self, result):
            self.notificationText.setValue(None)
            self.outer.add(HTML(u"<h3>Email Sent!</h3> <br/> Recepients: "))
            for uid in result:
                self.outer.add(FbName(uid))
            Xfbml.parse(self.outer)

    @__init__.register
    @java.typed()
    def __init__(self,):
        self.__init__._super()
        """
        Create showcase
        """
        self.initWidget(self.outer)

    @java.private
    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)

    #  Send notiication.

    @java.private
    def sendToServer(self):
        toIds = ArrayList((Long))
        toIds.add(self.apiClient.getLoggedInUser())
        self.apiClient.notificationsSendEmail(
            toIds, u"Notification Send Email", self.notificationText.getValue(), None, self.NotificationSent()
        )  #  toIds.add ( new Long ( FacebookConnect.getLoggedInUser () ) );
class Comments_add(Showcase):

    """
    Showcase for method call <code>comments.add</code>
    
    @author olamar72
    """
    
    @java.init
    def __init__(self, *a, **kw):
        self.outer = VerticalPanel()
        self.inputWrapper = VerticalPanel()
        self.responseWrapper = SimplePanel()
        self.commentsListPanel = VerticalPanel()
        self.text = TextArea()
        self.submitButton = Button(u"Add Comment ")
    #  Handle add comment
    
    @java.private
    @java.innerclass
    @java.implements(AsyncCallbackJavaScriptObject)
    class AddCommentCallback(Object):
    
        
        @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):
            self.removeLoader(self.outer)
            self.text.setValue(None)
            self.responseWrapper.add(HTML(u" Thanks :-)"))
            self.displayComments()
    #  User adds comment
    
    @java.private
    @java.innerclass
    @java.implements(ClickHandler)
    class AddCommentClickHandler(Object):
    
        
        @java.init
        def __init__(self, *a, **kw):
            pass
        
        @java.typed(ClickEvent)
        def onClick(self, event):
            comment = Comment.createComment(u"comments_test", self.text.getValue())
            self.apiClient.commentsAdd(comment, self.AddCommentCallback())
    
    @__init__.register
    @java.typed()
    def __init__(self, ):
        self.__init__._super()
        """
        New demo
        """
        self.inputWrapper.setSpacing(10)
        self.outer.setSpacing(10)
        self.inputWrapper.getElement().setId(u"CommentsAdd-Input") #  ID's
        self.submitButton.getElement().getStyle().setProperty(u"float", u"right") #  Styles
        self.submitButton.getElement().getStyle().setProperty(u"marginTop", u"10px")
        self.inputWrapper.add(HTML(u"A comment would be great! Thanks."))
        self.inputWrapper.add(self.createInputUi())
        self.outer.add(self.inputWrapper)
        self.outer.add(self.responseWrapper) #  Thank you
        self.outer.add(self.commentsListPanel) #  Show list of comments
        self.displayComments()
        self.submitButton.addClickHandler(self.AddCommentClickHandler())
        Xfbml.parse(self.inputWrapper)
        self.initWidget(self.outer)
    
    @java.private
    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 displayComments(self):
        self.commentsListPanel.clear()
        comments = Comments_get()
        self.commentsListPanel.add(comments)
class JSONRPCExample:
    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 onClick(self, sender, event):
        self.status.setText(self.TEXT_WAITING)
        method = self.methods[self.method_list.getSelectedIndex()]
        text = self.text_area.getText()

        print repr(text)

        # demonstrate proxy & callMethod()
        if sender == self.button_php:
            if method == self.METHOD_ECHO:
                id = self.remote_php.echo(text, self)
            elif method == self.METHOD_REVERSE:
                id = self.remote_php.callMethod("reverse", [text], self)
            elif method == self.METHOD_UPPERCASE:
                id = self.remote_php.uppercase(text, self)
            elif method == self.METHOD_LOWERCASE:
                id = self.remote_php.lowercase(text, self)
        else:
            if method == self.METHOD_ECHO:
                id = self.remote_py.echo(text, self)
            elif method == self.METHOD_REVERSE:
                id = self.remote_py.reverse(text, self)
            elif method == self.METHOD_UPPERCASE:
                id = self.remote_py.uppercase(text, self)
            elif method == self.METHOD_LOWERCASE:
                id = self.remote_py.lowercase(text, self)
        if id<0:
            self.status.setText(self.TEXT_ERROR)

    def onRemoteResponse(self, response, request_info):
        self.status.setText(response)

    def onRemoteError(self, code, message, request_info):
        self.status.setText("Server Error or Invalid Response: ERROR " + str(code) + " - " + str(message))