private static final int MIN_PCA_SELECTION = 4;
+ private static final int MIN_PASIMAP_SELECTION = 4; //&! <++>!! chekc how many
+
AlignFrame af;
JRadioButton pca;
+ JRadioButton pasimap; //&! initialize JRadioButton object for pasimap
+
JRadioButton neighbourJoining;
JRadioButton averageDistance;
*/
private PCAPanel pcaPanel;
+ //&! change to PaSiMapPanel
+ private PCAPanel pasimapPanel;
+
/**
* Constructor
*
MessageManager.getString("label.principal_component_analysis"));
pca.setOpaque(false);
+ pasimap = new JRadioButton( // create the JRadioButton for pasimap with label.pasimap as its text
+ MessageManager.getString("label.pasimap"));
+ pasimap.setOpaque(false);
+
neighbourJoining = new JRadioButton(
MessageManager.getString("label.tree_calc_nj"));
neighbourJoining.setSelected(true);
pcaBorderless.add(pca, FlowLayout.LEFT);
calcChoicePanel.add(pcaBorderless, FlowLayout.LEFT);
+ //&! create pasimap panel
+ JPanel pasimapBorderless = new JPanel(new FlowLayout(FlowLayout.LEFT)); // create new JPanel (button) for pasimap
+ pasimapBorderless.setBorder(
+ BorderFactory.createEmptyBorder(2, b.left, 2, b.right)); // set border (margin) for button (same as treePanel and pca)
+ pasimapBorderless.setOpaque(false); // false -> stops every pixel inside border from being painted
+ pasimapBorderless.add(pasimap, FlowLayout.LEFT); // add pasimap button to the JPanel
+ calcChoicePanel.add(pasimapBorderless, FlowLayout.LEFT); // add button with border and everything to the overall ChoicePanel
+
treePanel.add(neighbourJoining);
treePanel.add(averageDistance);
ButtonGroup calcTypes = new ButtonGroup();
calcTypes.add(pca);
+ calcTypes.add(pasimap); //&! add pasimap to the calculation types
calcTypes.add(neighbourJoining);
calcTypes.add(averageDistance);
}
};
pca.addActionListener(calcChanged);
+ pasimap.addActionListener(calcChanged); // add the calcChanged ActionListener to pasimap --> <++> idk
neighbourJoining.addActionListener(calcChanged);
averageDistance.addActionListener(calcChanged);
* return value of true means enabled and selected
*/
boolean checkPca = checkEnabled(pca, size, MIN_PCA_SELECTION);
+ boolean checkPasimap = checkEnabled(pasimap, size, MIN_PASIMAP_SELECTION); // check if pasimap is enabled and min_size is fulfilled
boolean checkNeighbourJoining = checkEnabled(neighbourJoining, size,
MIN_TREE_SELECTION);
boolean checkAverageDistance = checkEnabled(averageDistance, size,
MIN_TREE_SELECTION);
- if (checkPca || checkNeighbourJoining || checkAverageDistance)
+ if (checkPca || checkPasimap || checkNeighbourJoining || checkAverageDistance)
{
calculate.setToolTipText(null);
calculate.setEnabled(true);
protected void calculate_actionPerformed()
{
boolean doPCA = pca.isSelected();
+ boolean doPaSiMap = pasimap.isSelected();
String modelName = modelNames.getSelectedItem().toString();
SimilarityParamsI params = getSimilarityParameters(doPCA);
- if (doPCA)
+ if (doPCA && !doPaSiMap)
{
openPcaPanel(modelName, params);
}
+ else if (doPaSiMap && !doPCA)
+ {
+ openPasimapPanel(modelName, params);
+ }
else
{
openTreePanel(modelName, params);
}
- // closeFrame();
+ closeFrame();
}
/**
}
/**
+ * Open a new PaSiMap panel on the desktop
+ *
+ * @param modelName
+ * @param params
+ */
+ protected void openPasimapPanel(String modelName, SimilarityParamsI params)
+ {
+ AlignViewport viewport = af.getViewport();
+
+ /*
+ * gui validation shouldn't allow insufficient sequences here, but leave
+ * this check in in case this method gets exposed programmatically in future
+ */
+ if (((viewport.getSelectionGroup() != null)
+ && (viewport.getSelectionGroup().getSize() < MIN_PASIMAP_SELECTION)
+ && (viewport.getSelectionGroup().getSize() > 0))
+ || (viewport.getAlignment().getHeight() < MIN_PASIMAP_SELECTION))
+ {
+ JvOptionPane.showInternalMessageDialog(this,
+ MessageManager.formatMessage(
+ "label.you_need_at_least_n_sequences",
+ MIN_PASIMAP_SELECTION),
+ MessageManager
+ .getString("label.sequence_selection_insufficient"),
+ JvOptionPane.WARNING_MESSAGE);
+ return;
+ }
+
+ /*
+ * construct the panel and kick off its calculation thread
+ */
+ //&! change to PaSiMapPanel
+ pasimapPanel = new PCAPanel(af.alignPanel, modelName, params);
+ new Thread(pasimapPanel).start();
+
+ }
+
+ /**
*
*/
protected void closeFrame()