X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationRowFilter.java;h=166e1ade7cea64dad28db756c90f646123be1fc3;hb=6129931bfa23eec90e6556a4d0412ef34aff5759;hp=9e205c42dad3be6a4a5059d71b8cf597cb2b0513;hpb=ead72caff9aef9b7103dbb15907aeae777200832;p=jalview.git diff --git a/src/jalview/gui/AnnotationRowFilter.java b/src/jalview/gui/AnnotationRowFilter.java index 9e205c4..166e1ad 100644 --- a/src/jalview/gui/AnnotationRowFilter.java +++ b/src/jalview/gui/AnnotationRowFilter.java @@ -1,19 +1,36 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.gui; -import jalview.api.AnnotationRowFilterI; import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.Annotation; -import jalview.datamodel.ColumnSelection; import jalview.datamodel.GraphLine; import jalview.datamodel.SequenceGroup; import jalview.schemes.AnnotationColourGradient; import jalview.util.MessageManager; -import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Vector; +import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JInternalFrame; @@ -24,8 +41,7 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @SuppressWarnings("serial") -public abstract class AnnotationRowFilter extends JPanel implements - AnnotationRowFilterI +public abstract class AnnotationRowFilter extends JPanel { protected AlignViewport av; @@ -35,7 +51,7 @@ public abstract class AnnotationRowFilter extends JPanel implements protected boolean enableSeqAss = false; - private jalview.datamodel.AlignmentAnnotation currentAnnotation; + private AlignmentAnnotation currentAnnotation; protected boolean adjusting = false; @@ -54,6 +70,11 @@ public abstract class AnnotationRowFilter extends JPanel implements protected JTextField thresholdValue = new JTextField(20); protected JInternalFrame frame; + + protected JButton ok = new JButton(); + + protected JButton cancel = new JButton(); + /** * enabled if the user is dragging the slider - try to keep updates to a * minimun @@ -109,7 +130,6 @@ public abstract class AnnotationRowFilter extends JPanel implements }); } - public AnnotationRowFilter(AlignViewport av, final AlignmentPanel ap) { this.av = av; @@ -121,7 +141,6 @@ public abstract class AnnotationRowFilter extends JPanel implements } - @Override public Vector getAnnotationItems(boolean isSeqAssociated) { Vector list = new Vector(); @@ -141,11 +160,20 @@ public abstract class AnnotationRowFilter extends JPanel implements enableSeqAss = true; } String label = av.getAlignment().getAlignmentAnnotation()[i].label; + // add associated sequence ID if available + if (!isSeqAssociated + && av.getAlignment().getAlignmentAnnotation()[i].sequenceRef != null) + { + label = label + + "_" + + av.getAlignment().getAlignmentAnnotation()[i].sequenceRef + .getName(); + } + // make label unique if (!list.contains(label)) { anmap[list.size()] = i; list.add(label); - } else { @@ -156,7 +184,6 @@ public abstract class AnnotationRowFilter extends JPanel implements } } } - // seqAssociated.setEnabled(enableSeqAss); this.annmap = new int[list.size()]; System.arraycopy(anmap, 0, this.annmap, 0, this.annmap.length); return list; @@ -181,9 +208,8 @@ public abstract class AnnotationRowFilter extends JPanel implements seqAssociated.setEnabled(enableSeqAss); } - public void ok_actionPerformed(ActionEvent e) + public void ok_actionPerformed() { - updateView(); try { frame.setClosed(true); @@ -192,7 +218,7 @@ public abstract class AnnotationRowFilter extends JPanel implements } } - public void cancel_actionPerformed(ActionEvent e) + public void cancel_actionPerformed() { reset(); ap.paintAlignment(true); @@ -204,22 +230,22 @@ public abstract class AnnotationRowFilter extends JPanel implements } } - public void thresholdCheck_actionPerformed(ActionEvent e) + public void thresholdCheck_actionPerformed() { updateView(); } - public void annotations_actionPerformed(ActionEvent e) + public void annotations_actionPerformed() { updateView(); } - public void threshold_actionPerformed(ActionEvent e) + public void threshold_actionPerformed() { updateView(); } - public void thresholdValue_actionPerformed(ActionEvent e) + public void thresholdValue_actionPerformed() { try { @@ -231,7 +257,7 @@ public abstract class AnnotationRowFilter extends JPanel implements } } - public void thresholdIsMin_actionPerformed(ActionEvent actionEvent) + public void thresholdIsMin_actionPerformed() { updateView(); } @@ -239,15 +265,14 @@ public abstract class AnnotationRowFilter extends JPanel implements protected void populateThresholdComboBox(JComboBox threshold) { threshold.addItem(MessageManager - .getString("label.threshold_feature_no_thereshold")); + .getString("label.threshold_feature_no_threshold")); threshold.addItem(MessageManager - .getString("label.threshold_feature_above_thereshold")); + .getString("label.threshold_feature_above_threshold")); threshold.addItem(MessageManager - .getString("label.threshold_feature_below_thereshold")); + .getString("label.threshold_feature_below_threshold")); } - protected void seqAssociated_actionPerformed(ActionEvent arg0, - JComboBox annotations, JCheckBox seqAssociated) + protected void seqAssociated_actionPerformed(JComboBox annotations) { adjusting = true; String cursel = (String) annotations.getSelectedItem(); @@ -304,26 +329,25 @@ public abstract class AnnotationRowFilter extends JPanel implements } } - protected boolean colorAlignmContaining( - AlignmentAnnotation currentAnnotation, int selectedThresholdItem) + protected boolean colorAlignmContaining(AlignmentAnnotation currentAnn, + int selectedThresholdOption) { AnnotationColourGradient acg = null; if (currentColours.isSelected()) { - acg = new AnnotationColourGradient(currentAnnotation, - av.getGlobalColourScheme(), selectedThresholdItem); + acg = new AnnotationColourGradient(currentAnn, + av.getGlobalColourScheme(), selectedThresholdOption); } else { - acg = new AnnotationColourGradient(currentAnnotation, + acg = new AnnotationColourGradient(currentAnn, minColour.getBackground(), maxColour.getBackground(), - selectedThresholdItem); + selectedThresholdOption); } acg.setSeqAssociated(seqAssociated.isSelected()); - if (currentAnnotation.graphMin == 0f - && currentAnnotation.graphMax == 0f) + if (currentAnn.graphMin == 0f && currentAnn.graphMax == 0f) { acg.setPredefinedColours(true); } @@ -342,100 +366,25 @@ public abstract class AnnotationRowFilter extends JPanel implements continue; } + AnnotationColourGradient scheme = null; if (currentColours.isSelected()) { - sg.cs = new AnnotationColourGradient(currentAnnotation, sg.cs, - selectedThresholdItem); - ((AnnotationColourGradient) sg.cs).setSeqAssociated(seqAssociated - .isSelected()); - + scheme = new AnnotationColourGradient(currentAnn, + sg.getColourScheme(), selectedThresholdOption); } else { - sg.cs = new AnnotationColourGradient(currentAnnotation, + scheme = new AnnotationColourGradient(currentAnn, minColour.getBackground(), maxColour.getBackground(), - selectedThresholdItem); - ((AnnotationColourGradient) sg.cs).setSeqAssociated(seqAssociated - .isSelected()); + selectedThresholdOption); } - + scheme.setSeqAssociated(seqAssociated.isSelected()); + sg.setColourScheme(scheme); } } return false; } - protected boolean markColumnsContaining( - AlignmentAnnotation currentAnnotation, int thresholdComparisonType) - { - try - { - if (currentAnnotation != null) - { - Annotation[] annotations = currentAnnotation.annotations; - ColumnSelection cs = av.getColumnSelection(); - cs.clear(); - if (thresholdComparisonType == AnnotationColourGradient.NO_THRESHOLD) - { - int count = 0; - do - { - if (annotations[count] != null) - { - if (currentAnnotation.label.equals("Secondary Structure") - && annotations[count].secondaryStructure != ' ') - { - cs.addElement(count); - } - else if (currentAnnotation.label - .equals("Iron Sulphur Contacts")) - { - cs.addElement(count); - } - else if (annotations[count].value != 0.0) - { - cs.addElement(count); - } - - } - count++; - } while (count < annotations.length); - } - else - { - int count = 0; - do - { - if (annotations[count] != null) - { - if (thresholdComparisonType == AnnotationColourGradient.ABOVE_THRESHOLD) - { - if (annotations[count].value > currentAnnotation.threshold.value) - { - cs.addElement(count); - } - } - else if (thresholdComparisonType == AnnotationColourGradient.BELOW_THRESHOLD) - { - if (annotations[count].value < currentAnnotation.threshold.value) - { - cs.addElement(count); - } - } - - } - count++; - } while (count < annotations.length); - } - } - - return true; - } catch (Exception e) - { - e.printStackTrace(); - return false; - } - } - public jalview.datamodel.AlignmentAnnotation getCurrentAnnotation() { return currentAnnotation; @@ -447,4 +396,9 @@ public abstract class AnnotationRowFilter extends JPanel implements this.currentAnnotation = currentAnnotation; } + public abstract void valueChanged(boolean updateAllAnnotation); + + public abstract void updateView(); + + public abstract void reset(); }