*/
package jalview.gui;
-import jalview.bin.Cache;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.GraphLine;
-import jalview.datamodel.SequenceGroup;
-import jalview.gui.JalviewColourChooser.ColourChooserListener;
-import jalview.schemes.AnnotationColourGradient;
-import jalview.schemes.ColourSchemeI;
-import jalview.util.MessageManager;
-
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
+import jalview.bin.Cache;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.GraphLine;
+import jalview.datamodel.SequenceGroup;
+import jalview.gui.JalviewColourChooser.ColourChooserListener;
+import jalview.schemes.AnnotationColourGradient;
+import jalview.schemes.ColourSchemeI;
+import jalview.util.MessageManager;
import net.miginfocom.swing.MigLayout;
@SuppressWarnings("serial")
public AnnotationColourChooser(AlignViewport av, final AlignmentPanel ap)
{
+ this(av,ap,null);
+ }
+ public AnnotationColourChooser(AlignViewport av, final AlignmentPanel ap,AnnotationColourGradient initSettings)
+ {
super(av, ap);
oldcs = av.getGlobalColourScheme();
if (av.getAlignment().getGroups() != null)
}
}
frame = new JInternalFrame();
+ frame.setFrameIcon(null);
frame.setContentPane(this);
frame.setLayer(JLayeredPane.PALETTE_LAYER);
Desktop.addInternalFrame(frame,
setDefaultMinMax();
adjusting = true;
- if (oldcs instanceof AnnotationColourGradient)
+ if (oldcs instanceof AnnotationColourGradient && initSettings==null)
+ {
+ // init from oldcs
+ initialiseFrom((AnnotationColourGradient) oldcs);
+ } else {
+ // use initial colour gradient - if any..
+ initialiseFrom(initSettings);
+ }
+
+ jbInit();
+ adjusting = false;
+
+ updateView();
+ frame.invalidate();
+ frame.pack();
+ }
+ private void initialiseFrom(AnnotationColourGradient acg)
+ {
+ if (acg!=null)
{
- AnnotationColourGradient acg = (AnnotationColourGradient) oldcs;
useOriginalColours.setSelected(
- acg.isPredefinedColours() || acg.getBaseColour() != null);
+ acg.isPredefinedColours() || acg.getBaseColour() != null);
if (!acg.isPredefinedColours() && acg.getBaseColour() == null)
{
minColour.setBackground(acg.getMinColour());
populateThresholdComboBox(threshold);
- if (oldcs instanceof AnnotationColourGradient)
+ if (acg!=null)
{
- AnnotationColourGradient acg = (AnnotationColourGradient) oldcs;
String label = getAnnotationMenuLabel(acg.getAnnotation());
+ // TODO: workaround below shouldn't be necessary - there's a bug in getAnnotationMenuLabel!
+ if (acg.isSeqAssociated())
+ {
+ label = acg.getAnnotation().label;
+ }
annotations.setSelectedItem(label);
switch (acg.getAboveThreshold())
{
"error.implementation_error_dont_know_about_threshold_setting"));
}
thresholdIsMin.setSelected(acg.isThresholdIsMinMax());
- thresholdValue
- .setText(String.valueOf(acg.getAnnotationThreshold()));
+ thresholdValue.setText(String.valueOf(acg.getAnnotationThreshold()));
}
-
- jbInit();
- adjusting = false;
-
- updateView();
- frame.invalidate();
- frame.pack();
}
@Override
return;
}
+ int selIndex = annotations
+ .getSelectedIndex();
+ int annIndex = annmap[selIndex];
setCurrentAnnotation(
- av.getAlignment().getAlignmentAnnotation()[annmap[annotations
- .getSelectedIndex()]]);
+ av.getAlignment().getAlignmentAnnotation()[annIndex]);
int selectedThresholdItem = getSelectedThresholdItem(
getThreshold().getSelectedIndex());
{
continue;
}
- sg.setColourScheme(
- acg.getInstance(av, sg));
+ sg.setColourScheme(acg.getInstance(av, sg));
}
}
}
super.sliderDragReleased();
ap.paintAlignment(true, true);
}
+
+ /**
+ * construct and display a colourchooser for a given annotation row
+ *
+ * @param av
+ * @param ap
+ * @param alignmentAnnotation
+ * @param perseq - when true, enable per-sequence if alignment annotation is per sequence
+ */
+ public static void displayFor(AlignViewport av, AlignmentPanel ap,
+ AlignmentAnnotation alignmentAnnotation, boolean perSeq)
+ {
+ ColourSchemeI global = av.getGlobalColourScheme();
+ AnnotationColourGradient newCS = new AnnotationColourGradient(alignmentAnnotation, global, alignmentAnnotation.threshold!=null ? AnnotationColourGradient.ABOVE_THRESHOLD:AnnotationColourGradient.NO_THRESHOLD);
+ if (alignmentAnnotation.sequenceRef!=null)
+ {
+ newCS.setSeqAssociated(perSeq);
+ }
+ for (int i=0;i<alignmentAnnotation.annotations.length;i++)
+ {
+ Annotation ann = alignmentAnnotation.annotations[i];
+ if (ann!=null && ann.colour!=null && !ann.colour.equals(Color.white))
+ {
+ newCS.setPredefinedColours(true);
+ break;
+ }
+ }
+ AnnotationColourChooser achooser = new AnnotationColourChooser(av,ap,newCS);
+ }
}