package com.igormaznitsa.ideamindmap.plugins; import static com.igormaznitsa.meta.common.utils.Assertions.assertNotNull; import com.igormaznitsa.ideamindmap.print.IdeaMMDPrintPanelAdaptor; import com.igormaznitsa.ideamindmap.utils.AllIcons; import com.igormaznitsa.ideamindmap.utils.IdeaUtils; import com.igormaznitsa.meta.annotation.MustNotContainNull; import com.igormaznitsa.mindmap.model.Topic; import com.igormaznitsa.mindmap.plugins.PopUpSection; import com.igormaznitsa.mindmap.plugins.api.AbstractPopupMenuItem; import com.igormaznitsa.mindmap.plugins.api.CustomJob; import com.igormaznitsa.mindmap.print.MMDPrintPanel; import com.igormaznitsa.mindmap.swing.panel.DialogProvider; import com.igormaznitsa.mindmap.swing.panel.MindMapPanel; import com.intellij.openapi.project.Project; import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.swing.JMenuItem; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ResourceBundle; public class PrinterPlugin extends AbstractPopupMenuItem { private static final ResourceBundle BUNDLE = java.util.ResourceBundle.getBundle("/i18n/Bundle"); @Nullable @Override public JMenuItem makeMenuItem(@Nonnull final MindMapPanel mindMapPanel, @Nonnull DialogProvider dialogProvider, @Nullable Topic topic, @Nullable @MustNotContainNull Topic[] topics, @Nullable CustomJob mindMapPopUpItemCustomProcessor) { final JMenuItem printAction = UI_COMPO_FACTORY.makeMenuItem(BUNDLE.getString("MMDGraphEditor.makePopUp.miPrintPreview"), AllIcons.PopUp.PRINTER); final Project project = (Project)assertNotNull(mindMapPanel.findTmpObject("project")); printAction.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final MMDPrintPanel panel = new MMDPrintPanel(new IdeaMMDPrintPanelAdaptor(project), mindMapPanel); IdeaUtils.plainMessageClose(project,"Print mind map",panel); } }); return printAction; } @Override public boolean isEnabled(@Nonnull MindMapPanel panel, @Nullable Topic topic, @Nonnull @MustNotContainNull Topic[] selectedTopics) { return !panel.getModel().isEmpty(); } @Nonnull @Override public PopUpSection getSection() { return PopUpSection.MISC; } @Override public boolean needsTopicUnderMouse() { return false; } @Override public boolean needsSelectedTopics() { return false; } @Override public int getOrder() { return CUSTOM_PLUGIN_START+100; } }