X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=c45167c81f3e1749f2ffbe809895eaf874f774d7;hb=refs%2Fheads%2Ffeatures%2FJAL-728alternateQuality;hp=de1d0035c858341194379ada9e65208cd47c0a1e;hpb=a5ce354ec7cb56712e6ee00f5e0fea326bb4c9ec;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index de1d003..c45167c 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -26,6 +26,10 @@ import jalview.analysis.CrossRef; import jalview.analysis.Dna; import jalview.analysis.ParseProperties; import jalview.analysis.SequenceIdMatcher; +import jalview.analysis.scoremodels.ScoreMatrix; +import jalview.analysis.scoremodels.ScoreModels; +import jalview.api.AlignCalcManagerI; +import jalview.api.AlignCalcWorkerI; import jalview.api.AlignExportSettingI; import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewControllerI; @@ -89,6 +93,7 @@ import jalview.schemes.TCoffeeColourScheme; import jalview.util.MessageManager; import jalview.viewmodel.AlignmentViewport; import jalview.viewmodel.ViewportRanges; +import jalview.workers.ConservationThread; import jalview.ws.DBRefFetcher; import jalview.ws.DBRefFetcher.FetchFinishedListenerI; import jalview.ws.jws1.Discoverer; @@ -864,6 +869,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, modifyConservation.setEnabled(!nucleotide && conservationMenuItem.isSelected()); showGroupConservation.setEnabled(!nucleotide); + qualityScoreModel.setEnabled(!nucleotide); showComplementMenuItem.setText(nucleotide ? MessageManager .getString("label.protein") : MessageManager @@ -5639,6 +5645,76 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, ColourMenuHelper.setColourSelected(colourMenu, schemeName); } + + /** + * Repopulates the sub-menu with choice of score matrices each time the menu + * is selected, in case matrices have been added dynamically + */ + @Override + protected void scoreModel_menuSelected() + { + qualityScoreModel.removeAll(); + boolean nucleotide = getViewport().getAlignment().isNucleotide(); + final AlignCalcManagerI calcManager = getViewport().getCalcManager(); + + /* + * which model is currently selected? + */ + String modelName = null; + final List cons = calcManager + .getRegisteredWorkersOfClass(ConservationThread.class); + if (cons == null || cons.isEmpty()) + { + return; + } + for (AlignCalcWorkerI worker : cons) + { + modelName = ((ConservationThread) worker).getScoreModel().getName(); + } + + /* + * repopulate menu + */ + final ScoreModels scoreModels = ScoreModels.getInstance(); + for (final ScoreModelI sm : scoreModels.getModels()) + { + final String name = sm.getName(); + JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem(name); + + /* + * if the score model doesn't provide a description, try to look one + * up in the text bundle, falling back on its name + * TODO push this inside ScoreModels? + */ + String tooltip = sm.getDescription(); + if (tooltip == null) + { + tooltip = MessageManager.getStringOrReturn("label.score_model_", + name); + } + menuItem.setToolTipText(tooltip); + menuItem.setSelected(modelName.equals(name)); + if (sm.isProtein() && (sm instanceof ScoreMatrix)) + { + menuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + // set model on ConservationThread, restart thread + for (AlignCalcWorkerI worker : cons) + { + ((ConservationThread) worker) + .setScoreModel((ScoreMatrix) scoreModels + .forName(name)); + } + getViewport().alignmentChanged(alignPanel); + } + }); + qualityScoreModel.add(menuItem); + } + } + } } class PrintThread extends Thread