warning dialog - fixes JAL-1099
[jalview.git] / src / jalview / appletgui / FontChooser.java
index bdadc5d..2f38084 100755 (executable)
@@ -153,20 +153,54 @@ public class FontChooser extends Panel implements ActionListener,
     frame.setVisible(false);
   }
 
+  private Font lastSelected=null; 
+  private int lastSelStyle=0;
+  private int lastSelSize=0;
+  /**
+   * DOCUMENT ME!
+   */
   void changeFont()
   {
+    if (lastSelected==null)
+    {
+      // initialise with original font
+      lastSelected=oldFont;
+      lastSelSize=oldFont.getSize();
+      lastSelStyle=oldFont.getStyle();
+    }
+    
     Font newFont = new Font(fontName.getSelectedItem().toString(),
             fontStyle.getSelectedIndex(), Integer.parseInt(fontSize
                     .getSelectedItem().toString()));
-    if (ap != null)
-    {
-      ap.av.setFont(newFont);
-      ap.fontChanged();
+    FontMetrics fm = getGraphics().getFontMetrics(newFont);
+    double mw=fm.getStringBounds("M", getGraphics())
+            .getWidth(),iw=fm.getStringBounds("I", getGraphics())
+                    .getWidth();
+    if (mw<1 || iw < 1) {
+       // TODO: JAL-1100
+      fontName.select(lastSelected.getName());
+      fontStyle.select(lastSelStyle);
+      fontSize.select(""+lastSelSize);
+      JVDialog d = new JVDialog(this.frame, "Invalid Font", true, 350,200);
+      Panel mp=new Panel();
+      d.cancel.setVisible(false);
+      mp.setLayout(new FlowLayout());
+      mp.add(new Label("Font doesn't have letters defined\nso cannot be used\nwith alignment data."));
+      d.setMainPanel(mp);
+      d.setVisible(true);
+      return;
     }
-    else if (tp != null)
+    if (tp != null)
     {
       tp.setTreeFont(newFont);
     }
+    else if (ap != null)
+    {
+      ap.av.setFont(newFont);
+      ap.fontChanged();
+    }
+    // remember last selected
+    lastSelected=newFont;
   }
 
   protected void fontName_actionPerformed()