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(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);
+ 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());
+ 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;
+ af.alignPanel.paintComponent(af.alignPanel.getGraphics());
- assertEquals(w, af.alignPanel.getIdPanel().getWidth());
+ actual = af.alignPanel.getIdPanel().getWidth();
+ assertEquals(w, actual);
- assertNotEquals(w, 115);
+ // 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")