X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FDesktop.java;h=59541bb1f66e5562e81919850a25452778ab790c;hb=81566f0db459762fb716dcd54e1c04086f7ed72b;hp=7682ee6b3d45889263e38ec880e79cab100d9303;hpb=5757f3c3ee60e52a2446ab111f35452cf4435ab2;p=jalview.git diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 7682ee6..59541bb 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -20,37 +20,6 @@ */ package jalview.gui; -import jalview.api.AlignViewportI; -import jalview.api.AlignmentViewPanel; -import jalview.bin.Cache; -import jalview.bin.Jalview; -import jalview.gui.ImageExporter.ImageWriterI; -import jalview.io.BackupFiles; -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.project.Jalview2XML; -import jalview.structure.StructureSelectionManager; -import jalview.urls.IdOrgSettings; -import jalview.util.BrowserLauncher; -import jalview.util.ImageMaker.TYPE; -import jalview.util.MessageManager; -import jalview.util.Platform; -import jalview.util.ShortcutKeyMaskExWrapper; -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; import java.awt.Dimension; @@ -123,6 +92,37 @@ import javax.swing.event.InternalFrameEvent; import org.stackoverflowusers.file.WindowsShortcut; +import jalview.api.AlignViewportI; +import jalview.api.AlignmentViewPanel; +import jalview.bin.Cache; +import jalview.bin.Jalview; +import jalview.gui.ImageExporter.ImageWriterI; +import jalview.io.BackupFiles; +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.project.Jalview2XML; +import jalview.structure.StructureSelectionManager; +import jalview.urls.IdOrgSettings; +import jalview.util.BrowserLauncher; +import jalview.util.ImageMaker.TYPE; +import jalview.util.MessageManager; +import jalview.util.Platform; +import jalview.util.ShortcutKeyMaskExWrapper; +import jalview.util.UrlConstants; +import jalview.viewmodel.AlignmentViewport; +import jalview.ws.params.ParamManager; +import jalview.ws.utils.UrlDownloadClient; + /** * Jalview Desktop * @@ -155,7 +155,7 @@ public class Desktop extends jalview.jbgui.GDesktop protected static final String CONFIRM_KEYBOARD_QUIT = "CONFIRM_KEYBOARD_QUIT"; - public static HashMap savingFiles = new HashMap<>(); + public static HashMap savingFiles = new HashMap(); private JalviewChangeSupport changeSupport = new JalviewChangeSupport(); @@ -1767,7 +1767,7 @@ public class Desktop extends jalview.jbgui.GDesktop { try { - new Jalview2XML().loadJalviewAlign(choice); + new Jalview2XML().loadJalviewAlign(selectedFile); } catch (OutOfMemoryError oom) { new OOMWarning("Whilst loading project from " + choice, oom); @@ -1974,11 +1974,28 @@ public class Desktop extends jalview.jbgui.GDesktop return; } + // FIXME: ideally should use UI interface API + FeatureSettings viewFeatureSettings = (af.featureSettings != null + && af.featureSettings.isOpen()) + ? af.featureSettings + : null; + Rectangle fsBounds = af.getFeatureSettingsGeometry(); for (int i = 0; i < size; i++) { AlignmentPanel ap = af.alignPanels.get(i); + AlignFrame newaf = new AlignFrame(ap); + // transfer reference for existing feature settings to new alignFrame + if (ap == af.alignPanel) + { + if (viewFeatureSettings != null && viewFeatureSettings.fr.ap == ap) + { + newaf.featureSettings = viewFeatureSettings; + } + newaf.setFeatureSettingsGeometry(fsBounds); + } + /* * Restore the view's last exploded frame geometry if known. Multiple * views from one exploded frame share and restore the same (frame) @@ -1994,8 +2011,17 @@ public class Desktop extends jalview.jbgui.GDesktop addInternalFrame(newaf, af.getTitle(), AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); + // and materialise a new feature settings dialog instance for the new alignframe + // (closes the old as if 'OK' was pressed) + if (ap == af.alignPanel && newaf.featureSettings != null + && newaf.featureSettings.isOpen() + && af.alignPanel.getAlignViewport().isShowSequenceFeatures()) + { + newaf.showFeatureSettingsUI(); + } } + af.featureSettings = null; af.alignPanels.clear(); af.closeMenuItem_actionPerformed(true); @@ -2015,7 +2041,6 @@ public class Desktop extends jalview.jbgui.GDesktop source.viewport.setExplodedGeometry(source.getBounds()); JInternalFrame[] frames = desktop.getAllFrames(); String viewId = source.viewport.getSequenceSetId(); - for (int t = 0; t < frames.length; t++) { if (frames[t] instanceof AlignFrame && frames[t] != source) @@ -2036,11 +2061,33 @@ public class Desktop extends jalview.jbgui.GDesktop if (gatherThis) { + if (af.featureSettings != null && af.featureSettings.isOpen()) + { + if (source.featureSettings == null) + { + // preserve the feature settings geometry for this frame + source.featureSettings = af.featureSettings; + source.setFeatureSettingsGeometry( + af.getFeatureSettingsGeometry()); + } + else + { + // close it and forget + af.featureSettings.close(); + } + } af.alignPanels.clear(); af.closeMenuItem_actionPerformed(true); } } } + + // refresh the feature setting UI for the source frame if it exists + if (source.featureSettings != null + && source.featureSettings.isOpen()) + { + source.showFeatureSettingsUI(); + } } public JInternalFrame[] getAllFrames() @@ -2442,7 +2489,7 @@ public class Desktop extends jalview.jbgui.GDesktop @Override public void setProgressBar(String message, long id) { - Platform.timeCheck("Desktop " + message, Platform.TIME_MARK); + // Platform.timeCheck("Desktop " + message, Platform.TIME_MARK); if (progressBars == null) {