X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAnnotationLabels.java;h=b28ccc7f9afd45b61b509f3db213e1bd038df2ed;hb=cd4e2687751aab1c9c5974e6966e610a3332236b;hp=67faf1109487b9ce45576da9fac5b00a0277fe20;hpb=be32c14cd8e48fe0a207cd7030cb9cd46f894678;p=jalview.git diff --git a/src/jalview/appletgui/AnnotationLabels.java b/src/jalview/appletgui/AnnotationLabels.java index 67faf11..b28ccc7 100755 --- a/src/jalview/appletgui/AnnotationLabels.java +++ b/src/jalview/appletgui/AnnotationLabels.java @@ -20,6 +20,14 @@ */ package jalview.appletgui; +import jalview.analysis.AlignmentUtils; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.Annotation; +import jalview.datamodel.SequenceGroup; +import jalview.datamodel.SequenceI; +import jalview.util.MessageManager; +import jalview.util.ParseHtmlBodyAndLinks; + import java.awt.Checkbox; import java.awt.CheckboxMenuItem; import java.awt.Color; @@ -44,14 +52,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.Vector; -import jalview.analysis.AlignmentUtils; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.Annotation; -import jalview.datamodel.SequenceGroup; -import jalview.datamodel.SequenceI; -import jalview.util.MessageManager; -import jalview.util.ParseHtmlBodyAndLinks; - public class AnnotationLabels extends Panel implements ActionListener, MouseListener, MouseMotionListener { @@ -162,6 +162,7 @@ public class AnnotationLabels extends Panel implements ActionListener, return row; } + @Override public void actionPerformed(ActionEvent evt) { AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation(); @@ -261,6 +262,7 @@ public class AnnotationLabels extends Panel implements ActionListener, boolean resizePanel = false; + @Override public void mouseMoved(MouseEvent evt) { resizePanel = evt.getY() < 10 && evt.getX() < 14; @@ -306,6 +308,7 @@ public class AnnotationLabels extends Panel implements ActionListener, dragCancelled = true; } + @Override public void mouseDragged(MouseEvent evt) { if (dragCancelled) @@ -365,10 +368,12 @@ public class AnnotationLabels extends Panel implements ActionListener, } } + @Override public void mouseClicked(MouseEvent evt) { } + @Override public void mouseReleased(MouseEvent evt) { if (!resizePanel && !dragCancelled) @@ -400,6 +405,7 @@ public class AnnotationLabels extends Panel implements ActionListener, ap.annotationPanel.repaint(); } + @Override public void mouseEntered(MouseEvent evt) { if (evt.getY() < 10 && evt.getX() < 14) @@ -409,6 +415,7 @@ public class AnnotationLabels extends Panel implements ActionListener, } } + @Override public void mouseExited(MouseEvent evt) { dragCancelled = false; @@ -427,6 +434,7 @@ public class AnnotationLabels extends Panel implements ActionListener, repaint(); } + @Override public void mousePressed(MouseEvent evt) { oldY = evt.getY(); @@ -522,6 +530,7 @@ public class AnnotationLabels extends Panel implements ActionListener, final AlignmentAnnotation aaa = aa[selectedRow]; cbmi.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent e) { if (aaa.groupRef != null) @@ -540,10 +549,12 @@ public class AnnotationLabels extends Panel implements ActionListener, if (aaa.groupRef != null) { final CheckboxMenuItem chist = new CheckboxMenuItem( - MessageManager.getString("label.show_group_histogram"), + MessageManager + .getString("label.show_group_histogram"), aa[selectedRow].groupRef.isShowConsensusHistogram()); chist.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent e) { // TODO: pass on reference @@ -563,6 +574,7 @@ public class AnnotationLabels extends Panel implements ActionListener, aa[selectedRow].groupRef.isShowSequenceLogo()); cprofl.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent e) { // TODO: pass on reference @@ -579,10 +591,12 @@ public class AnnotationLabels extends Panel implements ActionListener, popup.add(cprofl); final CheckboxMenuItem cprofn = new CheckboxMenuItem( - MessageManager.getString("label.normalise_group_logo"), + MessageManager + .getString("label.normalise_group_logo"), aa[selectedRow].groupRef.isNormaliseSequenceLogo()); cprofn.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent e) { // TODO: pass on reference @@ -602,9 +616,11 @@ public class AnnotationLabels extends Panel implements ActionListener, else { final CheckboxMenuItem chist = new CheckboxMenuItem( - MessageManager.getString("label.show_histogram"), av.isShowConsensusHistogram()); + MessageManager.getString("label.show_histogram"), + av.isShowConsensusHistogram()); chist.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent e) { // TODO: pass on reference @@ -624,9 +640,11 @@ public class AnnotationLabels extends Panel implements ActionListener, }); popup.add(chist); final CheckboxMenuItem cprof = new CheckboxMenuItem( - MessageManager.getString("label.show_logo"), av.isShowSequenceLogo()); + MessageManager.getString("label.show_logo"), + av.isShowSequenceLogo()); cprof.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent e) { // TODO: pass on reference @@ -647,9 +665,11 @@ public class AnnotationLabels extends Panel implements ActionListener, }); popup.add(cprof); final CheckboxMenuItem cprofn = new CheckboxMenuItem( - MessageManager.getString("label.normalise_logo"), av.isNormaliseSequenceLogo()); + MessageManager.getString("label.normalise_logo"), + av.isNormaliseSequenceLogo()); cprofn.addItemListener(new ItemListener() { + @Override public void itemStateChanged(ItemEvent e) { // TODO: pass on reference @@ -692,11 +712,47 @@ public class AnnotationLabels extends Panel implements ActionListener, // todo: make the ap scroll to the selection - not necessary, first // click highlights/scrolls, second selects ap.seqPanel.ap.idPanel.highlightSearchResults(null); - ap.av.setSelectionGroup(// new SequenceGroup( - aa[selectedRow].groupRef); // ); - ap.av.sendSelection(); + // process modifiers + SequenceGroup sg = ap.av.getSelectionGroup(); + if (sg == null + || sg == aa[selectedRow].groupRef + || !(jalview.util.Platform.isControlDown(evt) || evt + .isShiftDown())) + { + if (jalview.util.Platform.isControlDown(evt) + || evt.isShiftDown()) + { + // clone a new selection group from the associated group + ap.av.setSelectionGroup(new SequenceGroup( + aa[selectedRow].groupRef)); + } + else + { + // set selection to the associated group so it can be edited + ap.av.setSelectionGroup(aa[selectedRow].groupRef); + } + } + else + { + // modify current selection with associated group + int remainToAdd = aa[selectedRow].groupRef.getSize(); + for (SequenceI sgs : aa[selectedRow].groupRef.getSequences()) + { + if (jalview.util.Platform.isControlDown(evt)) + { + sg.addOrRemove(sgs, --remainToAdd == 0); + } + else + { + // notionally, we should also add intermediate sequences from + // last added sequence ? + sg.addSequence(sgs, --remainToAdd == 0); + } + } + } ap.paintAlignment(false); PaintRefresher.Refresh(ap, ap.av.getSequenceSetId()); + ap.av.sendSelection(); } else { @@ -710,36 +766,45 @@ public class AnnotationLabels extends Panel implements ActionListener, { if (evt.getClickCount() == 1) { - ap.seqPanel.ap.idPanel.highlightSearchResults(Arrays - .asList(new SequenceI[] - { aa[selectedRow].sequenceRef })); + ap.seqPanel.ap.idPanel + .highlightSearchResults(Arrays + .asList(new SequenceI[] { aa[selectedRow].sequenceRef })); } else if (evt.getClickCount() >= 2) { ap.seqPanel.ap.idPanel.highlightSearchResults(null); SequenceGroup sg = ap.av.getSelectionGroup(); - if (sg!=null) + if (sg != null) { - // we make a copy rather than edit the current selection if no modifiers pressed + // we make a copy rather than edit the current selection if no + // modifiers pressed // see Enhancement JAL-1557 - if (!(evt.isControlDown() || evt.isShiftDown())) + if (!(jalview.util.Platform.isControlDown(evt) || evt + .isShiftDown())) { sg = new SequenceGroup(sg); sg.clear(); sg.addSequence(aa[selectedRow].sequenceRef, false); - } else { - if (evt.isControlDown()) + } + else + { + if (jalview.util.Platform.isControlDown(evt)) { sg.addOrRemove(aa[selectedRow].sequenceRef, true); - } else { - // notionally, we should also add intermediate sequences from last added sequence ? + } + else + { + // notionally, we should also add intermediate sequences from + // last added sequence ? sg.addSequence(aa[selectedRow].sequenceRef, true); } } - } else { + } + else + { sg = new SequenceGroup(); sg.setStartRes(0); - sg.setEndRes(ap.av.getAlignment().getWidth()-1); + sg.setEndRes(ap.av.getAlignment().getWidth() - 1); sg.addSequence(aa[selectedRow].sequenceRef, false); } ap.av.setSelectionGroup(sg); @@ -776,17 +841,18 @@ public class AnnotationLabels extends Panel implements ActionListener, for (int[] region : av.getColumnSelection().getHiddenColumns()) { jalview.appletgui.AlignFrame.copiedHiddenColumns - .addElement(new int[] - { region[0], region[1] }); + .addElement(new int[] { region[0], region[1] }); } } } + @Override public void update(Graphics g) { paint(g); } + @Override public void paint(Graphics g) { int w = getSize().width;