ContactEditView.java

/**
 * Copyright (c) 2013 Nokia Corporation. All rights reserved.
 * Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation.
 * Oracle and Java are trademarks or registered trademarks of Oracle and/or its
 * affiliates. Other product and company names mentioned herein may be trademarks
 * or trade names of their respective owners.
 * See LICENSE.TXT for license information.
 */

package com.nokia.example.voip.view;

import java.io.IOException;

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;

import com.nokia.example.voip.ViewManager;
import com.nokia.example.voip.VoIPExample;
import com.nokia.example.voip.controller.ContactsManager;
import com.nokia.example.voip.model.Contact;

public class ContactEditView
    extends Form {

    private ViewManager viewManager;
    private ContactsManager contactsManager;
    private Contact contact;
    private TextField nameTextField;
    private TextField voipAddressTextField;
    private Command saveCommand;

    public ContactEditView(ViewManager viewManager,
                           ContactsManager contactsManager)
    {
        super("Add contact");
        contact = new Contact("", "");
        init(viewManager, contactsManager);
    }

    public ContactEditView(Contact contact,
                           ViewManager viewManager,
                           ContactsManager contactsManager)
    {
        super("Edit contact");
        this.contact = contact;
        init(viewManager, contactsManager);
    }

    private final void init(ViewManager viewManager,
                            ContactsManager contactsManager)
    {
        this.viewManager = viewManager;
        this.contactsManager = contactsManager;
        
        nameTextField = new TextField(
            "Name",
            contact.getName(),
            Integer.MAX_VALUE,
            TextField.INITIAL_CAPS_WORD);
        
        append(nameTextField);
        
        voipAddressTextField = new TextField(
            "VoIP address",
            contact.getVoipAddress(),
            Integer.MAX_VALUE,
            TextField.EMAILADDR);
        
        append(voipAddressTextField);
        
        saveCommand = new Command("Save", Command.SCREEN, 0);
        addCommand(saveCommand);
        setCommandListener(new ContactEditViewCommandListener());
    }

    private boolean validate() {
        if (nameTextField.getString().equals("")
            || voipAddressTextField.getString().equals(""))
        {
            Alert errorAlert = new Alert("Error");
            errorAlert.setType(AlertType.ERROR);
            errorAlert.setString("Please fill in all fields.");
            Display.getDisplay(VoIPExample.getInstance())
                .setCurrent(errorAlert);
            return false;
        }
        
        return true;
    }

    private class ContactEditViewCommandListener
        implements CommandListener {
        
        public void commandAction(Command c, Displayable d) {
            if (c.getCommandType() == Command.BACK) {
                viewManager.popView();
            }
            
            if (c == saveCommand) {
                if (validate()) {
                    try {
                        contact.setName(nameTextField.getString());
                        contact
                            .setVoipAddress(voipAddressTextField.getString());
                        contactsManager.addContact(contact);
                    }
                    catch (IOException ex) {
                        ex.printStackTrace();
                    }
                    
                    viewManager.popView();
                }
            }
        }
    }
}