1 package tim.prune.correlate;
3 import java.awt.event.ActionListener;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ItemEvent;
6 import java.awt.event.ItemListener;
7 import java.awt.event.KeyEvent;
8 import java.awt.event.KeyListener;
11 * Helper class to listen for changed options on the Correlators
12 * Tightly coupled but only to ok button and preview function
14 public class OptionsChangedListener implements KeyListener, ActionListener, ItemListener, Runnable
16 /** Correlator object for callbacks */
17 private Correlator _correlator;
19 private int _threadCount = 0;
21 /** Default delay time from change to preview trigger */
22 private static final long PREVIEW_DELAY_TIME = 2500L;
27 * @param inCorrelator correlator object for callbacks
29 public OptionsChangedListener(Correlator inCorrelator)
31 _correlator = inCorrelator;
35 * Respond to actions performed on control
36 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
38 public void actionPerformed(ActionEvent inEvent)
44 * Run method, called by separate thread(s)
45 * @see java.lang.Runnable#run()
49 // Wait for a certain time
51 Thread.sleep(PREVIEW_DELAY_TIME);
53 catch (InterruptedException ie) {}
55 if (_threadCount == 0) {
56 // trigger preview (false means automatic)
57 _correlator.createPreview(false);
62 * Respond to key pressed event
63 * @param inEvent event
65 public void keyPressed(KeyEvent inEvent)
70 /** Ignore key released events */
71 public void keyReleased(KeyEvent inEvent) {}
73 /** Ignore key typed events */
74 public void keyTyped(KeyEvent e) {}
77 * Respond to item change events (eg dropdown)
78 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
80 public void itemStateChanged(ItemEvent inEvent)
82 if (inEvent.getStateChange() == ItemEvent.SELECTED) {
88 * Trigger that an option has changed, whatever type
90 private void optionsChanged()
93 _correlator.disableOkButton();
94 // start new thread to trigger preview
96 new Thread(this).start();