package comeon.ui.actions; import com.google.common.eventbus.Subscribe; import com.google.inject.Inject; import com.google.inject.Singleton; import comeon.core.Core; import comeon.templates.Templates; import comeon.templates.TemplatesChangedEvent; import comeon.ui.add.AddMediaDialog; import comeon.ui.add.AdderWorker; import javax.swing.*; import java.awt.event.ActionEvent; @Singleton public final class AddMediaAction extends BaseAction { private static final long serialVersionUID = 1L; private final Templates templates; private final Core core; @Inject public AddMediaAction(final Templates templates, final Core core) { super("addmedia"); this.templates = templates; this.core = core; if (templates.getTemplates().isEmpty()) { this.setEnabled(false); } } @Override public void actionPerformed(final ActionEvent e) { SwingUtilities.invokeLater(() -> { final AddMediaDialog dialog = new AddMediaDialog(templates); final int value = dialog.showDialog(); if (value == JOptionPane.OK_OPTION) { new AdderWorker(dialog.getModel(), core).execute(); } }); } @Subscribe public void handleTemplatesChanged(final TemplatesChangedEvent event) { this.setEnabled(!event.getTemplates().isEmpty()); } }