package org.shininet.bukkit.itemrenamer.component;
import javax.annotation.Nonnull;
import org.bukkit.plugin.Plugin;
import com.google.common.eventbus.EventBus;
public final class Components {
private Components() {
// Don't make it constructable
}
/**
* Construct a registerable component of inner components.
* @param components - registerable components.
* @return The composite component.
*/
public static Component asComposite(final Component... components) {
return new AbstractComponent() {
@Override
protected void onRegistered(@Nonnull Plugin plugin, EventBus bus) {
for (Component registerable : components) {
registerable.register(plugin, bus);
}
}
@Override
protected void onUnregistered(@Nonnull Plugin plugin) {
for (Component registerable : components) {
registerable.unregister(plugin);
}
}
};
}
/**
* Construct a toggleable component.
* @param delegate - the registerable component.
* @return The toggleable component.
*/
public static ToggleComponent asToggleable(Component delegate) {
return new ToggleComponent(delegate);
}
}