コード例 #1
0
 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)
コード例 #2
0
ファイル: GwittIt.py プロジェクト: pombredanne/pygwt-facebook
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):
        """