import java.awt.datatransfer.*;\r
import java.awt.dnd.*;\r
import java.awt.event.*;\r
+import java.util.*;\r
\r
import javax.swing.*;\r
\r
* @version $Revision$\r
*/\r
public class Desktop extends jalview.jbgui.GDesktop\r
- implements DropTargetListener\r
+ implements DropTargetListener, ClipboardOwner\r
{\r
/** DOCUMENT ME!! */\r
+ public static Desktop instance;\r
public static JDesktopPane desktop;\r
static int openFrameCount = 0;\r
static final int xOffset = 30;\r
\r
public static Object [] jalviewClipboard;\r
\r
+ static int fileLoadingCount= 0;\r
\r
/**\r
* Creates a new Desktop object.\r
*/\r
public Desktop()\r
{\r
- Image image = null;\r
+ instance = this;\r
\r
+ Image image = null;\r
\r
try\r
{\r
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r
desktop = new JDesktopPane();\r
desktop.setBackground(Color.white);\r
- setContentPane(desktop);\r
+ getContentPane().setLayout(new BorderLayout());\r
+ getContentPane().add(desktop, BorderLayout.CENTER);\r
desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);\r
\r
// This line prevents Windows Look&Feel resizing all new windows to maximum\r
{}\r
}\r
\r
+ public void lostOwnership(Clipboard clipboard, Transferable contents)\r
+ {\r
+ Desktop.jalviewClipboard = null;\r
+ }\r
+\r
public void dragEnter(DropTargetDragEvent evt)\r
{}\r
\r
format = new IdentifyFile().Identify(file,\r
protocol);\r
}\r
- LoadFile(file, protocol, format);\r
+\r
+\r
+ new FileLoader().LoadFile(file, protocol, format);\r
+\r
}\r
}\r
catch (Exception ex)\r
*\r
* @param e DOCUMENT ME!\r
*/\r
- public void inputLocalFileMenuItem_actionPerformed(ActionEvent e)\r
+ public void inputLocalFileMenuItem_actionPerformed(AlignViewport viewport)\r
{\r
JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty(\r
"LAST_DIRECTORY"),\r
String format = null;\r
if (chooser.getSelectedFormat().equals("Jalview"))\r
{\r
- format = "Jalview";\r
+ format = "Jalview";\r
}\r
else\r
{\r
format = new IdentifyFile().Identify(choice, FormatAdapter.FILE);\r
}\r
\r
- jalview.bin.Cache.setProperty("DEFAULT_FILE_FORMAT", format);\r
- LoadFile(choice, FormatAdapter.FILE, format);\r
+ if (viewport != null)\r
+ new FileLoader().LoadFile(viewport, choice, FormatAdapter.FILE, format);\r
+ else\r
+ new FileLoader().LoadFile(choice, FormatAdapter.FILE, format);\r
}\r
}\r
\r
- /**\r
- * DOCUMENT ME!\r
- *\r
- * @param file DOCUMENT ME!\r
- * @param protocol DOCUMENT ME!\r
- * @param format DOCUMENT ME!\r
- */\r
- public void LoadFile(String file, String protocol, String format)\r
- {\r
- FileLoader fileLoader = new FileLoader();\r
- fileLoader.LoadFile(file, protocol, format);\r
- }\r
+\r
\r
/**\r
* DOCUMENT ME!\r
*\r
* @param e DOCUMENT ME!\r
*/\r
- public void inputURLMenuItem_actionPerformed(ActionEvent e)\r
+ public void inputURLMenuItem_actionPerformed(AlignViewport viewport)\r
{\r
// This construct allows us to have a wider textfield\r
// for viewing\r
JLabel label = new JLabel("Enter URL of Input File");\r
- JTextField textinput = new JTextField("http://www.", 40);\r
- JPanel panel = new JPanel(new BorderLayout());\r
- panel.add(label, BorderLayout.NORTH);\r
- panel.add(textinput, BorderLayout.SOUTH);\r
+ final JComboBox history = new JComboBox();\r
\r
+ JPanel panel = new JPanel(new GridLayout(2,1));\r
+ panel.add(label);\r
+ panel.add(history);\r
+ history.setPreferredSize(new Dimension(400,20));\r
+ history.setEditable(true);\r
+ history.addItem("http://www.");\r
+\r
+ String historyItems = jalview.bin.Cache.getProperty("RECENT_URL");\r
+\r
+ StringTokenizer st;\r
+\r
+ if (historyItems != null)\r
+ {\r
+ st = new StringTokenizer(historyItems, "\t");\r
+\r
+ while (st.hasMoreTokens())\r
+ {\r
+ history.addItem(st.nextElement());\r
+ }\r
+ }\r
\r
int reply = JOptionPane.showInternalConfirmDialog(desktop,\r
panel, "Input Alignment From URL",\r
return;\r
}\r
\r
- String url = textinput.getText();\r
+ String url = history.getSelectedItem().toString();\r
\r
if (url.toLowerCase().endsWith(".jar"))\r
{\r
- jalview.bin.Cache.setProperty("DEFAULT_FILE_FORMAT", "Jalview");\r
- Jalview2XML.LoadJalviewAlign(url);\r
+ if (viewport != null)\r
+ new FileLoader().LoadFile(viewport, url, FormatAdapter.URL, "Jalview");\r
+ else\r
+ new FileLoader().LoadFile(url, FormatAdapter.URL, "Jalview");\r
}\r
else\r
{\r
-\r
String format = new IdentifyFile().Identify(url, FormatAdapter.URL);\r
\r
if (format.equals("URL NOT FOUND"))\r
return;\r
}\r
\r
- LoadFile(url, FormatAdapter.URL, format);\r
+ if (viewport != null)\r
+ new FileLoader().LoadFile(viewport, url, FormatAdapter.URL, format);\r
+ else\r
+ new FileLoader().LoadFile(url, FormatAdapter.URL, format);\r
}\r
}\r
\r
*\r
* @param e DOCUMENT ME!\r
*/\r
- public void inputTextboxMenuItem_actionPerformed(ActionEvent e)\r
+ public void inputTextboxMenuItem_actionPerformed(AlignViewport viewport)\r
{\r
CutAndPasteTransfer cap = new CutAndPasteTransfer();\r
- cap.setForInput();\r
+ cap.setForInput(viewport);\r
Desktop.addInternalFrame(cap, "Cut & Paste Alignment File", 600, 500);\r
}\r
\r
"\nFor all issues relating to Jalview, email help@jalview.org" +\r
"\n\nIf you use JalView, please cite:" +\r
"\n\"Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004), The Jalview Java Alignment Editor\"" +\r
- "\nBioinformatics, 2004 12;426-7.");\r
+ "\nBioinformatics, 2004 20;426-7.");\r
\r
JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
\r
{\r
java.io.File choice = chooser.getSelectedFile();\r
jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice.getParent());\r
- Jalview2XML.SaveState(choice);\r
+ new Jalview2XML().SaveState(choice);\r
}\r
}\r
\r
String choice = chooser.getSelectedFile().getAbsolutePath();\r
jalview.bin.Cache.setProperty("LAST_DIRECTORY",\r
chooser.getSelectedFile().getParent());\r
- Jalview2XML.LoadJalviewAlign(choice);\r
+ new Jalview2XML().LoadJalviewAlign(choice);\r
}\r
}\r
\r
\r
public void inputSequence_actionPerformed(ActionEvent e)\r
{\r
- SequenceFetcher sf = new SequenceFetcher(null);\r
+ new SequenceFetcher(null);\r
}\r
+\r
+ JPanel progressPanel;\r
+\r
+ public void startLoading(final String fileName)\r
+ {\r
+ if (fileLoadingCount == 0)\r
+ {\r
+ progressPanel = new JPanel(new BorderLayout());\r
+ JProgressBar progressBar = new JProgressBar();\r
+ progressBar.setIndeterminate(true);\r
+\r
+ progressPanel.add(new JLabel("Loading File: " + fileName + " "),\r
+ BorderLayout.WEST);\r
+\r
+ progressPanel.add(progressBar, BorderLayout.CENTER);\r
+\r
+ instance.getContentPane().add(progressPanel, BorderLayout.SOUTH);\r
+ }\r
+ fileLoadingCount++;\r
+ validate();\r
+ }\r
+\r
+ public void stopLoading()\r
+ {\r
+ fileLoadingCount--;\r
+ if (fileLoadingCount < 1)\r
+ {\r
+ if(progressPanel!=null)\r
+ {\r
+ this.getContentPane().remove(progressPanel);\r
+ progressPanel = null;\r
+ }\r
+ fileLoadingCount = 0;\r
+ }\r
+ validate();\r
+ }\r
+\r
}\r
\r