import jalview.bin.Cache;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
import jalview.util.MessageManager;
/**
private static final int MIN_TREE_SELECTION = 3;
private static final int MIN_PCA_SELECTION = 4;
+
+ private static final String SS_ANNOTATION_LABEL = "Secondary Structure";
+
+ private static final String SS_ANNOTATION_FROM_JPRED_LABEL = "jnetpred";
AlignFrame af;
JRadioButton averageDistance;
JComboBox<String> modelNames;
+
+ JComboBox<String> ssSourceDropdown;
JButton calculate;
pca.addActionListener(calcChanged);
neighbourJoining.addActionListener(calcChanged);
averageDistance.addActionListener(calcChanged);
+
+
+ //to do
+ ssSourceDropdown = buildSSSourcesOptionsList();
+ ssSourceDropdown.setVisible(false); // Initially hide the dropdown
/*
* score models drop-down - with added tooltips!
*/
modelNames = buildModelOptionsList();
+ // Step 3: Show or Hide Dropdown Based on Selection
+ modelNames.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String selectedModel = modelNames.getSelectedItem().toString();
+ if (selectedModel.equals("Secondary Structure Similarity")) {
+ ssSourceDropdown.setVisible(true);
+ } else {
+ ssSourceDropdown.setVisible(false);
+ }
+ }
+ });
JPanel scoreModelPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
scoreModelPanel.setOpaque(false);
scoreModelPanel.add(modelNames);
-
+ scoreModelPanel.add(ssSourceDropdown);
+
/*
* score model parameters
*/
paramsPanel.add(matchGaps);
paramsPanel.add(includeGappedColumns);
paramsPanel.add(shorterSequence);
-
+
/*
* OK / Cancel buttons
*/
}
this.add(actionPanel, BorderLayout.SOUTH);
- int width = 350;
+ int width = 365;
int height = includeParams ? 420 : 240;
setMinimumSize(new Dimension(325, height - 10));
return scoreModelsCombo;
}
+
+ private JComboBox<String> buildSSSourcesOptionsList()
+ {
+ final JComboBox<String> comboBox = new JComboBox<>();
+ Object curSel = comboBox.getSelectedItem();
+ DefaultComboBoxModel<String> sourcesModel = new DefaultComboBoxModel<>();
+
+ List<String> ssSources = getApplicableSecondaryStructureSources();
+
+ boolean selectedIsPresent = false;
+ for (String source : ssSources)
+ {
+ if (curSel != null && source.equals(curSel))
+ {
+ selectedIsPresent = true;
+ curSel = source;
+ }
+ sourcesModel.addElement(source);
+
+ }
+
+ if (selectedIsPresent)
+ {
+ sourcesModel.setSelectedItem(curSel);
+ }
+ comboBox.setModel(sourcesModel);
+
+ return comboBox;
+ }
+
+
private void updateScoreModels(JComboBox<String> comboBox,
List<String> toolTips)
{
return filtered;
}
+
+ protected List<String> getApplicableSecondaryStructureSources()
+ {
+ List<String> ssSources = new ArrayList<>();
+
+ AlignmentAnnotation[] annotations = af.getViewport().getAlignment().getAlignmentAnnotation();
+ boolean has3DStructure = false, hasJPred = false;
+ if(annotations.length > 0) {
+
+ for (AlignmentAnnotation annotation : annotations) {
+ has3DStructure |= SS_ANNOTATION_LABEL.equals(annotation.label);
+ hasJPred |= SS_ANNOTATION_FROM_JPRED_LABEL.equals(annotation.label);
+
+ if (has3DStructure && hasJPred)
+ break;
+ }
+ }
+ if(has3DStructure)
+ ssSources.add("3D Structures");
+ if(hasJPred)
+ ssSources.add("JPred");
+
+ return ssSources;
+ }
+
/**
* Open and calculate the selected tree or PCA on 'OK'
*/
{
boolean doPCA = pca.isSelected();
String modelName = modelNames.getSelectedItem().toString();
- SimilarityParamsI params = getSimilarityParameters(doPCA);
-
+ String ssSource = ssSourceDropdown.getSelectedItem().toString();
+ SimilarityParams params = getSimilarityParameters(doPCA);
+ if(ssSource.length()>0)
+ params.setSecondaryStructureSource(ssSource);
if (doPCA)
{
openPcaPanel(modelName, params);
* @param doPCA
* @return
*/
- protected SimilarityParamsI getSimilarityParameters(boolean doPCA)
+ protected SimilarityParams getSimilarityParameters(boolean doPCA)
{
// commented out: parameter choices read from gui widgets
// SimilarityParamsI params = new SimilarityParams(