private boolean lastSelMono = false;
+ private boolean oldSmoothFont;
+
+ private boolean oldComplementSmooth;
+
/**
* Creates a new FontChooser for a tree panel
*
public FontChooser(TreePanel treePanel)
{
this.tp = treePanel;
- ap = treePanel.treeCanvas.ap;
+ ap = treePanel.getTreeCanvas().getAssociatedPanel();
oldFont = treePanel.getTreeFont();
defaultButton.setVisible(false);
smoothFont.setEnabled(false);
oldFont = alignPanel.av.getFont();
oldProteinScale = alignPanel.av.isScaleProteinAsCdna();
oldMirrorFont = alignPanel.av.isProteinFontAsCdna();
-
+ oldSmoothFont = alignPanel.av.antiAlias;
this.ap = alignPanel;
init();
}
{
oldComplementFont = ((AlignViewport) ap.av.getCodingComplement())
.getFont();
+ oldComplementSmooth = ((AlignViewport) ap.av
+ .getCodingComplement()).antiAlias;
scaleAsCdna.setVisible(true);
scaleAsCdna.setSelected(ap.av.isScaleProteinAsCdna());
fontAsCdna.setVisible(true);
fontAsCdna.setSelected(ap.av.isProteinFontAsCdna());
}
- if (tp != null)
+ if (isTreeFont())
{
Desktop.addInternalFrame(frame,
MessageManager.getString("action.change_font_tree_panel"),
fontStyle.setSelectedIndex(oldFont.getStyle());
FontMetrics fm = getGraphics().getFontMetrics(oldFont);
- monospaced.setSelected(fm.getStringBounds("M", getGraphics())
- .getWidth() == fm.getStringBounds("|", getGraphics())
- .getWidth());
+ monospaced.setSelected(
+ fm.getStringBounds("M", getGraphics()).getWidth() == fm
+ .getStringBounds("|", getGraphics()).getWidth());
init = false;
}
{
ap.av.antiAlias = smoothFont.isSelected();
ap.getAnnotationPanel().image = null;
- ap.paintAlignment(true);
+ ap.paintAlignment(true, false);
+ if (ap.av.getCodingComplement() != null && ap.av.isProteinFontAsCdna())
+ {
+ ((AlignViewport) ap.av
+ .getCodingComplement()).antiAlias = ap.av.antiAlias;
+ SplitFrame sv = (SplitFrame) ap.alignFrame.getSplitViewContainer();
+ sv.adjustLayout();
+ sv.repaint();
+ }
+
}
/**
@Override
protected void cancel_actionPerformed()
{
- if (ap != null)
+ if (isTreeFont())
+ {
+ tp.setTreeFont(oldFont);
+ }
+ else if (ap != null)
{
ap.av.setFont(oldFont, true);
ap.av.setScaleProteinAsCdna(oldProteinScale);
ap.av.setProteinFontAsCdna(oldMirrorFont);
- ap.paintAlignment(true);
+ ap.av.antiAlias = oldSmoothFont;
+ ap.fontChanged();
if (scaleAsCdna.isVisible() && scaleAsCdna.isEnabled())
{
ap.av.getCodingComplement().setScaleProteinAsCdna(oldProteinScale);
ap.av.getCodingComplement().setProteinFontAsCdna(oldMirrorFont);
+ ((AlignViewport) ap.av
+ .getCodingComplement()).antiAlias = oldComplementSmooth;
ap.av.getCodingComplement().setFont(oldComplementFont, true);
SplitFrame splitFrame = (SplitFrame) ap.alignFrame
.getSplitViewContainer();
splitFrame.repaint();
}
}
- else if (tp != null)
- {
- tp.setTreeFont(oldFont);
- }
try
{
}
}
+ private boolean isTreeFont()
+ {
+ return tp != null;
+ }
+
/**
* DOCUMENT ME!
*/
double iw = iBounds.getWidth();
if (mw < 1 || iw < 1)
{
- String message = iBounds.getHeight() < 1 ? MessageManager
- .getString("label.font_doesnt_have_letters_defined")
+ String message = iBounds.getHeight() < 1
+ ? MessageManager
+ .getString("label.font_doesnt_have_letters_defined")
: MessageManager.getString("label.font_too_small");
JvOptionPane.showInternalMessageDialog(this, message,
MessageManager.getString("label.invalid_font"),
{
fontSize.setSelectedItem(lastSelected.getSize());
}
- if (!lastSelected.getName().equals(
- fontName.getSelectedItem().toString()))
+ if (!lastSelected.getName()
+ .equals(fontName.getSelectedItem().toString()))
{
fontName.setSelectedItem(lastSelected.getName());
}
}
return;
}
- if (tp != null)
+ if (isTreeFont())
{
tp.setTreeFont(newFont);
}
ap.fontChanged();
/*
- * adjust other half of split frame if any, if either same
- * font, or proportionate scaling, is selected
+ * adjust other half of split frame if present, whether or not same font or
+ * scale to cDNA is selected, because a font change may affect character
+ * width, and this is kept the same in both panels
*/
- if (fontAsCdna.isEnabled())
+ if (fontAsCdna.isVisible())
{
if (fontAsCdna.isSelected())
{
- /*
- * copy the font
- */
ap.av.getCodingComplement().setFont(newFont, true);
}
- /*
- * adjust layout for font change / reset / sizing
- */
SplitFrame splitFrame = (SplitFrame) ap.alignFrame
.getSplitViewContainer();
splitFrame.adjustLayout();
protected void scaleAsCdna_actionPerformed()
{
ap.av.setScaleProteinAsCdna(scaleAsCdna.isSelected());
- ap.av.getCodingComplement().setScaleProteinAsCdna(
- scaleAsCdna.isSelected());
+ ap.av.getCodingComplement()
+ .setScaleProteinAsCdna(scaleAsCdna.isSelected());
final SplitFrame splitFrame = (SplitFrame) ap.alignFrame
.getSplitViewContainer();
splitFrame.adjustLayout();