Я искал в Интернете правильный ответ, но я не в состоянии достичь этого:GWT - Обработка событий из основных виджетов в EntryPoint
В классе EntryPoint, мне нужно управлять виджетами в соответствии с событиями, которые происходят в вложенных виджетах. Я очистил код, чтобы сосредоточиться только на том, что здесь важно.
Я создал несколько виджетов UiBinder, например, область входа, в которой пользователь может ввести свои учетные данные. В моем классе EntryPoint я добавляю виджеты в правильную позицию.
// This is from EntryPoint class
public void onModuleLoad() {
LoginPane lp = new LoginPane();
RootPanel.get("headerRightPane").add(lp);
lp.setFocus();
// Other widgets added in same manner after this point...
}
Я хотел бы успешной регистрации, чтобы удалить LoginPane и заменить его другим виджетом (AccountPane), который будет показывать информацию об учетной записи для пользователя, вошедшего в систему. У меня есть событие OnClick, в LoginPane, что отправляет запрос на полностью функциональный сервлет, который проверяет учетные данные. В этом точном случае, если Servlet определяет, что логин действительно успешный, я хотел бы запустить событие «успешно» (из LoginPane), которое могло бы уведомить класс EntryPoint, что теперь LoginPane будет заменен на AccountPane.
// This is from LoginPane class
@UiHandler("loginButton")
void onClick(ClickEvent e) {
checkCredentials(usernameField.getText(), passwordField.getText());
}
public void checkCredentials(String username, String password) {
String usernameToServer = username;
String passwordToServer = password;
credentialsService.credentialsServer(usernameToServer, passwordToServer,
new AsyncCallback<CredentialsPaneContent>() {
public void onFailure(Throwable caught) {
answerLabel.setText(Utilities.SERVER_ERROR);
}
public void onSuccess(CredentialsPaneContent result) {
if (result == null) {
answerLabel.setText("Login Failed.");
} else {
// Fire event here (to be caught by EntryPoint class)
answerLabel.setText("Login Successful.");
}
}
});
}
Итак, вопрос: как мне приступить к созданию, пожару и прослушиванию события из моего вложенного виджета?