001    package org.LiveGraph.settings;
002    
003    import org.LiveGraph.events.EventType;
004    import org.LiveGraph.events.Validation;
005    
006    /**
007     * This class defines the event types for events that may be raised by any of the LiveGraph
008     * settings objects to notify various application components of a changed setting.
009     * <p>Currently, there are 3 settings classes ({@link DataFileSettings}, {@link GraphSettings}
010     * and {@link DataSeriesSettings}) and the LiveGraph application holds a unique instance
011     * of each of these classes. If either a GUI or a third-party application wishes to change
012     * any of the current LiveGraph settings at run-time, it must obtain the appropriate settings
013     * object from the LiveGraph application and use one of the provided setter methods. The
014     * settings object will change its internal setting value then raise an event to notify all
015     * LiveGraph components interested in that particular setting of the changed value.</p>
016     * 
017     * <p>
018     *   <strong>LiveGraph</strong>
019     *   (<a href="http://www.live-graph.org" target="_blank">http://www.live-graph.org</a>).
020     * </p> 
021     * <p>Copyright (c) 2007-2008 by G. Paperin.</p>
022     * <p>File: SettingsEvent.java</p>
023     * <p style="font-size:smaller;">Redistribution and use in source and binary forms, with or
024     *    without modification, are permitted provided that the following terms and conditions are met:
025     * </p>
026     * <p style="font-size:smaller;">1. Redistributions of source code must retain the above
027     *    acknowledgement of the LiveGraph project and its web-site, the above copyright notice,
028     *    this list of conditions and the following disclaimer.<br />
029     *    2. Redistributions in binary form must reproduce the above acknowledgement of the
030     *    LiveGraph project and its web-site, the above copyright notice, this list of conditions
031     *    and the following disclaimer in the documentation and/or other materials provided with
032     *    the distribution.<br />
033     *    3. All advertising materials mentioning features or use of this software or any derived
034     *    software must display the following acknowledgement:<br />
035     *    <em>This product includes software developed by the LiveGraph project and its
036     *    contributors.<br />(http://www.live-graph.org)</em><br />
037     *    4. All advertising materials distributed in form of HTML pages or any other technology
038     *    permitting active hyper-links that mention features or use of this software or any
039     *    derived software must display the acknowledgment specified in condition 3 of this
040     *    agreement, and in addition, include a visible and working hyper-link to the LiveGraph
041     *    homepage (http://www.live-graph.org).
042     * </p>
043     * <p style="font-size:smaller;">THIS SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY
044     *    OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
045     *    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND  NONINFRINGEMENT. IN NO EVENT SHALL
046     *    THE AUTHORS, CONTRIBUTORS OR COPYRIGHT  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
047     *    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING  FROM, OUT OF OR
048     *    IN CONNECTION WITH THE SOFTWARE OR THE USE OR  OTHER DEALINGS IN THE SOFTWARE.
049     * </p>
050     * 
051     * @author Greg Paperin (<a href="http://www.paperin.org" target="_blank">http://www.paperin.org</a>)
052     * @version {@value org.LiveGraph.LiveGraph#version}
053     *
054     */
055    @Validation(Validation.Requirement.MUST_VALIDATE)
056    public enum SettingsEvent implements EventType {
057    
058    
059    //----------- DataFileSettings events: { -------------------------------------------------------
060    
061    /**
062     * <p>Events of this type are <strong>raised</strong> by {@link DataFileSettings} after
063     * loading settings from a file; events of this type are <strong>validated</strong> before
064     * loading the settings, and loading proceeds only if the event is validated by all listeners.</p>
065     * <p>When issuing events of type {@code DFS_Load}, {@code DataFileSettings} initialises
066     * the event info parameters as follows:
067     * <table>
068     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
069     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
070     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
071     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
072     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code String} containg the file name</td></tr>
073     * </table>
074     * </p> 
075     */
076    DFS_Load,
077    
078    
079    /**
080     * <p>Events of this type are <strong>raised</strong> by {@link DataFileSettings} after
081     * saving settings to a file; events of this type are <strong>validated</strong> before
082     * saving the settings, and saving proceeds only if the event is validated by all listeners.</p>
083     * <p>When issuing events of type {@code GS_Save}, {@code DataFileSettings} initialises
084     * the event info parameters as follows:
085     * <table>
086     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
087     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
088     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
089     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
090     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code String} containg the file name</td></tr>
091     * </table>
092     * </p> 
093     */
094    DFS_Save,
095    
096    
097    /**
098     * <p>Events of this type are <strong>raised</strong> by {@link DataFileSettings} after
099     * changing the data source file; events of this type are <strong>validated</strong> before changing
100     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
101     * <p>When issuing events of type {@code DFS_DataFile}, {@code DataFileSettings} initialises
102     * the event info parameters as follows:
103     * <table>
104     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
105     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
106     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
107     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
108     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code String} containg the file name</td></tr>
109     * </table>
110     * </p> 
111     */
112    DFS_DataFile,
113    
114    
115    /**
116     * <p>Events of this type are <strong>raised</strong> by {@link DataFileSettings} after
117     * changing the setting determining whether to show all or only the tail data;
118     * events of this type are <strong>validated</strong> before changing
119     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
120     * <p>When issuing events of type {@code DFS_ShowOnlyTailData}, {@code DataFileSettings} initialises
121     * the event info parameters as follows:
122     * <table>
123     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
124     * <tr><td>{@code getInfoBoolean()}</td>      <td>{@code true} (tail data) or {@code false} (all data)</td></tr>
125     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
126     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
127     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
128     * </table>
129     * </p> 
130     */
131    DFS_ShowOnlyTailData,
132    
133    
134    /**
135     * <p>Events of this type are <strong>raised</strong> by {@link DataFileSettings} after
136     * changing data caching setting; events of this type are <strong>validated</strong> before changing
137     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
138     * <p>When issuing events of type {@code DFS_DoNotCacheData}, {@code DataFileSettings} initialises
139     * the event info parameters as follows:
140     * <table>
141     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
142     * <tr><td>{@code getInfoBoolean()}</td>      <td>{@code true} (don't cache) or {@code false} (do cache)</td></tr>
143     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
144     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
145     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
146     * </table>
147     * </p> 
148     */
149    DFS_DoNotCacheData,
150    
151    
152    /**
153     * <p>Events of this type are <strong>raised</strong> by {@link DataFileSettings} after
154     * changing the update frequency; events of this type are <strong>validated</strong> before changing
155     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
156     * <p>When issuing events of type {@code DFS_UpdateFrequency}, {@code DataFileSettings} initialises
157     * the event info parameters as follows:
158     * <table>
159     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
160     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
161     * <tr><td>{@code getInfoLong()}</td>         <td>undate frequency in milliseconds</td></tr>
162     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
163     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
164     * </table>
165     * </p> 
166     */
167    DFS_UpdateFrequency,
168    
169    //----------- } DataFileSettings events. -------------------------------------------------------
170    
171    
172    //----------- GraphSettings events: { -------------------------------------------------------
173    
174    /**
175     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
176     * loading settings from a file; events of this type are <strong>validated</strong> before
177     * loading the settings, and loading proceeds only if the event is validated by all listeners.</p>
178     * <p>When issuing events of type {@code GS_Load}, {@code GraphSettings} initialises
179     * the event info parameters as follows:
180     * <table>
181     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
182     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
183     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
184     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
185     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code String} containg the file name</td></tr>
186     * </table>
187     * </p> 
188     */
189    GS_Load,
190    
191    
192    /**
193     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
194     * saving settings to a file; events of this type are <strong>validated</strong> before
195     * saving the settings, and saving proceeds only if the event is validated by all listeners.</p>
196     * <p>When issuing events of type {@code GS_Save}, {@code GraphSettings} initialises
197     * the event info parameters as follows:
198     * <table>
199     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
200     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
201     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
202     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
203     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code String} containg the file name</td></tr>
204     * </table>
205     * </p> 
206     */
207    GS_Save,
208    
209    
210    /**
211     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
212     * changing bottom edge of the visible data area
213     * events of this type are <strong>validated</strong> before changing
214     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
215     * <p>When issuing events of type {@code GS_MinY}, {@code GraphSettings} initialises
216     * the event info parameters as follows:
217     * <table>
218     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
219     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
220     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
221     * <tr><td>{@code getInfoDouble()}</td>               <td><em>minY</em> ({@code Double.NaN} indicates <em>auto</em>)</td></tr>
222     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
223     * </table>
224     * </p> 
225     */
226    GS_MinY,
227    
228    
229    /**
230     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
231     * changing top edge of the visible data area;
232     * events of this type are <strong>validated</strong> before changing
233     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
234     * <p>When issuing events of type {@code GS_MaxY}, {@code GraphSettings} initialises
235     * the event info parameters as follows:
236     * <table>
237     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
238     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
239     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
240     * <tr><td>{@code getInfoDouble()}</td>               <td><em>maxY</em> ({@code Double.NaN} indicates <em>auto</em>)</td></tr>
241     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
242     * </table>
243     * </p> 
244     */
245    GS_MaxY,
246    
247    
248    /**
249     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
250     * changing left edge of the visible data area;
251     * events of this type are <strong>validated</strong> before changing
252     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
253     * <p>When issuing events of type {@code GS_MinX}, {@code GraphSettings} initialises
254     * the event info parameters as follows:
255     * <table>
256     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
257     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
258     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
259     * <tr><td>{@code getInfoDouble()}</td>               <td><em>minX</em> ({@code Double.NaN} indicates <em>auto</em>)</td></tr>
260     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
261     * </table>
262     * </p> 
263     */
264    GS_MinX,
265    
266    
267    /**
268     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
269     * changing right edge of the visible data area;
270     * events of this type are <strong>validated</strong> before changing
271     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
272     * <p>When issuing events of type {@code GS_MaxX}, {@code GraphSettings} initialises
273     * the event info parameters as follows:
274     * <table>
275     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
276     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
277     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
278     * <tr><td>{@code getInfoDouble()}</td>               <td><em>maxX</em> ({@code Double.NaN} indicates <em>auto</em>)</td></tr>
279     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
280     * </table>
281     * </p> 
282     */
283    GS_MaxX,
284    
285    
286    /**
287     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
288     * changing type of the vertical grid; events of this type are <strong>validated</strong> before changing
289     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
290     * <p>When issuing events of type {@code GS_VGridType}, {@code GraphSettings} initialises
291     * the event info parameters as follows:
292     * <table>
293     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
294     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
295     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
296     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
297     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code VGridType} object</td></tr>
298     * </table>
299     * </p> 
300     */
301    GS_VGridType,
302    
303    
304    /**
305     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
306     * changing spacing of the vertical grid; events of this type are <strong>validated</strong> before changing
307     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
308     * <p>When issuing events of type {@code GS_VGridSize}, {@code GraphSettings} initialises
309     * the event info parameters as follows:
310     * <table>
311     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
312     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
313     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
314     * <tr><td>{@code getInfoDouble()}</td>               <td>vertical grid spacing</td></tr>
315     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
316     * </table>
317     * </p> 
318     */
319    GS_VGridSize,
320    
321    
322    /**
323     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
324     * changing colour of the vertical grid; events of this type are <strong>validated</strong> before changing
325     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
326     * <p>When issuing events of type {@code GS_VGridColour}, {@code GraphSettings} initialises
327     * the event info parameters as follows:
328     * <table>
329     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
330     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
331     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
332     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
333     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code Color} object</td></tr>
334     * </table>
335     * </p> 
336     */
337    GS_VGridColour,
338    
339    
340    /**
341     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
342     * changing type of the horisontal grid; events of this type are <strong>validated</strong> before changing
343     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
344     * <p>When issuing events of type {@code GS_HGridType}, {@code GraphSettings} initialises
345     * the event info parameters as follows:
346     * <table>
347     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
348     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
349     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
350     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
351     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code HGridType} object</td></tr>
352     * </table>
353     * </p> 
354     */
355    GS_HGridType,
356    
357    
358    /**
359     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
360     * changing horisontal grid spacing; events of this type are <strong>validated</strong> before changing
361     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
362     * <p>When issuing events of type {@code GS_HGridSize}, {@code GraphSettings} initialises
363     * the event info parameters as follows:
364     * <table>
365     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
366     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
367     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
368     * <tr><td>{@code getInfoDouble()}</td>               <td>horisontal grid spacing</td></tr>
369     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
370     * </table>
371     * </p> 
372     */
373    GS_HGridSize,
374    
375    
376    /**
377     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
378     * changing the colour of the horisontal grid;
379     * events of this type are <strong>validated</strong> before changing
380     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
381     * <p>When issuing events of type {@code GS_HGridColour}, {@code GraphSettings} initialises
382     * the event info parameters as follows:
383     * <table>
384     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
385     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
386     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
387     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
388     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code Color} object</td></tr>
389     * </table>
390     * </p> 
391     */
392    GS_HGridColour,
393    
394    
395    /**
396     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
397     * changing the transformation mode for x-axis values;
398     * events of this type are <strong>validated</strong> before changing
399     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
400     * <p>When issuing events of type {@code GS_XAxisType}, {@code GraphSettings} initialises
401     * the event info parameters as follows:
402     * <table>
403     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
404     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
405     * <tr><td>{@code getInfoLong()}</td>         <td>index of the data series to use as the a-axis</td></tr>
406     * <tr><td>{@code getInfoDouble()}</td>               <td>the x-axis transformation parameter</td></tr>
407     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code XAxisType} object</td></tr>
408     * </table>
409     * </p> 
410     */
411    GS_XAxisType,
412    
413    
414    /**
415     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
416     * changing the index of the data series to use as the a-axis;
417     * events of this type are <strong>validated</strong> before changing
418     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
419     * <p>When issuing events of type {@code GS_XAxisSeriesIndex}, {@code GraphSettings} initialises
420     * the event info parameters as follows:
421     * <table>
422     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
423     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
424     * <tr><td>{@code getInfoLong()}</td>         <td>index of the data series to use as the a-axis</td></tr>
425     * <tr><td>{@code getInfoDouble()}</td>               <td>the x-axis transformation parameter</td></tr>
426     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code XAxisType} object</td></tr>
427     * </table>
428     * </p> 
429     */
430    GS_XAxisSeriesIndex,
431    
432    
433    /**
434     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
435     * changing transformation parameter for x-axis values;
436     * events of this type are <strong>validated</strong> before changing
437     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
438     * <p>When issuing events of type {@code GS_XAxisParamValue}, {@code GraphSettings} initialises
439     * the event info parameters as follows:
440     * <table>
441     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
442     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
443     * <tr><td>{@code getInfoLong()}</td>         <td>index of the data series to use as the a-axis</td></tr>
444     * <tr><td>{@code getInfoDouble()}</td>               <td>the x-axis transformation parameter</td></tr>
445     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code XAxisType} object</td></tr>
446     * </table>
447     * </p> 
448     */
449    GS_XAxisParamValue,
450    
451    
452    /**
453     * <p>Events of this type are <strong>raised</strong> by {@link GraphSettings} after
454     * changing whther of not data points should be highlighted as the mouse is hovered over them;
455     * events of this type are <strong>validated</strong> before changing
456     * this settings value, and the change proceeds only if the event is validated by all listeners.</p>
457     * <p>When issuing events of type {@code GS_HighlightDataPoints}, {@code GraphSettings} initialises
458     * the event info parameters as follows:
459     * <table>
460     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
461     * <tr><td>{@code getInfoBoolean()}</td>      <td>{@code true} (highlight) or {@code false} (don't)</td></tr>
462     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
463     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
464     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
465     * </table>
466     * </p> 
467     */
468    GS_HighlightDataPoints,
469    
470    //----------- } GraphSettings events. -------------------------------------------------------
471    
472    
473    // ----------- DataSeriesSettings events: { -------------------------------------------------------
474    
475    /**
476     * <p>Events of this type are <strong>raised</strong> by {@link DataSeriesSettings} after
477     * loading the settings from a file; events of this type are <strong>validated</strong> before
478     * loading, and loading proceeds only if the event is validated by all listeners.</p>
479     * <p>When issuing events of type {@code DSS_Load}, {@code DataSeriesSettings} initialises
480     * the event info parameters as follows:
481     * <table>
482     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
483     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
484     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
485     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
486     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code String} containg the file name</td></tr>
487     * </table>
488     * </p> 
489     * 
490     * This event type indicates that the <strong>data series setttings</strong> have
491     * been loaded or are about to be loaded from a file.<br />
492     * 
493     */
494    DSS_Load,
495    
496    
497    /**
498     * <p>Events of this type are <strong>raised</strong> by {@link DataSeriesSettings} after
499     * saving the settings to a file; events of this type are <strong>validated</strong> before
500     * saving, and saving proceeds only if the event is validated by all listeners.</p>
501     * <p>When issuing events of type {@code DSS_Save}, {@code DataSeriesSettings} initialises
502     * the event info parameters as follows:
503     * <table>
504     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
505     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
506     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
507     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
508     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
509     * </table>
510     * </p> 
511     */
512    DSS_Save,
513    
514    
515    /**
516     * <p>Events of this type are <strong>raised</strong> by {@link DataSeriesSettings} after
517     * changing the visibility of several data series in one go;
518     * events of this type are <strong>validated</strong> before
519     * changing the visibility, and changing proceeds only if the event is validated by all listeners.</p>
520     * <p>When issuing events of type {@code DSS_SeriesRange_Visibility}, {@code DataSeriesSettings} initialises
521     * the event info parameters as follows:
522     * <table>
523     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
524     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
525     * <tr><td>{@code getInfoLong()}</td>         <td><em>unspecified</em></td></tr>
526     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
527     * <tr><td>{@code getInfoObject()}</td>               <td>{@code Pair<Integer, Integer>(fromSeries, fromSeries)}</td></tr>
528     * </table>
529     * </p> 
530     */
531    DSS_SeriesRange_Visibility,
532    
533    
534    /**
535     * <p>Events of this type are <strong>raised</strong> by {@link DataSeriesSettings} after
536     * changing the visibility of a data series; events of this type are <strong>validated</strong> before
537     * changing the visibility, and changing proceeds only if the event is validated by all listeners.</p>
538     * <p>When issuing events of type {@code DSS_Series_Visibility}, {@code DataSeriesSettings} initialises
539     * the event info parameters as follows:
540     * <table>
541     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
542     * <tr><td>{@code getInfoBoolean()}</td>      <td>{@code true} (show) or {@code false} (don't show)</td></tr>
543     * <tr><td>{@code getInfoLong()}</td>         <td>{@code seriesIndex}</td></tr>
544     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
545     * <tr><td>{@code getInfoObject()}</td>               <td><em>unspecified</em></td></tr>
546     * </table>
547     * </p> 
548     */
549    DSS_Series_Visibility,
550    
551    
552    /**
553     * <p>Events of this type are <strong>raised</strong> by {@link DataSeriesSettings} after
554     * changing the plot colour for a data series; events of this type are <strong>validated</strong> before
555     * changing the colour, and changing proceeds only if the event is validated by all listeners.</p>
556     * <p>When issuing events of type {@code DSS_Series_Colour}, {@code DataSeriesSettings} initialises
557     * the event info parameters as follows:
558     * <table>
559     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
560     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
561     * <tr><td>{@code getInfoLong()}</td>         <td>{@code seriesIndex}</td></tr>
562     * <tr><td>{@code getInfoDouble()}</td>               <td><em>unspecified</em></td></tr>
563     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code Color} object for the new color</td></tr>
564     * </table>
565     * </p> 
566     */
567    DSS_Series_Colour,
568    
569    
570    /**
571     * <p>Events of this type are <strong>raised</strong> by {@link DataSeriesSettings} after
572     * changing the values transformation mode for a data series;
573     * events of this type are <strong>validated</strong> before
574     * changing the transformation mode, and changing proceeds only if the event is validated by all listeners.</p>
575     * <p>When issuing events of type {@code DSS_Series_TransformMode}, {@code DataSeriesSettings} initialises
576     * the event info parameters as follows:
577     * <table>
578     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
579     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
580     * <tr><td>{@code getInfoLong()}</td>         <td>{@code seriesIndex}</td></tr>
581     * <tr><td>{@code getInfoDouble()}</td>               <td>transformation parameter</td></tr>
582     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code DataSeriesSettings.TransformMode} object</td></tr>
583     * </table>
584     * </p> 
585     */
586    DSS_Series_TransformMode,
587    
588    
589    /**
590     * <p>Events of this type are <strong>raised</strong> by {@link DataSeriesSettings} after
591     * changing the values transformation parameter for a data series;
592     * events of this type are <strong>validated</strong> before
593     * changing the values transformation parameter,
594     * and changing proceeds only if the event is validated by all listeners.</p>
595     * <p>When issuing events of type {@code DSS_Series_TransformParam}, {@code DataSeriesSettings} initialises
596     * the event info parameters as follows:
597     * <table>
598     * <tr><th>Info parameter</th>                                <th>Value</th></tr>
599     * <tr><td>{@code getInfoBoolean()}</td>      <td><em>unspecified</em></td></tr>
600     * <tr><td>{@code getInfoLong()}</td>         <td>{@code seriesIndex}</td></tr>
601     * <tr><td>{@code getInfoDouble()}</td>               <td>transformation parameter</td></tr>
602     * <tr><td>{@code getInfoObject()}</td>               <td>a {@code DataSeriesSettings.TransformMode} object</td></tr>
603     * </table>
604     * </p> 
605     */
606    DSS_Series_TransformParam,
607    
608    // ----------- } DataSeriesSettings events. -------------------------------------------------------
609    
610    } // public enum SettingsEvent