/* ExportChartToClipboardAction.java created 2007-12-18 * */ package org.signalml.app.action.components; import static org.signalml.app.util.i18n.SvarogI18n._; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.Transferable; import java.awt.event.ActionEvent; import java.awt.image.BufferedImage; import org.apache.log4j.Logger; import org.jfree.chart.JFreeChart; import org.signalml.app.util.ImageTransferable; import org.signalml.plugin.export.view.AbstractSignalMLAction; /** ExportChartToClipboardAction * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public abstract class ExportChartToClipboardAction extends AbstractSignalMLAction implements ClipboardOwner { protected static final Logger logger = Logger.getLogger(ExportChartToClipboardAction.class); private static final long serialVersionUID = 1L; public ExportChartToClipboardAction() { super(); setText(_("Copy chart to clipboard")); setIconPath("org/signalml/app/icon/clipboard.png"); setToolTip(_("Copy chart to clipboard")); } protected abstract Dimension getImageSize(); protected abstract JFreeChart getChart(); @Override public void actionPerformed(ActionEvent ev) { JFreeChart chart = getChart(); if (chart != null) { Dimension imageSize = getImageSize(); BufferedImage image = chart.createBufferedImage(imageSize.width, imageSize.height); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(new ImageTransferable(image), this); } } @Override public void setEnabledAsNeeded() { setEnabled(true); } @Override public void lostOwnership(Clipboard clipboard, Transferable contents) { // don't care } }