X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FDesktop.java;h=4877d7f7f56f908b30eb4b70a1e11bdf57aa2488;hb=36e7c887ef91f49f6065dea063180f7de146b3e1;hp=6dd75574bc1b22328c81523308692caf29f0672f;hpb=fee1b781ca14aadea5d112fc554fe14879c787c5;p=jalview.git diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 6dd7557..4877d7f 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -20,26 +20,32 @@ */ package jalview.gui; -import static jalview.util.UrlConstants.EMBLEBI_STRING; import static jalview.util.UrlConstants.SEQUENCE_ID; import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; import jalview.bin.Cache; import jalview.bin.Jalview; +import jalview.io.DataSourceType; +import jalview.io.FileFormat; +import jalview.io.FileFormatException; +import jalview.io.FileFormatI; +import jalview.io.FileFormats; import jalview.io.FileLoader; -import jalview.io.FormatAdapter; import jalview.io.IdentifyFile; import jalview.io.JalviewFileChooser; import jalview.io.JalviewFileView; import jalview.jbgui.GSplitFrame; import jalview.jbgui.GStructureViewer; import jalview.structure.StructureSelectionManager; +import jalview.urls.IdOrgSettings; import jalview.util.ImageMaker; import jalview.util.MessageManager; import jalview.util.Platform; +import jalview.util.UrlConstants; import jalview.viewmodel.AlignmentViewport; import jalview.ws.params.ParamManager; +import jalview.ws.utils.UrlDownloadClient; import java.awt.BorderLayout; import java.awt.Color; @@ -74,6 +80,7 @@ import java.beans.PropertyChangeListener; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Hashtable; @@ -99,7 +106,6 @@ import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JMenuItem; -import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JProgressBar; @@ -123,6 +129,11 @@ public class Desktop extends jalview.jbgui.GDesktop implements DropTargetListener, ClipboardOwner, IProgressIndicator, jalview.api.StructureSelectionManagerProvider { + private static int DEFAULT_MIN_WIDTH = 300; + + private static int DEFAULT_MIN_HEIGHT = 250; + + private static final String EXPERIMENTAL_FEATURES = "EXPERIMENTAL_FEATURES"; private JalviewChangeSupport changeSupport = new JalviewChangeSupport(); @@ -321,19 +332,6 @@ public class Desktop extends jalview.jbgui.GDesktop implements instance = this; doVamsasClientCheck(); - groovyShell = new JMenuItem(); - groovyShell.setText(MessageManager.getString("label.groovy_console")); - groovyShell.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - groovyShell_actionPerformed(); - } - }); - toolsMenu.add(groovyShell); - groovyShell.setVisible(true); - doConfigureStructurePrefs(); setTitle("Jalview " + jalview.bin.Cache.getProperty("VERSION")); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); @@ -388,6 +386,10 @@ public class Desktop extends jalview.jbgui.GDesktop implements showConsole(showjconsole); showNews.setVisible(false); + + experimentalFeatures.setSelected(showExperimental()); + + getIdentifiersOrgData(); checkURLLinks(); @@ -452,7 +454,6 @@ public class Desktop extends jalview.jbgui.GDesktop implements } }); - // displayed. // Thread off a new instance of the file chooser - this reduces the time it // takes to open it later on. new Thread(new Runnable() @@ -461,11 +462,9 @@ public class Desktop extends jalview.jbgui.GDesktop implements public void run() { Cache.log.debug("Filechooser init thread started."); - new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY"), - jalview.io.AppletFormatAdapter.READABLE_EXTENSIONS, - jalview.io.AppletFormatAdapter.READABLE_FNAMES, - jalview.bin.Cache.getProperty("DEFAULT_FILE_FORMAT")); + String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT"); + JalviewFileChooser.forRead(Cache.getProperty("LAST_DIRECTORY"), + fileFormat); Cache.log.debug("Filechooser init thread finished."); } }).start(); @@ -485,6 +484,19 @@ public class Desktop extends jalview.jbgui.GDesktop implements }); } + /** + * Answers true if user preferences to enable experimental features is True + * (on), else false + * + * @return + */ + public boolean showExperimental() + { + String experimental = Cache.getDefault(EXPERIMENTAL_FEATURES, + Boolean.FALSE.toString()); + return Boolean.valueOf(experimental).booleanValue(); + } + public void doConfigureStructurePrefs() { // configure services @@ -525,6 +537,29 @@ public class Desktop extends jalview.jbgui.GDesktop implements }); } + public void getIdentifiersOrgData() + { + // Thread off the identifiers fetcher + addDialogThread(new Runnable() + { + @Override + public void run() + { + Cache.log.debug("Downloading data from identifiers.org"); + UrlDownloadClient client = new UrlDownloadClient(); + try + { + client.download(IdOrgSettings.getUrl(), + IdOrgSettings.getDownloadLocation()); + } catch (IOException e) + { + Cache.log.debug("Exception downloading identifiers.org data" + + e.getMessage()); + } + } + }); + } + @Override protected void showNews_actionPerformed(ActionEvent e) { @@ -685,10 +720,10 @@ public class Desktop extends jalview.jbgui.GDesktop implements String file = (String) contents .getTransferData(DataFlavor.stringFlavor); - String format = new IdentifyFile().identify(file, - FormatAdapter.PASTE); + FileFormatI format = new IdentifyFile().identify(file, + DataSourceType.PASTE); - new FileLoader().LoadFile(file, FormatAdapter.PASTE, format); + new FileLoader().LoadFile(file, DataSourceType.PASTE, format); } } catch (Exception ex) @@ -805,6 +840,8 @@ public class Desktop extends jalview.jbgui.GDesktop implements openFrameCount++; + frame.setMinimumSize(new Dimension(DEFAULT_MIN_WIDTH, + DEFAULT_MIN_HEIGHT)); frame.setVisible(makeVisible); frame.setClosable(true); frame.setResizable(resizable); @@ -891,9 +928,10 @@ public class Desktop extends jalview.jbgui.GDesktop implements } }); + desktop.add(frame); + windowMenu.add(menuItem); - desktop.add(frame); frame.toFront(); try { @@ -954,8 +992,8 @@ public class Desktop extends jalview.jbgui.GDesktop implements // Java's Transferable for native dnd evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); Transferable t = evt.getTransferable(); - java.util.List files = new ArrayList(); - java.util.List protocols = new ArrayList(); + List files = new ArrayList(); + List protocols = new ArrayList(); try { @@ -973,13 +1011,13 @@ public class Desktop extends jalview.jbgui.GDesktop implements for (int i = 0; i < files.size(); i++) { String file = files.get(i).toString(); - String protocol = (protocols == null) ? FormatAdapter.FILE - : (String) protocols.get(i); - String format = null; + DataSourceType protocol = (protocols == null) ? DataSourceType.FILE + : protocols.get(i); + FileFormatI format = null; if (file.endsWith(".jar")) { - format = "Jalview"; + format = FileFormat.Jalview; } else @@ -1008,11 +1046,9 @@ public class Desktop extends jalview.jbgui.GDesktop implements @Override public void inputLocalFileMenuItem_actionPerformed(AlignViewport viewport) { - JalviewFileChooser chooser = new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY"), - jalview.io.AppletFormatAdapter.READABLE_EXTENSIONS, - jalview.io.AppletFormatAdapter.READABLE_FNAMES, - jalview.bin.Cache.getProperty("DEFAULT_FILE_FORMAT")); + String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT"); + JalviewFileChooser chooser = JalviewFileChooser.forRead( + Cache.getProperty("LAST_DIRECTORY"), fileFormat); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle(MessageManager @@ -1024,28 +1060,35 @@ public class Desktop extends jalview.jbgui.GDesktop implements if (value == JalviewFileChooser.APPROVE_OPTION) { String choice = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser + Cache.setProperty("LAST_DIRECTORY", chooser .getSelectedFile().getParent()); - String format = null; - if (chooser.getSelectedFormat() != null - && chooser.getSelectedFormat().equals("Jalview")) - { - format = "Jalview"; - } - else + FileFormatI format = chooser.getSelectedFormat(); + + /* + * Call IdentifyFile to verify the file contains what its extension implies. + * Skip this step for dynamically added file formats, because + * IdentifyFile does not know how to recognise them. + */ + if (FileFormats.getInstance().isIdentifiable(format)) { - format = new IdentifyFile().identify(choice, FormatAdapter.FILE); + try + { + format = new IdentifyFile().identify(choice, DataSourceType.FILE); + } catch (FileFormatException e) + { + // format = null; //?? + } } if (viewport != null) { - new FileLoader().LoadFile(viewport, choice, FormatAdapter.FILE, + new FileLoader().LoadFile(viewport, choice, DataSourceType.FILE, format); } else { - new FileLoader().LoadFile(choice, FormatAdapter.FILE, format); + new FileLoader().LoadFile(choice, DataSourceType.FILE, format); } } } @@ -1101,19 +1144,28 @@ public class Desktop extends jalview.jbgui.GDesktop implements { if (viewport != null) { - new FileLoader().LoadFile(viewport, url, FormatAdapter.URL, - "Jalview"); + new FileLoader().LoadFile(viewport, url, DataSourceType.URL, + FileFormat.Jalview); } else { - new FileLoader().LoadFile(url, FormatAdapter.URL, "Jalview"); + new FileLoader().LoadFile(url, DataSourceType.URL, + FileFormat.Jalview); } } else { - String format = new IdentifyFile().identify(url, FormatAdapter.URL); + FileFormatI format = null; + try + { + format = new IdentifyFile().identify(url, DataSourceType.URL); + } catch (FileFormatException e) + { + // TODO revise error handling, distinguish between + // URL not found and response not valid + } - if (format.equals("URL NOT FOUND")) + if (format == null) { JvOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager.formatMessage("label.couldnt_locate", @@ -1126,11 +1178,12 @@ public class Desktop extends jalview.jbgui.GDesktop implements if (viewport != null) { - new FileLoader().LoadFile(viewport, url, FormatAdapter.URL, format); + new FileLoader() + .LoadFile(viewport, url, DataSourceType.URL, format); } else { - new FileLoader().LoadFile(url, FormatAdapter.URL, format); + new FileLoader().LoadFile(url, DataSourceType.URL, format); } } } @@ -1515,9 +1568,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements @Override public void saveState_actionPerformed(ActionEvent e) { - JalviewFileChooser chooser = new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY"), - new String[] { "jvp" }, new String[] { "Jalview Project" }, + JalviewFileChooser chooser = new JalviewFileChooser("jvp", "Jalview Project"); chooser.setFileView(new JalviewFileView()); @@ -1588,7 +1639,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements public void loadState_actionPerformed(ActionEvent e) { JalviewFileChooser chooser = new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[] { + Cache.getProperty("LAST_DIRECTORY"), new String[] { "jvp", "jar" }, new String[] { "Jalview Project", "Jalview Project (old)" }, "Jalview Project"); chooser.setFileView(new JalviewFileView()); @@ -1601,7 +1652,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements final File selectedFile = chooser.getSelectedFile(); setProjectFile(selectedFile); final String choice = selectedFile.getAbsolutePath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", + Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent()); new Thread(new Runnable() { @@ -2171,10 +2222,9 @@ public class Desktop extends jalview.jbgui.GDesktop implements { if (v_client != null) { - JalviewFileChooser chooser = new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY"), new String[] - { "vdj" }, // TODO: VAMSAS DOCUMENT EXTENSION is VDJ - new String[] { "Vamsas Document" }, "Vamsas Document"); + // TODO: VAMSAS DOCUMENT EXTENSION is VDJ + JalviewFileChooser chooser = new JalviewFileChooser("vdj", + "Vamsas Document"); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle(MessageManager @@ -2188,7 +2238,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements JPanel progpanel = addProgressPanel(MessageManager.formatMessage( "label.saving_vamsas_doc", new Object[] { choice.getName() })); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice.getParent()); + Cache.setProperty("LAST_DIRECTORY", choice.getParent()); String warnmsg = null; String warnttl = null; try @@ -2230,7 +2280,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements */ public void setVamsasUpdate(boolean b) { - jalview.bin.Cache.log.debug("Setting gui for Vamsas update " + Cache.log.debug("Setting gui for Vamsas update " + (b ? "in progress" : "finished")); if (vamUpdate != null) @@ -2277,7 +2327,8 @@ public class Desktop extends jalview.jbgui.GDesktop implements { // check what the actual links are - if it's just the default don't // bother with the warning - Vector links = Preferences.sequenceURLLinks; + List links = Preferences.sequenceUrlLinks + .getLinksForMenu(); // only need to check links if there is one with a // SEQUENCE_ID which is not the default EMBL_EBI link @@ -2287,7 +2338,8 @@ public class Desktop extends jalview.jbgui.GDesktop implements while (li.hasNext()) { String link = li.next(); - if (link.contains(SEQUENCE_ID) && !link.equals(EMBLEBI_STRING)) + if (link.contains(SEQUENCE_ID) + && !link.equals(UrlConstants.DEFAULT_STRING)) { check = true; int barPos = link.indexOf("|"); @@ -2449,8 +2501,6 @@ public class Desktop extends jalview.jbgui.GDesktop implements } - protected JMenuItem groovyShell; - /** * Accessor method to quickly get all the AlignmentFrames loaded. * @@ -2536,6 +2586,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements /** * Add Groovy Support to Jalview */ + @Override public void groovyShell_actionPerformed() { try @@ -2811,13 +2862,8 @@ public class Desktop extends jalview.jbgui.GDesktop implements if (Cache.getDefault("SHOW_JWS2_SERVICES", true)) { - if (jalview.ws.jws2.Jws2Discoverer.getDiscoverer().isRunning()) - { - jalview.ws.jws2.Jws2Discoverer.getDiscoverer().setAborted(true); - } t2 = jalview.ws.jws2.Jws2Discoverer.getDiscoverer().startDiscoverer( changeSupport); - } Thread t3 = null; { @@ -3260,7 +3306,8 @@ public class Desktop extends jalview.jbgui.GDesktop implements } public static void transferFromDropTarget(List files, - List protocols, DropTargetDropEvent evt, Transferable t) + List protocols, DropTargetDropEvent evt, + Transferable t) throws Exception { @@ -3274,7 +3321,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements .getTransferData(DataFlavor.javaFileListFlavor)) { files.add(((File) file).toString()); - protocols.add(FormatAdapter.FILE); + protocols.add(DataSourceType.FILE); } } else @@ -3304,7 +3351,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements { Cache.log.debug("Adding missing FILE protocol for " + files.get(protocols.size())); - protocols.add(FormatAdapter.FILE); + protocols.add(DataSourceType.FILE); } for (java.util.StringTokenizer st = new java.util.StringTokenizer( data, "\r\n"); st.hasMoreTokens();) @@ -3319,14 +3366,14 @@ public class Desktop extends jalview.jbgui.GDesktop implements java.net.URI uri = new java.net.URI(s); if (uri.getScheme().toLowerCase().startsWith("http")) { - protocols.add(FormatAdapter.URL); + protocols.add(DataSourceType.URL); files.add(uri.toString()); } else { // otherwise preserve old behaviour: catch all for file objects java.io.File file = new java.io.File(uri); - protocols.add(FormatAdapter.FILE); + protocols.add(DataSourceType.FILE); files.add(file.toString()); } } @@ -3354,4 +3401,14 @@ public class Desktop extends jalview.jbgui.GDesktop implements } } } + + /** + * Sets the Preferences property for experimental features to True or False + * depending on the state of the controlling menu item + */ + @Override + protected void showExperimental_actionPerformed(boolean selected) + { + Cache.setProperty(EXPERIMENTAL_FEATURES, Boolean.toString(selected)); + } }