/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
*\r
* This program is free software; you can redistribute it and/or\r
* modify it under the terms of the GNU General Public License\r
\r
public static Object [] jalviewClipboard;\r
\r
+ static int fileLoadingCount= 0;\r
\r
/**\r
* Creates a new Desktop object.\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
* @param e DOCUMENT ME!\r
*/\r
- public void inputLocalFileMenuItem_actionPerformed(jalview.datamodel.AlignmentI alignment)\r
+ public void inputLocalFileMenuItem_actionPerformed(AlignViewport viewport)\r
{\r
JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty(\r
"LAST_DIRECTORY"),\r
format = new IdentifyFile().Identify(choice, FormatAdapter.FILE);\r
}\r
\r
- if (alignment != null)\r
- new FileLoader().LoadFile(alignment, 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
* @param e DOCUMENT ME!\r
*/\r
- public void inputURLMenuItem_actionPerformed(jalview.datamodel.AlignmentI alignment)\r
+ public void inputURLMenuItem_actionPerformed(AlignViewport viewport)\r
{\r
// This construct allows us to have a wider textfield\r
// for viewing\r
\r
if (url.toLowerCase().endsWith(".jar"))\r
{\r
- if (alignment != null)\r
- new FileLoader().LoadFile(alignment, url, FormatAdapter.URL, "Jalview");\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
return;\r
}\r
\r
- if (alignment != null)\r
- new FileLoader().LoadFile(alignment, 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
* @param e DOCUMENT ME!\r
*/\r
- public void inputTextboxMenuItem_actionPerformed(jalview.datamodel.AlignmentI alignment)\r
+ public void inputTextboxMenuItem_actionPerformed(AlignViewport viewport)\r
{\r
CutAndPasteTransfer cap = new CutAndPasteTransfer();\r
- cap.setForInput(alignment);\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
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
+ public static int getViewCount(String viewId)\r
+ {\r
+ int count = 0;\r
+ JInternalFrame[] frames = Desktop.desktop.getAllFrames();\r
+ for (int t = 0; t < frames.length; t++)\r
+ {\r
+ if (frames[t] instanceof AlignFrame)\r
+ {\r
+ AlignFrame af = (AlignFrame) frames[t];\r
+ for(int a=0; a<af.alignPanels.size(); a++)\r
+ {\r
+ if(viewId.equals(\r
+ ((AlignmentPanel)af.alignPanels.elementAt(a)).av.getSequenceSetId() )\r
+ )\r
+ count ++;\r
+ }\r
+ }\r
+ }\r
+\r
+ return count;\r
+ }\r
+\r
+ public void explodeViews(AlignFrame af)\r
+ {\r
+ int size = af.alignPanels.size();\r
+ if(size<2)\r
+ return;\r
+ af.closeMenuItem_actionPerformed(null);\r
+\r
+ for(int i=0; i<size; i++)\r
+ {\r
+ AlignmentPanel ap = (AlignmentPanel)af.alignPanels.elementAt(i);\r
+ AlignFrame newaf = new AlignFrame(ap);\r
+ if(ap.av.explodedPosition!=null)\r
+ newaf.setBounds(ap.av.explodedPosition);\r
+\r
+ ap.av.gatherViewsHere = false;\r
+\r
+ PaintRefresher.Register(ap.seqPanel.seqCanvas, ap.av.getSequenceSetId());\r
+ PaintRefresher.Register(ap.idPanel.idCanvas, ap.av.getSequenceSetId());\r
+ PaintRefresher.Register(ap, ap.av.getSequenceSetId());\r
+\r
+\r
+ newaf.viewport = ap.av;\r
+ addInternalFrame(newaf, af.getTitle(),\r
+ AlignFrame.DEFAULT_WIDTH,\r
+ AlignFrame.DEFAULT_HEIGHT);\r
+ }\r
+\r
+ }\r
+\r
+ public void gatherViews(AlignFrame source)\r
+ {\r
+ source.viewport.gatherViewsHere = true;\r
+ source.viewport.explodedPosition = source.getBounds();\r
+ JInternalFrame[] frames = Desktop.desktop.getAllFrames();\r
+ String viewId = source.viewport.sequenceSetID;\r
+\r
+ for (int t = 0; t < frames.length; t++)\r
+ {\r
+ if (frames[t] instanceof AlignFrame && frames[t] != source)\r
+ {\r
+ AlignFrame af = (AlignFrame) frames[t];\r
+ boolean gatherThis = false;\r
+ for (int a = 0; a < af.alignPanels.size(); a++)\r
+ {\r
+ AlignmentPanel ap = (AlignmentPanel) af.alignPanels.elementAt(a);\r
+ if (viewId.equals(ap.av.getSequenceSetId()))\r
+ {\r
+ gatherThis = true;\r
+ ap.av.gatherViewsHere = false;\r
+ ap.av.explodedPosition = af.getBounds();\r
+ source.addAlignmentPanel(ap);\r
+ }\r
+ }\r
+ if (gatherThis)\r
+ af.closeMenuItem_actionPerformed(null);\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+\r
}\r
\r