X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSplitFrame.java;h=253b02c45d93a9c9cb279d41310b57b9f095e5e8;hb=f300e30df117ff4be7d1df5c781161efd0285e5f;hp=d28bb14a13861824a7de0b58f7067641de29f19a;hpb=fdebbbbada35176910e5d8d1065c038ca1e143b2;p=jalview.git diff --git a/src/jalview/gui/SplitFrame.java b/src/jalview/gui/SplitFrame.java index d28bb14..253b02c 100644 --- a/src/jalview/gui/SplitFrame.java +++ b/src/jalview/gui/SplitFrame.java @@ -97,9 +97,9 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI * estimate width and height of SplitFrame; this.getInsets() doesn't seem to * give the full additional size (a few pixels short) */ - int widthFudge = Platform.isAMac() ? MAC_INSETS_WIDTH + int widthFudge = Platform.isAMacAndNotJS() ? MAC_INSETS_WIDTH : WINDOWS_INSETS_WIDTH; - int heightFudge = Platform.isAMac() ? MAC_INSETS_HEIGHT + int heightFudge = Platform.isAMacAndNotJS() ? MAC_INSETS_HEIGHT : WINDOWS_INSETS_HEIGHT; int width = ((AlignFrame) getTopFrame()).getWidth() + widthFudge; int height = ((AlignFrame) getTopFrame()).getHeight() @@ -132,7 +132,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI // allow about 65 pixels for Desktop decorators on Windows int newHeight = Math.min(height, - Desktop.instance.getHeight() - DESKTOP_DECORATORS_HEIGHT); + Desktop.getInstance().getHeight() - DESKTOP_DECORATORS_HEIGHT); if (newHeight != height) { int oldDividerLocation = getDividerLocation(); @@ -149,8 +149,8 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI { // TODO if CommandListener is only ever 1:1 for complementary views, // may change broadcast pattern to direct messaging (more efficient) - final StructureSelectionManager ssm = StructureSelectionManager - .getStructureSelectionManager(Desktop.instance); + final StructureSelectionManager ssm = Desktop + .getStructureSelectionManager(); ssm.addCommandListener(((AlignFrame) getTopFrame()).getViewport()); ssm.addCommandListener(((AlignFrame) getBottomFrame()).getViewport()); } @@ -194,12 +194,16 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI } /** - * Adjust the divider for a sensible split of the real estate (for example, + * Adjusts the divider for a sensible split of the real estate (for example, * when many transcripts are shown with a single protein). This should only be * called after the split pane has been laid out (made visible) so it has a - * height. + * height. The aim is to avoid unnecessary vertical scroll bars, while + * ensuring that at least 2 sequences are visible in each panel. + *

+ * Once laid out, the user may choose to customise as they wish, so this + * method is not called again after the initial layout. */ - protected void adjustDivider() + protected void adjustInitialLayout() { AlignFrame topFrame = (AlignFrame) getTopFrame(); AlignFrame bottomFrame = (AlignFrame) getBottomFrame(); @@ -224,36 +228,32 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI int bottomCharHeight = bottomViewport.getViewStyle().getCharHeight(); /* - * calculate the minimum ratio that leaves at least - * two sequences visible in the top panel + * calculate the minimum ratio that leaves at least the height + * of two sequences (after rounding) visible in the top panel */ int topPanelHeight = topFrame.getHeight(); + int bottomPanelHeight = bottomFrame.getHeight(); int topSequencesHeight = topFrame.alignPanel.getSeqPanel().seqCanvas .getHeight(); int topPanelMinHeight = topPanelHeight - - Math.max(0, - topSequencesHeight - 2 * topViewport.getCharHeight()); - int myHeight = getHeight(); - double minRatio = topPanelMinHeight / (double) myHeight; + - Math.max(0, topSequencesHeight - 3 * topCharHeight); + double totalHeight = (double) topPanelHeight + bottomPanelHeight; + double minRatio = topPanelMinHeight / totalHeight; /* - * calculate the maximum ratio that leaves at least - * two sequences visible in the bottom panel + * calculate the maximum ratio that leaves at least the height + * of two sequences (after rounding) visible in the bottom panel */ - int bottomPanelHeight = bottomFrame.getHeight(); int bottomSequencesHeight = bottomFrame.alignPanel.getSeqPanel().seqCanvas .getHeight(); int bottomPanelMinHeight = bottomPanelHeight - - Math.max( - 0, - bottomSequencesHeight - 2 - * bottomViewport.getCharHeight()); - double maxRatio = (myHeight - bottomPanelMinHeight) / (double) myHeight; + - Math.max(0, bottomSequencesHeight - 3 * bottomCharHeight); + double maxRatio = (totalHeight - bottomPanelMinHeight) / totalHeight; /* * estimate ratio of (topFrameContent / bottomFrameContent) */ - int insets = Platform.isAMac() ? MAC_INSETS_HEIGHT + int insets = Platform.isAMacAndNotJS() ? MAC_INSETS_HEIGHT : WINDOWS_INSETS_HEIGHT; // allow 3 'rows' for scale, scrollbar, status bar int topHeight = insets + (3 + topCount) * topCharHeight @@ -268,7 +268,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI */ ratio = Math.min(ratio, maxRatio); ratio = Math.max(ratio, minRatio); - // setRelativeDividerLocation(ratio); + setRelativeDividerLocation(ratio); } /** @@ -282,7 +282,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI public void internalFrameClosed(InternalFrameEvent evt) { close(); - }; + } }); } @@ -539,7 +539,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI topFrame.setDisplayedView(newTopPanel); } - newBottomPanel.av.viewName = newTopPanel.av.viewName; + newBottomPanel.av.setViewName(newTopPanel.av.getViewName()); newTopPanel.av.setCodingComplement(newBottomPanel.av); /* @@ -555,8 +555,8 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI */ adjustLayout(); - final StructureSelectionManager ssm = StructureSelectionManager - .getStructureSelectionManager(Desktop.instance); + final StructureSelectionManager ssm = Desktop + .getStructureSelectionManager(); ssm.addCommandListener(newTopPanel.av); ssm.addCommandListener(newBottomPanel.av); } @@ -683,7 +683,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI */ protected void expandViews_actionPerformed() { - Desktop.instance.explodeViews(this); + Desktop.getInstance().explodeViews(this); } /** @@ -692,7 +692,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI */ protected void gatherViews_actionPerformed() { - Desktop.instance.gatherViews(this); + Desktop.getInstance().gatherViews(this); } /**