Skip to content

Commit fd9f1fe

Browse files
committed
Fix updating info text on individual sweep param panels.
The listeners of the AbstractSweepModelBase is not used. The notification when a parameter value changes is made directly to the param listeners. So we remove the unsued listeners. The filter params still need a listener, which we put.
1 parent 7e9cfbf commit fd9f1fe

4 files changed

Lines changed: 19 additions & 22 deletions

File tree

src/main/java/fiji/plugin/trackmate/helper/model/AbstractSweepModelBase.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import java.util.Iterator;
2525
import java.util.Map;
2626

27-
import org.scijava.listeners.Listeners;
2827
import org.scijava.plugin.SciJavaPlugin;
2928

3029
import fiji.plugin.trackmate.Settings;
@@ -38,8 +37,6 @@ public interface ModelListener
3837
public void modelChanged();
3938
}
4039

41-
private final transient Listeners.List< ModelListener > modelListeners = new Listeners.SynchronizedList<>();
42-
4340
protected final String name;
4441

4542
protected final Map< String, AbstractParamSweepModel< ? > > models;
@@ -49,9 +46,6 @@ protected AbstractSweepModelBase( final String name, final Map< String, Abstract
4946
super();
5047
this.name = name;
5148
this.models = models;
52-
53-
// Register models.
54-
models.values().forEach( m -> m.listeners().add( () -> notifyListeners() ) );
5549
}
5650

5751
public abstract Iterator< Settings > iterator( final Settings base, final int targetChannel );
@@ -65,15 +59,4 @@ public String getName()
6559
{
6660
return models;
6761
}
68-
69-
public final Listeners.List< ModelListener > listeners()
70-
{
71-
return modelListeners;
72-
}
73-
74-
protected final void notifyListeners()
75-
{
76-
for ( final ModelListener l : listeners().list )
77-
l.modelChanged();
78-
}
7962
}

src/main/java/fiji/plugin/trackmate/helper/model/ParameterSweepModel.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import fiji.plugin.trackmate.helper.model.AbstractSweepModelBase.ModelListener;
4343
import fiji.plugin.trackmate.helper.model.detector.DetectorSweepModel;
4444
import fiji.plugin.trackmate.helper.model.filter.FilterSweepModel;
45+
import fiji.plugin.trackmate.helper.model.parameter.AbstractParamSweepModel;
4546
import fiji.plugin.trackmate.helper.model.tracker.TrackerSweepModel;
4647
import fiji.plugin.trackmate.util.TMUtils;
4748

@@ -95,10 +96,9 @@ void reRegisterListeners()
9596

9697
private void reRegisterListeners( final Collection< ? extends AbstractSweepModelBase > models, final ModelListener notifier )
9798
{
98-
models.forEach( m -> {
99-
m.listeners().add( notifier );
100-
m.models.values().forEach( sm -> sm.listeners().add( notifier ) );
101-
} );
99+
for ( final AbstractSweepModelBase sweepModel : models )
100+
for ( final AbstractParamSweepModel< ? > paramModel : sweepModel.getModels().values() )
101+
paramModel.listeners().add( notifier );
102102
}
103103

104104
public Collection< DetectorSweepModel > detectorModels()

src/main/java/fiji/plugin/trackmate/helper/model/filter/FilterSweepModel.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import java.util.List;
77
import java.util.Map;
88

9+
import org.scijava.listeners.Listeners;
10+
911
import fiji.plugin.trackmate.Dimension;
1012
import fiji.plugin.trackmate.Settings;
1113
import fiji.plugin.trackmate.features.FeatureFilter;
@@ -29,6 +31,8 @@ public class FilterSweepModel extends AbstractSweepModelBase implements Iterable
2931

3032
public static final String ISABOVE = "ISABOVE";
3133

34+
private final transient Listeners.List< ModelListener > modelListeners = new Listeners.SynchronizedList<>();
35+
3236
public FilterSweepModel( final TrackMateObject target, final Map< String, String > featureNames, final FeatureFilter filter, final int index )
3337
{
3438
this( target, featureNames, index );
@@ -40,6 +44,16 @@ public FilterSweepModel( final TrackMateObject target, final Map< String, String
4044
super( "Filter on " + target.toString(), createModels( featureNames, index ) );
4145
}
4246

47+
public final Listeners.List< ModelListener > listeners()
48+
{
49+
return modelListeners;
50+
}
51+
52+
protected final void notifyListeners()
53+
{
54+
for ( final ModelListener l : listeners().list )
55+
l.modelChanged();
56+
}
4357

4458
/**
4559
* Sets this model to represent the single feature filter specified.

src/main/java/fiji/plugin/trackmate/helper/ui/ModuleParameterSweepPanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public ModuleParameterSweepPanel( final AbstractSweepModel< ? > model, final Str
124124
lblInfo.setText( str );
125125
};
126126
infoListener.modelChanged();
127-
model.listeners().add( infoListener );
127+
model.getModels().values().forEach( m -> m.listeners().add( infoListener ) );
128128
}
129129

130130
public static final JPanel createPanelFor( final AbstractParamSweepModel< ? > cm, final String spaceUnits, final String timeUnits )

0 commit comments

Comments
 (0)