/* * @(#)AbstractAxis.java * * Copyright 2002 EGANTT LLP. All rights reserved. * PROPRIETARY/QPL. Use is subject to license terms. */ package com.egantt.model.drawing.axis; import com.egantt.model.drawing.DrawingAxis; import com.egantt.model.drawing.axis.event.AxisEvent; import com.egantt.model.drawing.axis.event.AxisListener; import java.util.ArrayList; import java.util.Iterator; /** * AbstractAxis handles the basic implementation of an Axis which are not related * to the type of data that the Axis shall be supporting */ public abstract class AbstractAxis implements DrawingAxis { protected AxisInterval interval; protected ArrayList <AxisListener> listeners = new ArrayList<AxisListener>(2); /** notification list */ // __________________________________________________________________________ public AxisInterval getInterval() { return interval; } // __________________________________________________________________________ public synchronized void setInterval(AxisInterval interval) { this.interval = interval; fireStateChanged(new AxisEvent(this)); // notify changes } // __________________________________________________________________________ public boolean addAxisListener(AxisListener listener) { synchronized (listeners) { return listeners.add(listener); } } public boolean removeAxisListener(AxisListener listener) { synchronized (listeners) { return listeners.remove(listeners); } } // __________________________________________________________________________ protected void fireStateChanged(AxisEvent event) { synchronized (listeners) { for (Iterator iter = listeners.iterator(); iter.hasNext();) ((AxisListener) iter.next()).stateChanged(event); } } }