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;
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;
modifyConservation.setEnabled(!nucleotide
&& conservationMenuItem.isSelected());
showGroupConservation.setEnabled(!nucleotide);
+ qualityScoreModel.setEnabled(!nucleotide);
showComplementMenuItem.setText(nucleotide ? MessageManager
.getString("label.protein") : MessageManager
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<AlignCalcWorkerI> 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