Merge branch 'develop' into spike/JAL-4047/JAL-4048_columns_in_sequenceID
[jalview.git] / src / jalview / gui / FontChooser.java
index 20a6289..f532706 100755 (executable)
  */
 package jalview.gui;
 
-import jalview.bin.Cache;
-import jalview.jbgui.GFontChooser;
-import jalview.util.MessageManager;
-
 import java.awt.Font;
 import java.awt.FontMetrics;
 import java.awt.geom.Rectangle2D;
@@ -31,6 +27,10 @@ import java.awt.geom.Rectangle2D;
 import javax.swing.JInternalFrame;
 import javax.swing.JLayeredPane;
 
+import jalview.bin.Cache;
+import jalview.jbgui.GFontChooser;
+import jalview.util.MessageManager;
+
 /**
  * DOCUMENT ME!
  * 
@@ -87,7 +87,7 @@ public class FontChooser extends GFontChooser
   public FontChooser(TreePanel treePanel)
   {
     this.tp = treePanel;
-    ap = treePanel.treeCanvas.ap;
+    ap = treePanel.getTreeCanvas().getAssociatedPanel();
     oldFont = treePanel.getTreeFont();
     defaultButton.setVisible(false);
     smoothFont.setEnabled(false);
@@ -112,6 +112,7 @@ public class FontChooser extends GFontChooser
   void init()
   {
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
 
     smoothFont.setSelected(ap.av.antiAlias);
@@ -126,14 +127,15 @@ public class FontChooser extends GFontChooser
     {
       oldComplementFont = ((AlignViewport) ap.av.getCodingComplement())
               .getFont();
-      oldComplementSmooth = ((AlignViewport) ap.av.getCodingComplement()).antiAlias;
+      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"),
@@ -170,9 +172,9 @@ public class FontChooser extends GFontChooser
     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;
   }
@@ -182,10 +184,11 @@ public class FontChooser extends GFontChooser
   {
     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;
+      ((AlignViewport) ap.av
+              .getCodingComplement()).antiAlias = ap.av.antiAlias;
       SplitFrame sv = (SplitFrame) ap.alignFrame.getSplitViewContainer();
       sv.adjustLayout();
       sv.repaint();
@@ -227,19 +230,24 @@ public class FontChooser extends GFontChooser
   @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.av.antiAlias = oldSmoothFont;
-      ap.paintAlignment(true);
+      ap.fontChanged();
 
       if (scaleAsCdna.isVisible() && scaleAsCdna.isEnabled())
       {
         ap.av.getCodingComplement().setScaleProteinAsCdna(oldProteinScale);
         ap.av.getCodingComplement().setProteinFontAsCdna(oldMirrorFont);
-        ((AlignViewport) ap.av.getCodingComplement()).antiAlias = oldComplementSmooth;
+        ((AlignViewport) ap.av
+                .getCodingComplement()).antiAlias = oldComplementSmooth;
         ap.av.getCodingComplement().setFont(oldComplementFont, true);
         SplitFrame splitFrame = (SplitFrame) ap.alignFrame
                 .getSplitViewContainer();
@@ -247,10 +255,6 @@ public class FontChooser extends GFontChooser
         splitFrame.repaint();
       }
     }
-    else if (tp != null)
-    {
-      tp.setTreeFont(oldFont);
-    }
 
     try
     {
@@ -260,6 +264,11 @@ public class FontChooser extends GFontChooser
     }
   }
 
+  private boolean isTreeFont()
+  {
+    return tp != null;
+  }
+
   /**
    * DOCUMENT ME!
    */
@@ -284,8 +293,9 @@ public class FontChooser extends GFontChooser
     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"),
@@ -298,8 +308,8 @@ public class FontChooser extends GFontChooser
       {
         fontSize.setSelectedItem(lastSelected.getSize());
       }
-      if (!lastSelected.getName().equals(
-              fontName.getSelectedItem().toString()))
+      if (!lastSelected.getName()
+              .equals(fontName.getSelectedItem().toString()))
       {
         fontName.setSelectedItem(lastSelected.getName());
       }
@@ -313,7 +323,7 @@ public class FontChooser extends GFontChooser
       }
       return;
     }
-    if (tp != null)
+    if (isTreeFont())
     {
       tp.setTreeFont(newFont);
     }
@@ -416,8 +426,8 @@ public class FontChooser extends GFontChooser
   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();