Hi,
I'm currently building a GWT login screen and I managed to get a basic version of the login structure working.
I created the following pieces:
- An entry point class (actually it was given).
 - A main application screen composite.
 - A login-screen composite.
 
I have the following logic in my entry point method:
MyApplication mainWindow = null;
public void onModuleLoad() {
    LoginScreen loginScreen = new LoginScreen() {
        @Override
        public String onLogin(String username, String password) {
            boolean passwordWasOk = rpcCheckUsernamePassword(username,password); // mechanism not important for this question
            if (passwordWasOk) {
                RootPanel.get().remove(0);
                mainWindow = new MyApplication();
                // Using root layout panel as main window is a layout type composite
                RootLayoutPanel.get().add(mainWindow);
                return null;
            } else {
                return "password was incorrect";
            }
        }
    };
    RootPanel.get().add(loginScreen);
}
So, I created a method in the LoginScreen composite that is called when the user clicks the 'Sign-In' button. If the onLogin method fails its validation of the username and password, then a narrative can be returned to the login composite so that it can update the user. The login screen will stay on the screen until the user uses a correct username/password combination.
My question is, is this the correct way to use composites? Where should my login logic ideally reside. Is a better alternative to inject some sort of login handler object in the constructor of the composite or via a setter or is the method I used quite normal?
As I'm planning to write quite a lot of code, I want to get the coding style correct from the outset.
Any feedback is greatly appreciated.
Thanks,