Implemented ProgressBar for PaSiMap
[jalview.git] / src / jalview / gui / FontChooser.java
index 6cddcca..853d4aa 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!
  * 
@@ -43,6 +43,8 @@ public class FontChooser extends GFontChooser
 
   TreePanel tp;
 
+  CutAndPasteTransfer cap;
+
   /*
    * The font on opening the dialog (to be restored on Cancel)
    */
@@ -87,7 +89,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);
@@ -109,32 +111,47 @@ public class FontChooser extends GFontChooser
     init();
   }
 
+  /**
+   * Creates a new FontChooser for a CutAndPasteTransfer
+   * @param cap
+  */
+  public FontChooser(CutAndPasteTransfer cap)
+  {
+    oldFont = new Font("Monospaced", Font.PLAIN, 12);
+    this.cap = cap;
+    init();
+  }
+
   void init()
   {
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
 
-    smoothFont.setSelected(ap.av.antiAlias);
-
-    /*
-     * Enable 'scale protein as cDNA' in a SplitFrame view. The selection is
-     * stored in the ViewStyle of both dna and protein Viewport. Also enable
-     * checkbox for copy font changes to other half of split frame.
-     */
-    boolean inSplitFrame = ap.av.getCodingComplement() != null;
-    if (inSplitFrame)
+    if (!isCapFont())
     {
-      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());
+      smoothFont.setSelected(ap.av.antiAlias);
+  
+      /*
+       * Enable 'scale protein as cDNA' in a SplitFrame view. The selection is
+       * stored in the ViewStyle of both dna and protein Viewport. Also enable
+       * checkbox for copy font changes to other half of split frame.
+       */
+      boolean inSplitFrame = ap.av.getCodingComplement() != null;
+      if (inSplitFrame)
+      {
+        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"),
@@ -183,7 +200,7 @@ 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
@@ -229,13 +246,17 @@ 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())
       {
@@ -250,10 +271,6 @@ public class FontChooser extends GFontChooser
         splitFrame.repaint();
       }
     }
-    else if (tp != null)
-    {
-      tp.setTreeFont(oldFont);
-    }
 
     try
     {
@@ -263,6 +280,15 @@ public class FontChooser extends GFontChooser
     }
   }
 
+  private boolean isTreeFont()
+  {
+    return tp != null;
+  }
+
+  private boolean isCapFont()
+  {
+    return cap != null;
+  }
   /**
    * DOCUMENT ME!
    */
@@ -317,7 +343,7 @@ public class FontChooser extends GFontChooser
       }
       return;
     }
-    if (tp != null)
+    if (isTreeFont())
     {
       tp.setTreeFont(newFont);
     }
@@ -344,6 +370,10 @@ public class FontChooser extends GFontChooser
         splitFrame.repaint();
       }
     }
+    else if (isCapFont())
+    {
+      cap.setFont(newFont);
+    }
 
     monospaced.setSelected(mw == iw);