import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
+import java.awt.event.MouseEvent;
import java.lang.reflect.InvocationTargetException;
import javax.swing.SwingUtilities;
import jalview.datamodel.SequenceI;
import jalview.io.DataSourceType;
import jalview.io.FileLoader;
+import jalview.util.Platform;
import jalview.viewmodel.ViewportRanges;
public class AlignmentPanelTest
/**
* Test the variant of calculateIdWidth that computes the longest of any
- * sequence name or annotation label width
- * FIXME: JAL-4291: test needs updating for JAL-244 and JAL-4091
+ * sequence name or annotation label width FIXME: JAL-4291: test needs
+ * updating for JAL-244 and JAL-4091
*/
- @Test(groups = "Functional",enabled=false)
+ @Test(groups = "Functional", enabled = false)
public void testCalculateIdWidth_withMaxWidth()
{
AlignViewportI av = af.alignPanel.getAlignViewport();
@Test(groups = { "Functional", "Not-bamboo" })
public void testGetVisibleWidth()
{
+ double scaling = jalview.gui.JvSwingUtilsTest.getScaling(af.alignPanel);
/*
* width for onscreen rendering is IDPanel width
*/
int w = af.alignPanel.getVisibleIdWidth(true);
assertEquals(w, af.alignPanel.getIdPanel().getWidth());
- assertEquals(w, 115);
+
+ // different scaling (1.0, 2.0) gives different results
+ int expectedWidth = scaling == 1.0 ? 112 : Platform.isMac() ? 115 : 107;
+ assertEquals(w, expectedWidth);
/*
* width for offscreen rendering is the same
* preference for auto id width overrides fixed width
*/
Cache.setProperty("FIGURE_AUTOIDWIDTH", Boolean.TRUE.toString());
- assertEquals(115, af.alignPanel.getVisibleIdWidth(false));
+ w = af.alignPanel.getVisibleIdWidth(false);
+ // allow some leeway for different OS renderings
+ assertTrue(w > 105 && w < 120);
+ // different scaling (1.0, 2.0) gives different results
+ assertEquals(w, expectedWidth);
}
+
@Test(groups = { "Functional", "Not-bamboo" })
public void testresetIdWidth()
{
+ double scaling = jalview.gui.JvSwingUtilsTest.getScaling(af.alignPanel);
/*
* width for onscreen rendering is IDPanel width
*/
int w = af.alignPanel.getVisibleIdWidth(true);
- assertEquals(w, af.alignPanel.getIdPanel().getWidth());
- assertEquals(w, 115);
-
- // manually adjust
+ int actual = af.alignPanel.getIdPanel().getWidth();
+ assertEquals(w, actual);
+ // allow some leeway for different OS renderings
+ assertTrue(w > 105 && w < 120);
+ // different scaling (1.0, 2.0) gives different results
+ int expectedWidth = scaling == 1.0 ? 112 : Platform.isMac() ? 115 : 107;
+ assertEquals(w, expectedWidth);
+
+ // manually adjust
af.viewport.setIdWidth(200);
+ // fake mouse drag sets manuallyAdjusted to true (0,0 not moving mouse)
+ MouseEvent drag = new MouseEvent(af.alignPanel,
+ MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, 0, 0,
+ MouseEvent.BUTTON1, false);
+ af.alignPanel.idwidthAdjuster.mouseDragged(drag);
+ af.alignPanel.paintComponent(af.alignPanel.getGraphics());
w = af.alignPanel.calculateIdWidth().width;
- assertTrue(af.alignPanel.getIdPanel().getIdCanvas().isManuallyAdjusted());
- assertEquals(w, af.alignPanel.getIdPanel().getWidth());
+ assertTrue(
+ af.alignPanel.getIdPanel().getIdCanvas().isManuallyAdjusted());
+ actual = af.alignPanel.getIdPanel().getWidth();
+ assertEquals(w, actual);
af.viewport.setIdWidth(-1);
+ af.alignPanel.calculateIdWidth();
af.alignPanel.getIdPanel().getIdCanvas().setManuallyAdjusted(false);
w = af.alignPanel.calculateIdWidth().width;
-
- assertEquals(w, af.alignPanel.getIdPanel().getWidth());
+ af.alignPanel.paintComponent(af.alignPanel.getGraphics());
- assertNotEquals(w,115);
+ actual = af.alignPanel.getIdPanel().getWidth();
+ assertEquals(w, actual);
+
+ // setting a negative IdWidth and then running calculateIdWidth resets width
+ // to optimal id width
+ // allow some leeway for different OS renderings
+ assertTrue(w > 105 && w < 120);
+ // different scaling (1.0, 2.0) gives different results
+ assertEquals(w, expectedWidth);
}
+
@Test(groups = "Functional")
public void testSetOverviewTitle()
{