Package org.beryl.gui.model

Source Code of org.beryl.gui.model.AbstractDataModel

/*
* Beryl - A web platform based on XML, XSLT and Java
* This file is part of the Beryl XML GUI
*
* Copyright (C) 2004 Wenzel Jakob <wazlaf@tigris.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.

* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-3107  USA
*/
package org.beryl.gui.model;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import org.beryl.gui.GUIException;
import org.beryl.gui.View;

public abstract class AbstractDataModel implements DataModel, Serializable {
  private transient Set modelChangeListeners = null;
  private transient Set views = null;
 
  public void addView(View view) {
    if (views == null)
      views = new HashSet();
    views.add(view);
  }

  public void removeView(View view) {
    if (views != null)
      views.remove(view);
  }

  public void addModelChangeListener(ModelChangeListener mcl) {
    if (modelChangeListeners == null)
      modelChangeListeners = new HashSet();
    modelChangeListeners.add(mcl);
  }

  public void removeModelChangeListener(ModelChangeListener mcl) {
    if (modelChangeListeners != null)
      modelChangeListeners.remove(mcl);
  }
 
  protected void fireModelEvent(ModelChangeEvent event) throws GUIException {
    if (views != null) {
      /* Update all views */
      for (Iterator i=views.iterator(); i.hasNext(); ) {
        View view = (View) i.next();
        /* Dont send events back to their source */
        if (view != event.getSource()) {
          view.modelChanged(event);
        }
      }
    }

    if (modelChangeListeners != null) {
    /* If there are additional ModelChangeListeners attached, notify them too */
      for (Iterator i=modelChangeListeners.iterator(); i.hasNext(); ) {
        ((ModelChangeListener)i.next()).modelChanged(event);
      }
    }
  }
}
TOP

Related Classes of org.beryl.gui.model.AbstractDataModel

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.