X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;fp=src%2Fjalview%2Fgui%2FAlignFrame.java;h=44d1d94657efde0f8211387c7a3da2f685e5c8d6;hb=99d5f1d805e530f23a53dad4484d44ecd0fbfdf3;hp=cb769bb0176afda5d1da366a34069b3e0ce892a3;hpb=e6134bccddc2c7faad28fad1a4e77ccd0ceb3d84;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index cb769bb..44d1d94 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -119,6 +119,8 @@ import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyAdapter; @@ -129,6 +131,7 @@ import java.awt.print.PageFormat; import java.awt.print.PrinterJob; import java.beans.PropertyChangeEvent; import java.io.File; +import java.lang.reflect.Method; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; @@ -466,6 +469,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { formatMenu.add(vsel); } + addFocusListener(new FocusAdapter() + { + @Override + public void focusGained(FocusEvent e) + { + Desktop.setCurrentAlignFrame(AlignFrame.this); + } + }); } @@ -911,10 +922,21 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .setSelected(av.getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour); showProducts.setEnabled(canShowProducts()); + setGroovyEnabled(Desktop.getGroovyConsole() != null); updateEditMenuBar(); } + /** + * Set the enabled state of the 'Run Groovy' option in the Calculate menu + * + * @param b + */ + public void setGroovyEnabled(boolean b) + { + runGroovy.setEnabled(b); + } + private IProgressIndicator progressBar; /* @@ -3619,8 +3641,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void mousePressed(MouseEvent evt) { - if (evt.isControlDown() - || SwingUtilities.isRightMouseButton(evt)) + if (evt.isPopupTrigger()) { radioItem.removeActionListener(radioItem.getActionListeners()[0]); @@ -4124,7 +4145,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { JMenuItem tm = new JMenuItem(); ScoreModelI sm = ResidueProperties.scoreMatrices.get(pwtype); - if (sm.isProtein() == !viewport.getAlignment().isNucleotide()) + if (sm.isDNA() == viewport.getAlignment().isNucleotide() + || sm.isProtein() == !viewport.getAlignment() + .isNucleotide()) { String smn = MessageManager.getStringOrReturn( "label.score_model_", sm.getName()); @@ -5371,7 +5394,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void tabbedPane_mousePressed(MouseEvent e) { - if (SwingUtilities.isRightMouseButton(e)) + if (e.isPopupTrigger()) { String msg = MessageManager.getString("label.enter_view_name"); String reply = JOptionPane.showInternalInputDialog(this, msg, msg, @@ -6088,6 +6111,45 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return; } } + + /** + * Try to run a script in the Groovy console, having first ensured that this + * AlignFrame is set as currentAlignFrame in Desktop, to allow the script to + * be targeted at this alignment. + */ + @Override + protected void runGroovy_actionPerformed() + { + Desktop.setCurrentAlignFrame(this); + Object console = Desktop.instance.getGroovyConsole(); + if (console != null) + { + /* + * use reflection here to avoid compile-time dependency + * on Groovy libraries + */ + try + { + Class gcClass = getClass().getClassLoader().loadClass( + "groovy.ui.Console"); + Method runScript = gcClass.getMethod("runScript"); + runScript.invoke(console); + } catch (Exception ex) + { + System.err.println((ex.toString())); + JOptionPane + .showInternalMessageDialog(Desktop.desktop, MessageManager + .getString("label.couldnt_run_groovy_script"), + MessageManager + .getString("label.groovy_support_failed"), + JOptionPane.ERROR_MESSAGE); + } + } + else + { + System.err.println("Can't run Groovy script as console not found"); + } + } } class PrintThread extends Thread