/** * Determine if the channel is enabled. * * <p>Checks all groups to which the channel belongs. If they're all disabled, so is the channel. */ final void computeEnablement() { // 'Active' channels always stay enabled if (enablement != Enablement.Passive) return; for (ArchiveGroup group : groups) { if (group.isEnabled()) { // Found at least one enabled group updateEnabledState(true); return; } } // else: All groups are disabled updateEnabledState(false); }
/** Enable or disable groups based on received value */ private final void handleEnablement(final VType value) { if (enablement == Enablement.Passive) throw new Error("Not to be called when passive"); // $NON-NLS-1$ // Get boolean value (true <==> >0.0) final double number = VTypeHelper.toDouble(value); final boolean yes = number > 0.0; // Do we enable or disable based on that value? final boolean enable = enablement == Enablement.Enabling ? yes : !yes; // Check which group needs to _change_ for (ArchiveGroup group : groups) { if (group.isEnabled() != enable) group.enable(enable); } }