/* * Jalview - A Sequence Alignment Editor and Viewer * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package jalview.gui; import jalview.datamodel.*; import jalview.io.*; import jalview.jbgui.*; import java.awt.*; import java.awt.datatransfer.*; import java.awt.event.*; import javax.swing.*; /** * DOCUMENT ME! * * @author $author$ * @version $Revision$ */ public class CutAndPasteTransfer extends GCutAndPasteTransfer { /** * DOCUMENT ME! */ public void setForInput() { getContentPane().add(inputButtonPanel, java.awt.BorderLayout.SOUTH); SwingUtilities.invokeLater(new Runnable() { public void run() { textarea.requestFocus(); } }); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getText() { return textarea.getText(); } /** * DOCUMENT ME! * * @param text DOCUMENT ME! */ public void setText(String text) { textarea.setText(text); } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ public void copyItem_actionPerformed(ActionEvent e) { Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); c.setContents(new StringSelection(textarea.getText()), null); } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ public void pasteMenu_actionPerformed(ActionEvent e) { Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable contents = c.getContents(this); if (contents == null) { return; } try { textarea.append((String) contents.getTransferData( DataFlavor.stringFlavor)); } catch (Exception ex) { } } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ public void ok_actionPerformed(ActionEvent e) { String format = IdentifyFile.Identify(getText(), "Paste"); SequenceI[] sequences = null; if (FormatAdapter.formats.contains(format)) { sequences = new FormatAdapter().readFile(getText(), "Paste", format); } if (sequences != null) { AlignFrame af = new AlignFrame(new Alignment(sequences)); af.currentFileFormat = format; Desktop.addInternalFrame(af, "Cut & Paste input - " + format, AlignFrame.NEW_WINDOW_WIDTH, AlignFrame.NEW_WINDOW_HEIGHT); af.statusBar.setText("Successfully pasted alignment file"); try { af.setMaximum( jalview.bin.Cache.getDefault("SHOW_FULLSCREEN", false)); } catch (Exception ex) { } try { this.setClosed(true); } catch (Exception ex) { } } else { JOptionPane.showInternalMessageDialog(Desktop.desktop, "Couldn't read the pasted text.\n" + "Formats currently supported are\n" + "Fasta, MSF, Clustal, BLC, PIR, MSP, and PFAM", "Error parsing text", JOptionPane.WARNING_MESSAGE); } } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ public void cancel_actionPerformed(ActionEvent e) { try { this.setClosed(true); } catch (Exception ex) { } } public void textarea_mousePressed(MouseEvent e) { if(SwingUtilities.isRightMouseButton(e)) { JPopupMenu popup = new JPopupMenu("Edit"); JMenuItem item = new JMenuItem("Copy"); item.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { copyItem_actionPerformed(e); } }); popup.add(item); item = new JMenuItem("Paste"); item.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { pasteMenu_actionPerformed(e); } }); popup.add(item); popup.show(this, e.getX(), e.getY()+textarea.getY()+30); } } }