package org.plantuml.idea.action.context;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.ide.CopyPasteManager;
import com.intellij.openapi.project.DumbAwareAction;
import org.plantuml.idea.toolwindow.PlantUmlImageLabel;
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
/**
* @author Eugene Steinberg
*/
public class CopyDiagramToClipboardContextAction extends DumbAwareAction {
public CopyDiagramToClipboardContextAction() {
super("Copy current diagram to clipboard", "Copy current diagram to clipboard", AllIcons.Actions.Copy);
}
@Override
public void actionPerformed(final AnActionEvent e) {
PlantUmlImageLabel data = (PlantUmlImageLabel) e.getData(PlatformDataKeys.CONTEXT_COMPONENT);
ImageIcon icon = (ImageIcon) data.getIcon();
final Image image = icon.getImage();
CopyPasteManager.getInstance().setContents(new Transferable() {
@Override
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[]{
DataFlavor.imageFlavor
};
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor) {
return flavor.equals(DataFlavor.imageFlavor);
}
@Override
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if (!flavor.equals(DataFlavor.imageFlavor)) {
throw new UnsupportedFlavorException(flavor);
}
return image;
}
});
}
}