Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SwingUtilities.invokeLater(() -> {
- JFrame mainWindow = new JFrame();
- mainWindow = new JFrame("MainFenster");
- mainWindow.setSize(500, 500);
- mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- mainWindow.setLocationRelativeTo(null);
- mainWindow.setLayout(new BorderLayout());
- LoginView loginView = new SwingLoginView(mainWindow);
- LoginModel loginModel = new LoginModelImpl();
- LoginService loginService = new LoginServiceImpl(loginModel);
- LoginPresenter presenter = new LoginPresenter(loginView, loginService);
- loginView.setPresenter(presenter);
- mainWindow.setVisible(true);
- });
- public interface View {
- // Not sure what woudl go here, but just in case...
- }
- public interface LoginView extends View {
- void setErrorMessage(String errorMessage);
- void setNotificationMessage(String message);
- void navigateToHome(); // Should go here?
- void setPresenter(LoginPresenter presenter);
- interface LoginViewEventListener {
- void loginButtonClicked(String username, String password);
- }
- }
- public class SwingLoginView implements LoginView {
- private JFrame mainFrame;
- private LoginPresenter presenter;
- private JTextArea errorMessage;
- private JTextArea password;
- private JTextArea username;
- private JTextArea notificationMessage;
- private JPanel panel;
- public SwingLoginView(JFrame mainWindow) {
- this.mainFrame = mainWindow;
- inititialize();
- }
- private void inititialize() {
- initializeComponents();
- }
- private void initializeComponents() {
- errorMessage = new JTextArea();
- errorMessage.setText("Hello");
- notificationMessage = new JTextArea();
- notificationMessage.setText("UU");
- password = new JTextArea();
- password.setText("password");
- username = new JTextArea();
- username.setText("username");
- JButton loginButton = new JButton("Press");
- loginButton.addActionListener((e) -> {
- // Could validation go here?
- presenter.loginButtonClicked(username.getText(), password.getText());
- });
- panel = new JPanel();
- panel.add(loginButton);
- panel.add(errorMessage);
- panel.add(notificationMessage);
- panel.add(password);
- panel.add(username);
- mainFrame.add(panel, BorderLayout.NORTH);
- }
- @Override
- public void setErrorMessage(String errorMessage) {
- this.errorMessage.setText(errorMessage);
- }
- @Override
- public void setNotificationMessage(String message) {
- this.notificationMessage.setText(message);
- }
- @Override
- public void navigateToHome() {
- // TODO Auto-generated method stub
- }
- @Override
- public void setPresenter(LoginPresenter presenter) {
- this.presenter = presenter;
- }
- }
- public class LoginPresenter implements Presenter, LoginView.LoginViewEventListener {
- private LoginView referenceToLoginView;
- private LoginService referenceToLoginService;
- public LoginPresenter(LoginView referenceToLoginView, LoginService loginService) {
- this.referenceToLoginView = referenceToLoginView;
- this.referenceToLoginService = loginService;
- }
- @Override
- public void loginButtonClicked(String username, String password) {
- System.out.println("presenter called");
- if (username.equals("") || password.equals("")) {
- this.referenceToLoginView.setErrorMessage("Password and or username empty");
- return; // OK?
- }
- LoginModel loginModel = referenceToLoginService.login(username, password);
- referenceToLoginView.setNotificationMessage("NEU");
- }
- @Override
- public View getView() {
- return referenceToLoginView;
- }
- }
- @RunWith(MockitoJUnitRunner.class)
- public class LoginTest {
- @Mock
- private LoginView mockLoginView;
- @Mock
- private LoginService mockLoginService;
- private LoginPresenter loginPresenter;
- @Before
- public void setUp() {
- loginPresenter = new LoginPresenter(mockLoginView, mockLoginService);
- mockLoginView.setPresenter(loginPresenter);
- }
- @Test
- public void loginShouldFailIfCredentialsAreEmpty() {
- loginPresenter.loginButtonClicked("", "");
- Mockito.verify(mockLoginView).setErrorMessage("Password and or username empty");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement