Package cli_fmw.utils.delegate_models

Source Code of cli_fmw.utils.delegate_models.DelegateDateModel

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package cli_fmw.utils.delegate_models;

import cli_fmw.delegate.DelegateLine2;
import cli_fmw.main.ClipsException;
import cli_fmw.main.ContentStateListener;
import java.util.Date;
import org.infotechservice.ICalendar.BadDateException;
import org.infotechservice.ICalendar.DateEditorModelAbstract;
import org.infotechservice.ICalendar.components.ICDateChooser;

/**
*
* @param <T>
* @author petr
*/
abstract public class DelegateDateModel<T extends DelegateLine2> extends DateEditorModelAbstract implements ContentStateListener {

    private T delegate;
    private Date lastDate = null;
    private Date currentDate = null;
    private boolean silent = false;

    public DelegateDateModel(T delegate, ICDateChooser chooser) {
        this.delegate = delegate;
        //Надеюсь это работает
        delegate.addContentStateListener(this);
        chooser.getDateEditor().setModel(this);
    }

    protected T getDelegate(){
        return delegate;
    }

    @Override
    public final Date getDate() {
        try {
            return getDateImp();
        } catch (ClipsException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    @Override
    public final void setDate(Date date) throws BadDateException {
        boolean e = true;
        silent = true;
        try {
            lastDate = currentDate;
            setDateImp(date);
            currentDate = date;
            e = false;
        } catch (ClipsException ex) {
            throw new BadDateException(ex.getMessage());
        }finally{
            silent = false;
            if (e){
                currentDate = null;
            }
            fireDateChanged(lastDate, currentDate);
        }
    }

    abstract protected Date getDateImp() throws ClipsException;

    abstract protected void setDateImp(Date date) throws ClipsException;

    @Override
    public void contentStateChanged() {
        if (!silent){
            if (lastDate == null && getDate() != null
                    || lastDate != null && getDate() == null
                    || lastDate != null && getDate() != null && lastDate.getTime() != getDate().getTime()){
                fireDateChanged(lastDate, getDate());
            }
        }
    }



}
TOP

Related Classes of cli_fmw.utils.delegate_models.DelegateDateModel

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.