From: gmungoc Date: Fri, 6 Mar 2020 13:59:36 +0000 (+0000) Subject: JAL-3468 i18n and additional unit tests X-Git-Tag: Develop-2_11_2_0-d20201215~58^2~7^2 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=refs%2Fheads%2Ffeature%2FJAL-3468featureDescriptionEllipsis;p=jalview.git JAL-3468 i18n and additional unit tests --- diff --git a/resources/lang/Messages.properties b/resources/lang/Messages.properties index fdd15cd..7f86e9f 100644 --- a/resources/lang/Messages.properties +++ b/resources/lang/Messages.properties @@ -1403,4 +1403,5 @@ label.by_annotation_tooltip = Annotation Colour is configured from the main Colo label.show_linked_features = Show {0} features label.on_top = on top label.include_linked_features = Include {0} features -label.include_linked_tooltip = Include visible {0} features
converted to local sequence coordinates \ No newline at end of file +label.include_linked_tooltip = Include visible {0} features
converted to local sequence coordinates +label.features_not_shown = {0} feature(s) not shown \ No newline at end of file diff --git a/resources/lang/Messages_es.properties b/resources/lang/Messages_es.properties index daa4418..42f145b 100644 --- a/resources/lang/Messages_es.properties +++ b/resources/lang/Messages_es.properties @@ -1404,4 +1404,5 @@ label.by_annotation_tooltip = El color de anotaci label.show_linked_features = Características de {0} label.on_top = encima label.include_linked_features = Incluir características de {0} -label.include_linked_tooltip = Incluir características de {0}
convertidas a coordenadas de secuencia local \ No newline at end of file +label.include_linked_tooltip = Incluir características de {0}
convertidas a coordenadas de secuencia local +label.features_not_shown = {0} característica(s) no mostradas \ No newline at end of file diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 796d339..7020265 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -1074,24 +1074,24 @@ public class SeqPanel extends JPanel } } } - if (tooltipText.length() == 6) // + if (tooltipText.length() == 6) // "" { setToolTipText(null); lastTooltip = null; } else { - if (tooltipText.length() > MAX_TOOLTIP_LENGTH) // constant + if (tooltipText.length() > MAX_TOOLTIP_LENGTH) { tooltipText.setLength(MAX_TOOLTIP_LENGTH); - tooltipText.append("...TOOLONG!"); + tooltipText.append("..."); } if (unshownFeatures > 0) { tooltipText.append("
").append("... ").append("") - .append(unshownFeatures) - .append(" feature").append(unshownFeatures == 1 ? "" : "s") - .append(" not shown"); + .append(MessageManager.formatMessage( + "label.features_not_shown", unshownFeatures)) + .append(""); } String textString = tooltipText.toString(); if (lastTooltip == null || !lastTooltip.equals(textString)) diff --git a/test/jalview/gui/PopupMenuTest.java b/test/jalview/gui/PopupMenuTest.java index acef0a1..5e83942 100644 --- a/test/jalview/gui/PopupMenuTest.java +++ b/test/jalview/gui/PopupMenuTest.java @@ -24,6 +24,8 @@ import static jalview.util.UrlConstants.DB_ACCESSION; import static jalview.util.UrlConstants.SEQUENCE_ID; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.assertNotNull; +import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertTrue; import jalview.bin.Cache; @@ -47,6 +49,7 @@ import jalview.util.MessageManager; import jalview.util.UrlConstants; import java.awt.Component; +import java.awt.Container; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -690,4 +693,75 @@ public class PopupMenuTest assertEquals(region[1], 34); } + @Test(groups = { "Functional" }) + public void testAddFeatureDetails() + { + String menuText = MessageManager.getString("label.feature_details"); + + /* + * with no features, sub-menu should not be created + */ + List features = new ArrayList<>(); + SequenceI seq = this.alignment.getSequenceAt(0); // FER_CAPAA/1-12 + testee.addFeatureDetails(features, seq, 10); + JMenu menu = findMenu(testee, menuText); + assertNull(menu); + + /* + * add some features; the menu item text is wrapped in html, and includes + * feature type, position, description, group (if not null) + */ + SequenceFeature sf1 = new SequenceFeature("helix", "curly", 2, 6, null); + SequenceFeature sf2 = new SequenceFeature("chain", "straight", 1, 1, + "uniprot"); + features.add(sf1); + features.add(sf2); + testee.addFeatureDetails(features, seq, 10); + menu = findMenu(testee, menuText); + assertNotNull(menu); + assertEquals(2, menu.getItemCount()); + JMenuItem item = menu.getItem(0); + assertEquals("helix 2-6 curly", item.getText()); + item = menu.getItem(1); + assertEquals("chain 1 straight (uniprot)", item.getText()); + + /* + * long feature descriptions are truncated to 40 characters + */ + sf1.setDescription( + "this is a quite extraordinarily long description"); + testee.remove(menu); // don't create the sub-menu twice + testee.addFeatureDetails(features, seq, 10); + menu = findMenu(testee, menuText); + item = menu.getItem(0); + assertEquals( + "helix 2-6 this is a quite extraordinarily long des...", + item.getText()); + } + + /** + * Returns the first component which is a JMenu with the given text + * + * @param c + * @param text + * @return + */ + private JMenu findMenu(Container c, String text) + { + for (int i = 0; i < c.getComponentCount(); i++) + { + Component comp = c.getComponent(i); + if ((comp instanceof JMenu) && ((JMenu) comp).getText().equals(text)) + { + return (JMenu) comp; + } + } + return null; + } + + @Test(groups = { "Functional" }) + public void testAddFeatureDetails_linkedFeatures() + { + // todo tests that verify menu items for complement features + } }