X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FDesktop.java;h=70c8355bd9f46d3990d6156d0656e2b2e12269c0;hb=b28bddf12e2791a019fba9c233d46407deb65976;hp=123aed2cb8504647844bad689939ac513cf2db5e;hpb=10b903bf6b22d53e8920091efb2145d6b6a677ba;p=jalview.git diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 123aed2..70c8355 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -26,6 +26,8 @@ import jalview.io.FormatAdapter; import jalview.io.IdentifyFile; import jalview.io.JalviewFileChooser; import jalview.io.JalviewFileView; +import jalview.jbgui.GStructureViewer; +import jalview.structure.StructureSelectionManager; import jalview.util.ImageMaker; import jalview.util.MessageManager; import jalview.ws.params.ParamManager; @@ -89,9 +91,9 @@ import javax.swing.JPopupMenu; import javax.swing.JProgressBar; import javax.swing.SwingUtilities; import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkEvent.EventType; import javax.swing.event.MenuEvent; import javax.swing.event.MenuListener; -import javax.swing.event.HyperlinkEvent.EventType; /** * Jalview Desktop @@ -112,6 +114,8 @@ public class Desktop extends jalview.jbgui.GDesktop implements */ private BlogReader jvnews = null; + private File projectFile; + /** * @param listener * @see jalview.gui.JalviewChangeSupport#addJalviewPropertyChangeListener(java.beans.PropertyChangeListener) @@ -286,7 +290,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements instance = this; doVamsasClientCheck(); doGroovyCheck(); - + doConfigureStructurePrefs(); setTitle("Jalview " + jalview.bin.Cache.getProperty("VERSION")); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); boolean selmemusage = jalview.bin.Cache.getDefault("SHOW_MEMUSAGE", @@ -317,13 +321,16 @@ public class Desktop extends jalview.jbgui.GDesktop implements else { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - setBounds((int) (screenSize.width - 900) / 2, - (int) (screenSize.height - 650) / 2, 900, 650); + setBounds((screenSize.width - 900) / 2, + (screenSize.height - 650) / 2, 900, 650); } jconsole = new Console(this, showjconsole); // add essential build information - jconsole.setHeader("Jalview Desktop " + jconsole.setHeader("Jalview Version: " + jalview.bin.Cache.getProperty("VERSION") + "\n" + + "Jalview Installation: " + + jalview.bin.Cache.getDefault("INSTALLATION", "unknown") + + "\n" + "Build Date: " + jalview.bin.Cache.getDefault("BUILD_DATE", "unknown") + "\n" + "Java version: " + System.getProperty("java.version") + "\n" @@ -416,6 +423,27 @@ public class Desktop extends jalview.jbgui.GDesktop implements }); } + public void doConfigureStructurePrefs() + { + // configure services + StructureSelectionManager ssm = StructureSelectionManager + .getStructureSelectionManager(this); + if (jalview.bin.Cache.getDefault(Preferences.ADD_SS_ANN, true)) + { + ssm.setAddTempFacAnnot(jalview.bin.Cache.getDefault( + Preferences.ADD_TEMPFACT_ANN, true)); + ssm.setProcessSecondaryStructure(jalview.bin.Cache.getDefault(Preferences.STRUCT_FROM_PDB, true)); + ssm.setSecStructServices(jalview.bin.Cache.getDefault(Preferences.USE_RNAVIEW, + true)); + } + else + { + ssm.setAddTempFacAnnot(false); + ssm.setProcessSecondaryStructure(false); + ssm.setSecStructServices(false); + } + } + public void checkForNews() { final Desktop me = this; @@ -606,38 +634,85 @@ public class Desktop extends jalview.jbgui.GDesktop implements * Adds and opens the given frame to the desktop * * @param frame - * DOCUMENT ME! + * Frame to show * @param title - * DOCUMENT ME! + * Visible Title * @param w - * DOCUMENT ME! + * width * @param h - * DOCUMENT ME! + * height */ public static synchronized void addInternalFrame( final JInternalFrame frame, String title, int w, int h) { - addInternalFrame(frame, title, w, h, true); + addInternalFrame(frame, title, true, w, h, true); } + /** - * DOCUMENT ME! + * Add an internal frame to the Jalview desktop * * @param frame - * DOCUMENT ME! + * Frame to show * @param title - * DOCUMENT ME! + * Visible Title + * @param makeVisible + * When true, display frame immediately, otherwise, caller must call + * setVisible themselves. * @param w - * DOCUMENT ME! + * width * @param h - * DOCUMENT ME! + * height + */ + public static synchronized void addInternalFrame( + final JInternalFrame frame, String title, boolean makeVisible, + int w, int h) + { + addInternalFrame(frame, title, makeVisible, w, h, true); + } + + /** + * Add an internal frame to the Jalview desktop and make it visible + * + * @param frame + * Frame to show + * @param title + * Visible Title + * @param w + * width + * @param h + * height * @param resizable - * DOCUMENT ME! + * Allow resize */ public static synchronized void addInternalFrame( final JInternalFrame frame, String title, int w, int h, boolean resizable) { + addInternalFrame(frame, title, true, w, h, resizable); + } + + /** + * Add an internal frame to the Jalview desktop + * + * @param frame + * Frame to show + * @param title + * Visible Title + * @param makeVisible + * When true, display frame immediately, otherwise, caller must call + * setVisible themselves. + * @param w + * width + * @param h + * height + * @param resizable + * Allow resize + */ + public static synchronized void addInternalFrame( + final JInternalFrame frame, String title, boolean makeVisible, + int w, int h, boolean resizable) + { // TODO: allow callers to determine X and Y position of frame (eg. via // bounds object). @@ -662,7 +737,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements openFrameCount++; - frame.setVisible(true); + frame.setVisible(makeVisible); frame.setClosable(true); frame.setResizable(resizable); frame.setMaximizable(resizable); @@ -1039,7 +1114,9 @@ public class Desktop extends jalview.jbgui.GDesktop implements { CutAndPasteTransfer cap = new CutAndPasteTransfer(); cap.setForInput(viewport); - Desktop.addInternalFrame(cap, MessageManager.getString("label.cut_paste_alignmen_file"), 600, 500); + Desktop.addInternalFrame(cap, + MessageManager.getString("label.cut_paste_alignmen_file"), + true, 600, 500); } /* @@ -1183,13 +1260,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements { try { - ClassLoader cl = jalview.gui.Desktop.class.getClassLoader(); - java.net.URL url = javax.help.HelpSet.findHelpSet(cl, "help/help"); - javax.help.HelpSet hs = new javax.help.HelpSet(cl, url); - - javax.help.HelpBroker hb = hs.createHelpBroker(); - hb.setCurrentID("home"); - hb.setDisplayed(true); + Help.showHelpWindow(); } catch (Exception ex) { } @@ -1394,6 +1465,11 @@ public class Desktop extends jalview.jbgui.GDesktop implements { final Desktop me = this; final java.io.File choice = chooser.getSelectedFile(); + setProjectFile(choice); + + // TODO or move inside the new Thread? + saveChimeraSessions(choice.getAbsolutePath()); + new Thread(new Runnable() { public void run() @@ -1407,7 +1483,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements // TODO prevent user from messing with the Desktop whilst we're saving try { - new Jalview2XML().SaveState(choice); + new Jalview2XML().saveState(choice); } catch (OutOfMemoryError oom) { new OOMWarning("Whilst saving current state to " @@ -1430,6 +1506,42 @@ public class Desktop extends jalview.jbgui.GDesktop implements } /** + * Request any open, linked Chimera sessions to save their state. + * + * @param jalviewProjectFilename + * the filename of the Jalview project; Chimera session files should + * be given distinct, but obviously related, names. + */ + public void saveChimeraSessions(String jalviewProjectFilename) + { + int i = 0; + for (JInternalFrame frame : getAllFrames()) + { + if (frame instanceof ChimeraViewFrame) + { + /* + * Construct a filename for the Chimera session by append _chimera.py + * to the Jalview project file name. + */ + String chimeraPath = jalviewProjectFilename + "_chimera_" + i + + ".py"; + ((ChimeraViewFrame) frame).saveSession(chimeraPath); + i++; + } + } + } + + private void setProjectFile(File choice) + { + this.projectFile = choice; + } + + public File getProjectFile() + { + return this.projectFile; + } + + /** * DOCUMENT ME! * * @param e @@ -1449,9 +1561,10 @@ public class Desktop extends jalview.jbgui.GDesktop implements if (value == JalviewFileChooser.APPROVE_OPTION) { - final String choice = chooser.getSelectedFile().getAbsolutePath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser - .getSelectedFile().getParent()); + final File selectedFile = chooser.getSelectedFile(); + setProjectFile(selectedFile); + final String choice = selectedFile.getAbsolutePath(); + jalview.bin.Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent()); new Thread(new Runnable() { public void run() @@ -1460,7 +1573,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements choice.hashCode()); try { - new Jalview2XML().LoadJalviewAlign(choice); + new Jalview2XML().loadJalviewAlign(choice); } catch (OutOfMemoryError oom) { new OOMWarning("Whilst loading project from " + choice, oom); @@ -2158,7 +2271,9 @@ public class Desktop extends jalview.jbgui.GDesktop implements if (showMemoryUsage && g != null && df != null) { if (percentUsage < 20) + { g.setColor(Color.red); + } FontMetrics fm = g.getFontMetrics(); if (fm != null) { @@ -2242,7 +2357,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements return afs; } - public AppJmol[] getJmols() + public GStructureViewer[] getJmols() { JInternalFrame[] frames = Desktop.desktop.getAllFrames(); @@ -2258,7 +2373,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements { if (frames[i] instanceof AppJmol) { - AppJmol af = (AppJmol) frames[i]; + GStructureViewer af = (GStructureViewer) frames[i]; avp.addElement(af); } } @@ -2270,10 +2385,10 @@ public class Desktop extends jalview.jbgui.GDesktop implements { return null; } - AppJmol afs[] = new AppJmol[avp.size()]; + GStructureViewer afs[] = new GStructureViewer[avp.size()]; for (int i = 0, j = avp.size(); i < j; i++) { - afs[i] = (AppJmol) avp.elementAt(i); + afs[i] = (GStructureViewer) avp.elementAt(i); } avp.clear(); return afs; @@ -2364,7 +2479,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements throw new Error(MessageManager.getString("error.call_setprogressbar_before_registering_handler")); } progressBarHandlers.put(new Long(id), handler); - final JPanel progressPanel = (JPanel) progressBars.get(new Long(id)); + final JPanel progressPanel = progressBars.get(new Long(id)); if (handler.canCancel()) { JButton cancel = new JButton( @@ -2584,7 +2699,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements + ermsg + "" + "

It may be that you have invalid JABA URLs
in your web service preferences," - + " or mis-configured HTTP proxy settings.

" + + "
or as a command-line argument, or mis-configured HTTP proxy settings.

" + "

Check the Connections and Web services tab
of the" + " Tools->Preferences dialog box to change them.

"), "Web Service Configuration Problem", @@ -2768,7 +2883,10 @@ public class Desktop extends jalview.jbgui.GDesktop implements { invalidate(); File of; - ImageMaker im = new jalview.util.ImageMaker(this, ImageMaker.EPS, "View of Desktop", getWidth(), getHeight(), of=new File("Jalview_snapshot"+System.currentTimeMillis()+".eps"), "View of desktop"); + ImageMaker im = new jalview.util.ImageMaker(this, ImageMaker.TYPE.EPS, + "View of Desktop", getWidth(), getHeight(), of = new File( + "Jalview_snapshot" + System.currentTimeMillis() + + ".eps"), "View of desktop"); try { paintAll(im.getGraphics()); im.writeImage();