final List<AlignmentPanel> selviews = new ArrayList<AlignmentPanel>();
final List<AlignmentPanel> origview = new ArrayList<AlignmentPanel>();
- ViewSelectionMenu vsel = new ViewSelectionMenu("Transfer colours from",
+ final String menuLabel = MessageManager
+ .getString("label.copy_format_from");
+ ViewSelectionMenu vsel = new ViewSelectionMenu(menuLabel,
new ViewSetProvider()
{
{
origview.clear();
origview.add(alignPanel);
- return Desktop.getAlignmentPanels(null);
+ // make an array of all alignment panels except for this one
+ List<AlignmentPanel> aps = new ArrayList<AlignmentPanel>(
+ Arrays.asList(Desktop.getAlignmentPanels(null)));
+ aps.remove(AlignFrame.this.alignPanel);
+ return aps.toArray(new AlignmentPanel[aps.size()]);
}
}, selviews, new ItemListener()
{
{
if (origview.size() > 0)
{
+ final AlignmentPanel ap = origview.get(0);
+
+ /*
+ * Copy the ViewStyle of the selected panel to 'this one'.
+ * Don't change value of 'scaleProteinAsCdna' unless copying
+ * from a SplitFrame.
+ */
ViewStyleI vs = selviews.get(0).getAlignViewport()
.getViewStyle();
- origview.get(0).getAlignViewport().setViewStyle(vs);
- AlignViewportI complement = origview.get(0)
- .getAlignViewport().getCodingComplement();
- if (complement != null)
+ boolean fromSplitFrame = selviews.get(0)
+ .getAlignViewport().getCodingComplement() != null;
+ if (!fromSplitFrame)
+ {
+ vs.setScaleProteinAsCdna(ap.getAlignViewport()
+ .getViewStyle().isScaleProteinAsCdna());
+ }
+ ap.getAlignViewport().setViewStyle(vs);
+
+ /*
+ * Also rescale ViewStyle of SplitFrame complement if there is
+ * one _and_ it is set to 'scaledProteinAsCdna'; we don't copy
+ * the whole ViewStyle (allow cDNA protein to have different
+ * fonts)
+ */
+ AlignViewportI complement = ap.getAlignViewport()
+ .getCodingComplement();
+ if (complement != null && vs.isScaleProteinAsCdna())
{
AlignFrame af = Desktop.getAlignFrameFor(complement);
- if (complement.isNucleotide())
- {
- complement.setViewStyle(vs);
- vs.setCharWidth(vs.getCharWidth() / 3);
- }
- else
- {
- int rw = vs.getCharWidth();
- vs.setCharWidth(rw * 3);
- complement.setViewStyle(vs);
- vs.setCharWidth(rw);
- }
- af.alignPanel.updateLayout();
+ ((SplitFrame) af.getSplitViewContainer())
+ .adjustLayout();
af.setMenusForViewport();
}
- origview.get(0).updateLayout();
- origview.get(0).setSelected(true);
- origview.get(0).alignFrame.setMenusForViewport();
+
+ ap.updateLayout();
+ ap.setSelected(true);
+ ap.alignFrame.setMenusForViewport();
}
}