Package com.nexirius.multimail.datamodel

Source Code of com.nexirius.multimail.datamodel.MailListModel$MailArrayListener

//{HEADER
/**
* This class is part of jnex 'Nexirius Application Framework for Java'
* Source File Date:   Wed Feb 11 22:45:40 GMT+01:00 2004
* @version:           2.8 (Wed Feb 18 07:27:51 GMT+01:00 2004)
* Class name:         com.nexirius.com.nexirius.multimail.datamodel.MailListModel
*
* Copyright (C) Nexirius GmbH, CH-4450 Sissach, Switzerland (www.nexirius.ch)
*
* <p>This library is free software; you can redistribute it and/or<br>
* modify it under the terms of the GNU Lesser General Public<br>
* License as published by the Free Software Foundation; either<br>
* version 2.1 of the License, or (at your option) any later version.</p>
*
* <p>This library is distributed in the hope that it will be useful,<br>
* but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU<br>
* Lesser General Public License for more details.</p>
*
* <p>You should have received a copy of the GNU Lesser General Public<br>
* License along with this library; if not, write to the Free Software<br>
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</p>
* </blockquote>
*
* <p>
* Nexirius GmbH, hereby disclaims all copyright interest in<br>
* the library jnex' 'Nexirius Application Framework for Java' written<br>
* by Marcel Baumann.</p>
*/
//}HEADER
package com.nexirius.multimail.datamodel;

import com.nexirius.framework.datamodel.DataModel;
import com.nexirius.framework.datamodel.DataModelAdaptor;
import com.nexirius.framework.datamodel.DataModelEnumeration;
import com.nexirius.framework.datamodel.DataModelEvent;
import com.nexirius.framework.datamodel.DefaultDataModelCommand;
import com.nexirius.framework.application.DialogManager;
import com.nexirius.framework.dataeditor.ArrayEditorCreator;
import com.nexirius.framework.dataeditor.StructEditorCreator;
import com.nexirius.framework.swing.SwingViewerCreator;
import com.nexirius.multimail.dataviewer.MailArrayEditor;

public class MailListModel extends EditListModel
{
    public static final String _NEXIRIUS_VERSION = "2.8";
    MailArrayModel mailArray;

    public MailListModel()
    {
        super("MailList", new MailArrayModel());

        mailArray = (MailArrayModel)getList();
        init();
    }

    public DataModel createItem()
    {
        return new MailModel();
    }

    private void init()
    {
        mailArray.addDataModelListener(new MailArrayListener());
        appendMethod(new DefaultDataModelCommand("doResetSent"));
        appendMethod(new DefaultDataModelCommand("doSendSelected"));
        appendMethod(new DefaultDataModelCommand("doDeleteEntry"));
        appendMethod(new DefaultDataModelCommand("doToggleDoNotSend"));
    }

    public void doEditList() {
        DialogManager.getPopupEditorAdaptor().popupEdit(mailArray, new ArrayEditorCreator(new SwingViewerCreator(MailArrayEditor.class), 1000));
    }

    class MailArrayListener extends DataModelAdaptor
    {
        public void dataModelChangeValue(DataModelEvent ev)
        {
        }
    }

    public DataModelEnumeration getMailModelEnumeration()
    {
        return mailArray.getEnumeration();
    }

    public MailModel getHighlightedMail() {
        return (MailModel)mailArray.getHighlightedItem();
    }

    public void setHighlightedMail(int index) {
        mailArray.setHighlightedItem(index);
    }

    public void doResetSent()
    {
        MailModel m = getHighlightedMail();

        if (m != null) {
            m.doResetSent();
        }
    }

    public void doSendSelected()
    {
        ((MainModel)getParentDataModel()).doSendSelected();
    }

    public void doDeleteEntry()
    {
        MailModel child = getHighlightedMail();
        boolean sel = hasSelectedEntries();

        if (child != null) {
            if (sel) {
                try {
                    if (DialogManager.ask("Delete highlighted or all selected?", "highlighted", "all selected", true, true)) {
                        getList().removeItem(child);
                    } else {
                        removeSelected();
                    }
                } catch(RuntimeException ex) {
                }
            } else {
                getList().removeItem(child);
            }
        } else {
            if (sel) {
                removeSelected();
            }
        }
    }

    private void removeSelected() {
        DataModelEnumeration en = getList().getEnumeration();

        while (en.hasMore()) {
            MailModel mail = (MailModel) en.next();

            if (mail.isSelected()) {
                en.removeActualItem();
            }
        }

        getList().fireValueChange();
    }

    private boolean hasSelectedEntries() {
        DataModelEnumeration en = getList().getEnumeration();

        while (en.hasMore()) {
            MailModel mail = (MailModel) en.next();

            if (mail.isSelected()) {
                return true;
            }
        }

        return false;
    }


    public void doToggleDoNotSend()
    {
        MailModel child = getHighlightedMail();

        child.toggleDoNotSend();
    }

    public MailArrayModel getMailArray() {
        return (MailArrayModel) getList();
    }
}
TOP

Related Classes of com.nexirius.multimail.datamodel.MailListModel$MailArrayListener

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.