Skip to content

Commit

Permalink
listen for new/removed power managers
Browse files Browse the repository at this point in the history
  • Loading branch information
Steve Rawlinson committed Feb 23, 2018
1 parent a9ba081 commit 81e4945
Showing 1 changed file with 20 additions and 3 deletions.
23 changes: 20 additions & 3 deletions java/src/jmri/BlockManager.java
Expand Up @@ -40,13 +40,17 @@
*/
public class BlockManager extends AbstractManager<Block> implements PropertyChangeListener, VetoableChangeListener, InstanceManagerAutoDefault {

private String powerManagerChangeName;

public BlockManager() {
super();
InstanceManager.sensorManagerInstance().addVetoableChangeListener(this);
InstanceManager.getDefault(SensorManager.class).addVetoableChangeListener(this);
InstanceManager.getDefault(ReporterManager.class).addVetoableChangeListener(this);
InstanceManager.getList(PowerManager.class).forEach((pm) -> {
pm.addPropertyChangeListener(this);
});
powerManagerChangeName = InstanceManager.getListPropertyName(PowerManager.class);
InstanceManager.addPropertyChangeListener(this);
}

@Override
Expand Down Expand Up @@ -317,11 +321,13 @@ public List<Block> getBlocksOccupiedByRosterEntry(@Nonnull RosterEntry re) {

/**
* Listen for changes to the power state from any power managers
* in use in order to track how long it's been since powet was applied
* in use in order to track how long it's been since power was applied
* to the layout. This information is used in {@link Block#goingActive()}
* when deciding whether to restore a block's last value.
*
* @param e
* Also listen for additions/removals or PowerManagers
*
* @param e - the change event
*/

@Override
Expand All @@ -337,6 +343,17 @@ public void propertyChange(PropertyChangeEvent e) {
// do nothing
}
}
if (powerManagerChangeName.equals(e.getPropertyName())) {
if (e.getNewValue() == null) {
// powermanager has been removed
PowerManager pm = (PowerManager) e.getOldValue();
pm.removePropertyChangeListener(this);
} else {
// a powermanager has been added
PowerManager pm = (PowerManager) e.getNewValue();
pm.addPropertyChangeListener(this);
}
}
}


Expand Down

0 comments on commit 81e4945

Please sign in to comment.