after merge
[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\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   protected void ok_actionPerformed(ActionEvent e)\r
71   {\r
72     String text = getText();\r
73     int length = text.length();\r
74     textarea.append("\n");\r
75     if(textarea.getText().length()==length)\r
76     {\r
77       String warning = "\n\n#################################################\n"\r
78           +"WARNING!! THIS IS THE MAXIMUM SIZE OF TEXTAREA!!\n"\r
79           +"\nCAN'T INPUT FULL ALIGNMENT"\r
80           +"\n\nYOU MUST DELETE THIS WARNING TO CONTINUE"\r
81           +"\n\nMAKE SURE LAST SEQUENCE PASTED IS COMPLETE"\r
82           +"\n#################################################\n";\r
83       textarea.setText(text.substring(0, text.length()-warning.length())\r
84           +warning);\r
85 \r
86       textarea.setCaretPosition(text.length());\r
87     }\r
88 \r
89     if(pdbImport)\r
90     {\r
91       new MCview.AppletPDBViewer(text, "Paste", seq, seqcanvas);\r
92     }\r
93     else\r
94     {\r
95       SequenceI[] sequences = null;\r
96 \r
97       String format = IdentifyFile.Identify(text, "Paste");\r
98       sequences = new AppletFormatAdapter().readFile(text, "Paste", format);\r
99 \r
100       if (sequences != null)\r
101       {\r
102         AlignFrame af = new AlignFrame(new Alignment(sequences), applet,\r
103                                        "Cut & Paste input - " + format);\r
104         af.statusBar.setText("Successfully pasted alignment file");\r
105       }\r
106     }\r
107 \r
108     ((Frame)this.getParent()).setVisible(false);\r
109   }\r
110 \r
111   protected void cancel_actionPerformed(ActionEvent e)\r
112   {\r
113     ((Frame)this.getParent()).setVisible(false);\r
114   }\r
115 \r
116   protected TextArea textarea = new TextArea();\r
117   Button ok = new Button();\r
118   Button cancel = new Button();\r
119   protected Panel buttonPanel = new Panel();\r
120   BorderLayout borderLayout1 = new BorderLayout();\r
121 \r
122 \r
123   private void jbInit() throws Exception {\r
124       textarea.setFont(new java.awt.Font("Monospaced", Font.PLAIN, 10));\r
125       textarea.setText("Paste your alignment file here");\r
126       textarea.addMouseListener(new java.awt.event.MouseAdapter() {\r
127               public void mousePressed(MouseEvent e) {\r
128                   textarea_mousePressed(e);\r
129               }\r
130           });\r
131       this.setLayout(borderLayout1);\r
132       ok.setLabel("OK");\r
133       ok.addActionListener(new java.awt.event.ActionListener() {\r
134               public void actionPerformed(ActionEvent e) {\r
135                   ok_actionPerformed(e);\r
136               }\r
137           });\r
138       cancel.setLabel("Cancel");\r
139       cancel.addActionListener(new java.awt.event.ActionListener() {\r
140               public void actionPerformed(ActionEvent e) {\r
141                   cancel_actionPerformed(e);\r
142               }\r
143           });\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   void textarea_mousePressed(MouseEvent e) {\r
151       if (textarea.getText().startsWith("Paste your")) {\r
152           textarea.setText("");\r
153       }\r
154   }\r
155 }\r