X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPopupMenu.java;h=a3a24220119426f554e883955744c0810089b9a4;hb=f0efe3029537bbbbe788e16eb85cb0af9c0fb81e;hp=33c86bc00ad753ff5b417ffcfb481c8cad18c83c;hpb=e464da0ea20b0322846ce623598a16f2a1cba7ae;p=jalview.git
diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java
index 33c86bc..a3a2422 100644
--- a/src/jalview/gui/PopupMenu.java
+++ b/src/jalview/gui/PopupMenu.java
@@ -49,6 +49,7 @@ import jalview.schemes.PIDColourScheme;
import jalview.util.GroupUrlLink;
import jalview.util.GroupUrlLink.UrlStringTooLongException;
import jalview.util.MessageManager;
+import jalview.util.StringUtils;
import jalview.util.UrlLink;
import java.awt.Color;
@@ -157,6 +158,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
JMenuItem sequenceFeature = new JMenuItem();
+
JMenuItem textColour = new JMenuItem();
JMenu jMenu1 = new JMenu();
@@ -232,8 +234,8 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
* currently selected sequence (if there is one):
*/
final List selectedSequence = (seq == null
- ? Collections. emptyList()
- : Arrays.asList(seq));
+ ? Collections. emptyList() : Arrays.asList(seq));
+
buildAnnotationTypesMenus(seqShowAnnotationsMenu,
seqHideAnnotationsMenu, selectedSequence);
configureReferenceAnnotationsMenu(seqAddReferenceAnnotations,
@@ -460,7 +462,8 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
buildGroupURLMenu(sg, groupLinks);
}
// Add a 'show all structures' for the current selection
- Hashtable pdbe = new Hashtable<>(), reppdb = new Hashtable<>();
+ Hashtable pdbe = new Hashtable<>();
+ Hashtable reppdb = new Hashtable<>();
SequenceI sqass = null;
for (SequenceI sq : alignPanel.av.getSequenceSelection())
@@ -549,23 +552,27 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
{
desc = String.format("%s %d-%d", sf.getType(), start, end);
}
+ String tooltip = desc;
String description = sf.getDescription();
if (description != null)
{
- if (description.length() <= 6)
+ description = StringUtils.stripHtmlTags(description);
+ if (description.length() > 12)
{
- desc = desc + " " + description;
+ desc = desc + " " + description.substring(0, 12) + "..";
}
else
{
- desc = desc + " " + description.substring(0, 6) + "..";
+ desc = desc + " " + description;
}
+ tooltip = tooltip + " " + description;
}
if (sf.getFeatureGroup() != null)
{
- desc = desc + " (" + sf.getFeatureGroup() + ")";
+ tooltip = tooltip + (" (" + sf.getFeatureGroup() + ")");
}
JMenuItem item = new JMenuItem(desc);
+ item.setToolTipText(tooltip);
item.addActionListener(new ActionListener()
{
@Override
@@ -585,8 +592,12 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
*/
protected void showFeatureDetails(SequenceFeature sf)
{
- CutAndPasteTransfer cap = new CutAndPasteTransfer();
+ CutAndPasteHtmlTransfer cap = new CutAndPasteHtmlTransfer();
+ // it appears Java's CSS does not support border-collaps :-(
+ cap.addStylesheetRule("table { border-collapse: collapse;}");
+ cap.addStylesheetRule("table, td, th {border: 1px solid black;}");
cap.setText(sf.getDetailsReport());
+
Desktop.addInternalFrame(cap,
MessageManager.getString("label.feature_details"), 500, 500);
}
@@ -1552,15 +1563,8 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
protected void hideInsertions_actionPerformed(ActionEvent actionEvent)
{
-
- HiddenColumns hidden = new HiddenColumns();
- BitSet inserts = new BitSet(), mask = new BitSet();
-
- // set mask to preserve existing hidden columns outside selected group
- if (ap.av.hasHiddenColumns())
- {
- ap.av.getAlignment().getHiddenColumns().markHiddenRegions(mask);
- }
+ HiddenColumns hidden = ap.av.getAlignment().getHiddenColumns();
+ BitSet inserts = new BitSet();
boolean markedPopup = false;
// mark inserts in current selection
@@ -1568,10 +1572,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
{
// mark just the columns in the selection group to be hidden
inserts.set(ap.av.getSelectionGroup().getStartRes(),
- ap.av.getSelectionGroup().getEndRes() + 1);
-
- // and clear that part of the mask
- mask.andNot(inserts);
+ ap.av.getSelectionGroup().getEndRes() + 1); // TODO why +1?
// now clear columns without gaps
for (SequenceI sq : ap.av.getSelectionGroup().getSequences())
@@ -1582,29 +1583,18 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
}
inserts.and(sq.getInsertionsAsBits());
}
- }
- else
- {
- // initially, mark all columns to be hidden
- inserts.set(0, ap.av.getAlignment().getWidth());
-
- // and clear out old hidden regions completely
- mask.clear();
+ hidden.clearAndHideColumns(inserts, ap.av.getSelectionGroup().getStartRes(),
+ ap.av.getSelectionGroup().getEndRes());
}
// now mark for sequence under popup if we haven't already done it
- if (!markedPopup && sequence != null)
+ else if (!markedPopup && sequence != null)
{
- inserts.and(sequence.getInsertionsAsBits());
- }
-
- // finally, preserve hidden regions outside selection
- inserts.or(mask);
+ inserts.or(sequence.getInsertionsAsBits());
- // and set hidden columns accordingly
- hidden.hideMarkedBits(inserts);
-
- ap.av.getAlignment().setHiddenColumns(hidden);
+ // and set hidden columns accordingly
+ hidden.hideColumns(inserts);
+ }
refresh();
}
@@ -1629,10 +1619,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
new Object[]
{ seq.getDisplayId(true) }) + "
");
new SequenceAnnotationReport(null).createSequenceAnnotationReport(
- contents, seq, true, true,
- (ap.getSeqPanel().seqCanvas.fr != null)
- ? ap.getSeqPanel().seqCanvas.fr.getMinMax()
- : null);
+ contents, seq, true, true, ap.getSeqPanel().seqCanvas.fr);
contents.append("
");
}
cap.setText("" + contents.toString() + "");
@@ -1842,7 +1829,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
}
sequence.setName(dialog.getName().replace(' ', '_'));
- ap.paintAlignment(false);
+ ap.paintAlignment(false, false);
}
sequence.setDescription(dialog.getDescription());