diff --git a/src/main/java/bdv/tools/transformation/ManualTransformActiveListener.java b/src/main/java/bdv/tools/transformation/ManualTransformActiveListener.java index 552665133848c7e76e98748ba031a2ebd9ddebe8..1d504c505694a3d904bc63759928ce9b30fbbe38 100644 --- a/src/main/java/bdv/tools/transformation/ManualTransformActiveListener.java +++ b/src/main/java/bdv/tools/transformation/ManualTransformActiveListener.java @@ -31,5 +31,5 @@ package bdv.tools.transformation; public interface ManualTransformActiveListener { - public void manualTransformActiveChanged( final boolean acitve ); + void manualTransformActiveChanged( final boolean active ); } diff --git a/src/main/java/bdv/tools/transformation/ManualTransformationEditor.java b/src/main/java/bdv/tools/transformation/ManualTransformationEditor.java index 3575d87bd693e957fd30d7c795b7189339a3f0b6..8d3729d2c290dd5a43bf794dcac33293e187c06f 100644 --- a/src/main/java/bdv/tools/transformation/ManualTransformationEditor.java +++ b/src/main/java/bdv/tools/transformation/ManualTransformationEditor.java @@ -29,18 +29,16 @@ */ package bdv.tools.transformation; -import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; -import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.KeyStroke; +import org.scijava.listeners.Listeners; import org.scijava.ui.behaviour.util.InputActionBindings; import bdv.viewer.Source; @@ -49,7 +47,7 @@ import bdv.viewer.state.SourceGroup; import bdv.viewer.state.ViewerState; import net.imglib2.realtransform.AffineTransform3D; import net.imglib2.ui.TransformListener; - +import org.scijava.ui.behaviour.util.RunnableAction; // TODO: what happens when the current source, display mode, etc is changed while the editor is active? deactivate? public class ManualTransformationEditor implements TransformListener< AffineTransform3D > @@ -72,7 +70,7 @@ public class ManualTransformationEditor implements TransformListener< AffineTran private final InputMap inputMap; - protected final CopyOnWriteArrayList< ManualTransformActiveListener > manualTransformActiveListeners; + private final Listeners.List< ManualTransformActiveListener > manualTransformActiveListeners; public ManualTransformationEditor( final ViewerPanel viewer, final InputActionBindings inputActionBindings ) { @@ -82,30 +80,12 @@ public class ManualTransformationEditor implements TransformListener< AffineTran liveTransform = new AffineTransform3D(); sourcesToModify = new ArrayList<>(); sourcesToFix = new ArrayList<>(); - manualTransformActiveListeners = new CopyOnWriteArrayList<>(); + manualTransformActiveListeners = new Listeners.SynchronizedList<>(); final KeyStroke abortKey = KeyStroke.getKeyStroke( KeyEvent.VK_ESCAPE, 0 ); - final Action abortAction = new AbstractAction( "abort manual transformation" ) - { - @Override - public void actionPerformed( final ActionEvent e ) - { - abort(); - } - - private static final long serialVersionUID = 1L; - }; + final Action abortAction = new RunnableAction( "abort manual transformation", this::abort ); final KeyStroke resetKey = KeyStroke.getKeyStroke( KeyEvent.VK_R, 0 ); - final Action resetAction = new AbstractAction( "reset manual transformation" ) - { - @Override - public void actionPerformed( final ActionEvent e ) - { - reset(); - } - - private static final long serialVersionUID = 1L; - }; + final Action resetAction = new RunnableAction( "reset manual transformation", this::reset ); actionMap = new ActionMap(); inputMap = new InputMap(); actionMap.put( "abort manual transformation", abortAction ); @@ -125,6 +105,7 @@ public class ManualTransformationEditor implements TransformListener< AffineTran viewer.setCurrentViewerTransform( frozenTransform ); viewer.showMessage( "aborted manual transform" ); active = false; + manualTransformActiveListeners.list.forEach( l -> l.manualTransformActiveChanged( active ) ); } } @@ -209,10 +190,7 @@ public class ManualTransformationEditor implements TransformListener< AffineTran viewer.setCurrentViewerTransform( frozenTransform ); viewer.showMessage( "fixed manual transform" ); } - for ( final ManualTransformActiveListener l : manualTransformActiveListeners ) - { - l.manualTransformActiveChanged( active ); - } + manualTransformActiveListeners.list.forEach( l -> l.manualTransformActiveChanged( active ) ); } public synchronized void toggle() @@ -232,13 +210,8 @@ public class ManualTransformationEditor implements TransformListener< AffineTran source.setIncrementalTransform( liveTransform.inverse() ); } - public void addManualTransformActiveListener( final ManualTransformActiveListener l ) - { - manualTransformActiveListeners.add( l ); - } - - public void removeManualTransformActiveListener( final ManualTransformActiveListener l ) + public Listeners< ManualTransformActiveListener > manualTransformActiveListeners() { - manualTransformActiveListeners.remove( l ); + return manualTransformActiveListeners; } }