Package sk.vrto.web.presenters

Source Code of sk.vrto.web.presenters.ContactPresenter

package sk.vrto.web.presenters;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import sk.vrto.domain.Contact;
import sk.vrto.service.dao.ContactRepository;
import sk.vrto.web.base.Presenter;
import sk.vrto.web.events.ContactRemovedEvent;
import sk.vrto.web.events.ContactUpdatedEvent;
import sk.vrto.web.events.UiEmailEvent;
import sk.vrto.web.views.ContactView;

@Component
@Scope("prototype")
public class ContactPresenter extends Presenter<ContactView> {

    private final ContactRepository contactRepository;

    /**
     * @param contactRepository Repository for accessing contacts
     */
    @Autowired
    public ContactPresenter(@Qualifier("dao.contactRepository") ContactRepository contactRepository) {
        this.contactRepository = contactRepository;
    }

    public void removeContact(Contact contact) {
        String email = contact.getEmail();
        contactRepository.delete(contact);
        eventBus.post(new ContactRemovedEvent(email));
    }

    /**
     * When view is in edit mode, it updates the contact in the repository
     * and propagates changes for intersted components.<br />
     * When contact is not in edit mode, edit mode is enabled.
     * @param contact Updated contact.
     */
    public void editContact(Contact contact) {
        if (view.getViewPopup().isEditMode()) {
            contact.setName(view.getViewPopup().getNameField().getValue().toString());
            contactRepository.update(contact);
            view.getViewPopup().disableEditMode();
            eventBus.post(new ContactUpdatedEvent(contact, this));
        } else {
            view.getViewPopup().enableEditMode();
        }
    }

    /**
     * Propagates event for opening new email window.
     * @param contact Contact to write new email to
     */
    public void newEmail(Contact contact) {
        eventBus.post(new UiEmailEvent.OpenWindowEvent(contact));
    }

}
TOP

Related Classes of sk.vrto.web.presenters.ContactPresenter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.