173b031b9cfb09f119495275f68ed935302a6dbb
[jalview.git] / src / jalview / appletgui / CutAndPasteTransfer.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer\r
3  * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4  *\r
5  * This program is free software; you can redistribute it and/or\r
6  * modify it under the terms of the GNU General Public License\r
7  * as published by the Free Software Foundation; either version 2\r
8  * of the License, or (at your option) any later version.\r
9  *\r
10  * This program is distributed in the hope that it will be useful,\r
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13  * GNU General Public License for more details.\r
14  *\r
15  * You should have received a copy of the GNU General Public License\r
16  * along with this program; if not, write to the Free Software\r
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18  */\r
19 \r
20 package jalview.appletgui;\r
21 \r
22 import java.awt.*;\r
23 import java.awt.event.*;\r
24 \r
25 import jalview.datamodel.*;\r
26 import jalview.io.*;\r
27 \r
28 public class CutAndPasteTransfer extends Panel implements ActionListener, MouseListener\r
29 {\r
30   jalview.bin.JalviewLite applet;\r
31 \r
32   boolean pdbImport = false;\r
33   Sequence seq;\r
34   SeqCanvas seqcanvas;\r
35 \r
36   public CutAndPasteTransfer(boolean forImport, jalview.bin.JalviewLite mainApplet)\r
37   {\r
38     try {\r
39         jbInit();\r
40     } catch (Exception e) {\r
41         e.printStackTrace();\r
42     }\r
43 \r
44     applet = mainApplet;\r
45 \r
46     if (!forImport)\r
47     {\r
48       buttonPanel.setVisible(false);\r
49     }\r
50   }\r
51 \r
52   public void setPDBImport(Sequence seq, SeqCanvas seqcanvas)\r
53   {\r
54     this.seq = seq;\r
55     this.seqcanvas = seqcanvas;\r
56     pdbImport = true;\r
57   }\r
58 \r
59 \r
60   public String getText()\r
61   {\r
62     return textarea.getText();\r
63   }\r
64 \r
65   public void setText(String text)\r
66   {\r
67     textarea.setText(text);\r
68   }\r
69 \r
70   public void actionPerformed(ActionEvent evt)\r
71   {\r
72     if(evt.getSource()==ok)\r
73       ok_actionPerformed();\r
74     else if(evt.getSource()==cancel)\r
75       cancel_actionPerformed();\r
76   }\r
77 \r
78   protected void ok_actionPerformed()\r
79   {\r
80     String text = getText();\r
81     int length = text.length();\r
82     textarea.append("\n");\r
83     if(textarea.getText().length()==length)\r
84     {\r
85       String warning = "\n\n#################################################\n"\r
86           +"WARNING!! THIS IS THE MAXIMUM SIZE OF TEXTAREA!!\n"\r
87           +"\nCAN'T INPUT FULL ALIGNMENT"\r
88           +"\n\nYOU MUST DELETE THIS WARNING TO CONTINUE"\r
89           +"\n\nMAKE SURE LAST SEQUENCE PASTED IS COMPLETE"\r
90           +"\n#################################################\n";\r
91       textarea.setText(text.substring(0, text.length()-warning.length())\r
92           +warning);\r
93 \r
94       textarea.setCaretPosition(text.length());\r
95     }\r
96 \r
97     if(pdbImport)\r
98     {\r
99       new MCview.AppletPDBViewer(text, AppletFormatAdapter.PASTE, seq, seqcanvas);\r
100     }\r
101     else\r
102     {\r
103       SequenceI[] sequences = null;\r
104 \r
105       String format = new IdentifyFile().Identify(text, AppletFormatAdapter.PASTE);\r
106       try{\r
107         sequences = new AppletFormatAdapter().readFile(text, AppletFormatAdapter.PASTE, format);\r
108       }catch(java.io.IOException ex)\r
109       {\r
110         ex.printStackTrace();\r
111       }\r
112       if (sequences != null)\r
113       {\r
114         AlignFrame af = new AlignFrame(new Alignment(sequences), applet,\r
115                                        "Cut & Paste input - " + format);\r
116         af.statusBar.setText("Successfully pasted alignment file");\r
117       }\r
118     }\r
119 \r
120     ((Frame)this.getParent()).setVisible(false);\r
121   }\r
122 \r
123   protected void cancel_actionPerformed()\r
124   {\r
125     ((Frame)this.getParent()).setVisible(false);\r
126   }\r
127 \r
128   protected TextArea textarea = new TextArea();\r
129   Button ok = new Button();\r
130   Button cancel = new Button();\r
131   protected Panel buttonPanel = new Panel();\r
132   BorderLayout borderLayout1 = new BorderLayout();\r
133 \r
134 \r
135   private void jbInit() throws Exception {\r
136       textarea.setFont(new java.awt.Font("Monospaced", Font.PLAIN, 10));\r
137       textarea.setText("Paste your alignment file here");\r
138       textarea.addMouseListener(this);\r
139       this.setLayout(borderLayout1);\r
140       ok.setLabel("OK");\r
141       ok.addActionListener(this);\r
142       cancel.setLabel("Cancel");\r
143       cancel.addActionListener(this);\r
144       this.add(buttonPanel, BorderLayout.SOUTH);\r
145       buttonPanel.add(ok, null);\r
146       buttonPanel.add(cancel, null);\r
147       this.add(textarea, java.awt.BorderLayout.CENTER);\r
148   }\r
149 \r
150   public void mousePressed(MouseEvent evt) {\r
151       if (textarea.getText().startsWith("Paste your")) {\r
152           textarea.setText("");\r
153      }\r
154   }\r
155   public void mouseReleased(MouseEvent evt){}\r
156   public void mouseClicked(MouseEvent evt){}\r
157   public void mouseEntered(MouseEvent evt){}\r
158   public void mouseExited(MouseEvent evt){}\r
159 }\r