From: Lukas P. <pe...@us...> - 2002-07-26 09:32:44
|
Update of /cvsroot/javaprofiler/module/net/sourceforge/javaprofiler/module/views In directory usw-pr-cvs1:/tmp/cvs-serv13254 Modified Files: TimeSeriesModel.java Log Message: added shift method Index: TimeSeriesModel.java =================================================================== RCS file: /cvsroot/javaprofiler/module/net/sourceforge/javaprofiler/module/views/TimeSeriesModel.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** TimeSeriesModel.java 15 Jul 2002 11:16:29 -0000 1.1 --- TimeSeriesModel.java 26 Jul 2002 09:32:39 -0000 1.2 *************** *** 1,105 **** ! package net.sourceforge.javaprofiler.module.views; ! ! import javax.swing.event.EventListenerList; ! import javax.swing.event.ChangeListener; ! import javax.swing.event.ChangeEvent; ! ! /** Holds data of a time series. Data are stored in an <code>int</code> array. ! * @author Lukas Petru ! */ ! public class TimeSeriesModel { ! /** Holds time series values. */ ! private int[] data; ! ! private transient ChangeEvent changeEvent = null; ! private EventListenerList listenerList = new EventListenerList(); ! ! public TimeSeriesModel() { ! // test data ! data=new int[20]; ! for (int i=0; i<10; i++) ! data[i]=i; ! for (int i=10; i<20; i++) ! data[i]=20-i; ! } ! ! /** Sets new time series values. */ ! public void setData(int[] series) { ! if (series==null) ! throw new IllegalArgumentException("null"); ! data=series; ! fireStateChanged(); ! } ! ! /** Returns current time series values. You must not modify the ! returned value. Returned value is not null. ! */ ! public int[] getData() { ! return data; ! } ! ! /** Returns a copy of time series values. You can freely ! modify returned value. ! */ ! public int[] copyData() { ! int[] r=new int[data.length]; ! System.arraycopy(data, 0, r, 0, data.length); ! return r; ! } ! ! // event firing ! ! /** ! * Adds a <code>ChangeListener</code> to the TimeSeriesModel. ! * ! * @param l the listener to add ! */ ! public void addChangeListener(ChangeListener l) { ! listenerList.add(ChangeListener.class, l); ! } ! ! /** ! * Removes a <code>ChangeListener</code> from the TimeSeriesModel. ! * ! * @param l the listener to remove ! */ ! public void removeChangeListener(ChangeListener l) { ! listenerList.remove(ChangeListener.class, l); ! } ! ! /** ! * Returns an array of all the change listeners ! * registered on this <code>TimeSeriesModel</code>. ! * ! * @return all of this model's <code>ChangeListener</code>s ! * or an empty ! * array if no change listeners are currently registered ! */ ! public ChangeListener[] getChangeListeners() { ! return (ChangeListener[])listenerList.getListeners( ! ChangeListener.class); ! } ! ! /** ! * Notifies all listeners that have registered interest for ! * notification on this event type. The event instance ! * is created lazily. ! * ! * @see EventListenerList ! */ ! protected void fireStateChanged() { ! // Guaranteed to return a non-null array ! Object[] listeners = listenerList.getListenerList(); ! // Process the listeners last to first, notifying ! // those that are interested in this event ! for (int i = listeners.length-2; i>=0; i-=2) { ! if (listeners[i]==ChangeListener.class) { ! // Lazily create the event: ! if (changeEvent == null) ! changeEvent = new ChangeEvent(this); ! ((ChangeListener)listeners[i+1]).stateChanged(changeEvent); ! } ! } ! } ! } --- 1,137 ---- ! package net.sourceforge.javaprofiler.module.views; ! ! import javax.swing.event.EventListenerList; ! import javax.swing.event.ChangeListener; ! import javax.swing.event.ChangeEvent; ! ! /** Holds data of a time series. Data are stored in an <code>int</code> array. ! * @author Lukas Petru ! */ ! public class TimeSeriesModel { ! /** Holds time series values. */ ! private int[] data; ! /** Maximum value of the data. */ ! private int max; ! ! private transient ChangeEvent changeEvent = null; ! private EventListenerList listenerList = new EventListenerList(); ! ! public TimeSeriesModel() { ! // test data ! data=new int[20]; ! for (int i=0; i<10; i++) ! data[i]=i; ! for (int i=10; i<20; i++) ! data[i]=20-i; ! recompute(); ! } ! ! /** Shifts current values of time series by one position to left and adds new ! value to be the rightmost one. ! */ ! public void shift(int addVal) { ! System.arraycopy(data, 1, data, 0, data.length-1); ! data[data.length-1]=addVal; ! recompute(); ! fireStateChanged(); ! } ! ! /** Sets new time series values to a copy of a given argument. */ ! public void setData(int[] series) { ! if (series==null) ! throw new IllegalArgumentException("null"); ! data=new int[series.length]; ! System.arraycopy(series, 0, data, 0, series.length); ! recompute(); ! fireStateChanged(); ! } ! ! /** Returns current time series values. You must not modify the ! returned value. Returned value is not null. ! */ ! public int[] getData() { ! return data; ! } ! ! /** Returns a copy of time series values. You can freely ! modify returned value. ! */ ! public int[] copyData() { ! int[] r=new int[data.length]; ! System.arraycopy(data, 0, r, 0, data.length); ! return r; ! } ! ! /** Returns value of the largest data sample. */ ! public int getMax() { ! return max; ! } ! ! /** Returns value of the last (i.e. rightmost) data sample. */ ! public int getLast() { ! return data[data.length-1]; ! } ! ! /** Recalculates the max value. */ ! private void recompute() { ! max = 0; ! for (int i=0; i<data.length; i++) ! if (data[i] > max) max=data[i]; ! } ! ! // event firing ! ! /** ! * Adds a <code>ChangeListener</code> to the TimeSeriesModel. ! * ! * @param l the listener to add ! */ ! public void addChangeListener(ChangeListener l) { ! listenerList.add(ChangeListener.class, l); ! } ! ! /** ! * Removes a <code>ChangeListener</code> from the TimeSeriesModel. ! * ! * @param l the listener to remove ! */ ! public void removeChangeListener(ChangeListener l) { ! listenerList.remove(ChangeListener.class, l); ! } ! ! /** ! * Returns an array of all the change listeners ! * registered on this <code>TimeSeriesModel</code>. ! * ! * @return all of this model's <code>ChangeListener</code>s ! * or an empty ! * array if no change listeners are currently registered ! */ ! public ChangeListener[] getChangeListeners() { ! return (ChangeListener[])listenerList.getListeners( ! ChangeListener.class); ! } ! ! /** ! * Notifies all listeners that have registered interest for ! * notification on this event type. The event instance ! * is created lazily. ! * ! * @see EventListenerList ! */ ! protected void fireStateChanged() { ! // Guaranteed to return a non-null array ! Object[] listeners = listenerList.getListenerList(); ! // Process the listeners last to first, notifying ! // those that are interested in this event ! for (int i = listeners.length-2; i>=0; i-=2) { ! if (listeners[i]==ChangeListener.class) { ! // Lazily create the event: ! if (changeEvent == null) ! changeEvent = new ChangeEvent(this); ! ((ChangeListener)listeners[i+1]).stateChanged(changeEvent); ! } ! } ! } ! } |