package comeon.ui.actions; import com.google.common.eventbus.Subscribe; import comeon.core.Core; import javax.swing.*; abstract class MediaBaseAction extends BaseAction { protected final Core core; protected MediaBaseAction(final String key, final Core core) { super(key); this.core = core; } protected MediaBaseAction(final String key, final KeyStroke accelerator, final Core core) { super(key, accelerator); this.core = core; } @Subscribe public void handleMediaAddedEvent(final MediaAddedEvent event) { this.enableIfMediaAreAvailable(); } @Subscribe public void handleMediaRemovedEvent(final MediaRemovedEvent event) { this.enableIfMediaAreAvailable(); } private void enableIfMediaAreAvailable() { SwingUtilities.invokeLater(() -> setEnabled(core.countMediaToBeUploaded() > 0)); } }