import jalview.datamodel.SequenceI;
import jalview.gui.ImageExporter.ImageWriterI;
import jalview.gui.JalviewColourChooser.ColourChooserListener;
-import jalview.jbgui.GPCAPanel;
+import jalview.jbgui.GPaSiMapPanel;
import jalview.math.RotatableMatrix.Axis;
import jalview.util.ImageMaker;
import jalview.util.MessageManager;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import javax.swing.ButtonGroup;
import javax.swing.JMenuItem;
+import javax.swing.JProgressBar;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
/**
* The panel holding the Pairwise Similarity Map 3-D visualisation
*/
-public class PaSiMapPanel extends GPCAPanel
+public class PaSiMapPanel extends GPaSiMapPanel
implements Runnable, IProgressIndicator
{
private static final int MIN_WIDTH = 470;
private static final int MIN_HEIGHT = 250;
+ private final int GAP_OPEN_COST = 100;
+
+ private final int GAP_EXTEND_COST = 5;
+
private RotatableCanvas rc;
AlignmentPanel ap;
private IProgressIndicator progressBar;
+ private long progId;
+
private boolean working;
/**
public PaSiMapPanel(AlignmentPanel alignPanel, String modelName,
SimilarityParamsI params)
{
- super(3); // dim = 3
+ super(8); // dim = 8
this.av = alignPanel.av;
this.ap = alignPanel;
boolean nucleotide = av.getAlignment().isNucleotide();
- progressBar = new ProgressBar(statusPanel, statusBar);
+ //progressBar = new ProgressBar(statusPanel, statusBar);
addInternalFrameListener(new InternalFrameAdapter()
{
ScoreModelI scoreModel = ScoreModels.getInstance()
.getScoreModel(modelName, ap);
setPasimapModel(
- new PaSiMapModel(av, seqs, nucleotide, scoreModel, params));
+ new PaSiMapModel(av, seqs, nucleotide, scoreModel));
PaintRefresher.Register(this, av.getSequenceSetId());
setRotatableCanvas(new RotatableCanvas(alignPanel));
public void run()
{
working = true;
- long progId = System.currentTimeMillis();
- IProgressIndicator progress = this;
+ progId = System.currentTimeMillis();
+ progressBar = this;
String message = MessageManager.getString("label.pasimap_recalculating");
if (getParent() == null)
{
- progress = ap.alignFrame;
+ progressBar = ap.alignFrame;
message = MessageManager.getString("label.pasimap_calculating");
}
- progress.setProgressBar(message, progId);
+ progressBar.setProgressBar(message, progId);
try
{
- getPasimapModel().calculate();
+ //&! remove big seqs
+ for (SequenceI seq : av.getAlignment().getSequencesArray())
+ {
+ if (seq.getLength() > 20000)
+ {
+ //TODO add warning dialog
+ av.getAlignment().deleteSequence(seq);
+ }
+ }
+
+ PairwiseAlignPanel pap = new PairwiseAlignPanel(av, true, GAP_OPEN_COST, GAP_EXTEND_COST, false);
+System.out.println(pap != null);
+ setPairwiseAlignPanel(pap);
+ getPasimapModel().calculate(pap);
xCombobox.setSelectedIndex(0);
yCombobox.setSelectedIndex(1);
return;
} finally
{
- progress.setProgressBar("", progId);
+ progressBar.setProgressBar("", progId);
}
repaint();
* (non-Javadoc)
*
* @see
- * jalview.jbgui.GPCAPanel#outputPoints_actionPerformed(java.awt.event.ActionEvent
+ * jalview.jbgui.GPaSiMapPanel#outputPoints_actionPerformed(java.awt.event.ActionEvent
* )
*/
@Override
* (non-Javadoc)
*
* @see
- * jalview.jbgui.GPCAPanel#outputProjPoints_actionPerformed(java.awt.event
+ * jalview.jbgui.GPaSiMapPanel#outputProjPoints_actionPerformed(java.awt.event
* .ActionEvent)
*/
@Override
/*
* (non-Javadoc)
*
+ * @see
+ * jalview.jbgui.GPaSiMapPanel#outputAlignment_actionPerformed(java.awt.event
+ * .ActionEvent)
+ */
+ @Override
+ protected void outputAlignment_actionPerformed()
+ {
+ CutAndPasteTransfer cap = new CutAndPasteTransfer();
+ try
+ {
+ cap.setText(getPasimapModel().getAlignmentOutput());
+ Desktop.addInternalFrame(cap, MessageManager.formatMessage(
+ "label.pairwise_alignment_for_params", new String[] { this.getTitle() }), 500, 500);
+ } catch (OutOfMemoryError oom)
+ {
+ new OOMWarning("exporting pairwise alignments", oom);
+ cap.dispose();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see jalview.gui.IProgressIndicator#setProgressBar(java.lang.String, long)
*/
@Override
// validate();
}
+ /*
+ * make the progressBar determinate and update its progress
+ */
+ public void updateProgressBar(int lengthOfTask, int progress)
+ {
+ JProgressBar pBar = progressBar.getProgressBar(progId);
+ if (pBar.isIndeterminate())
+ {
+ pBar.setMaximum(lengthOfTask);
+ pBar.setValue(0);
+ pBar.setIndeterminate(false);
+ }
+ updateProgressBar(progress);
+ }
+ public void updateProgressBar(int progress)
+ {
+ JProgressBar pBar = progressBar.getProgressBar(progId);
+ pBar.setValue(progress);
+ pBar.repaint();
+ }
+
+ //&!
+ public void setPairwiseAlignPanel(PairwiseAlignPanel pap)
+ {
+ pap.addPropertyChangeListener(new PropertyChangeListener()
+ {
+ @Override
+ public void propertyChange(PropertyChangeEvent pcEvent)
+ {
+ if (PairwiseAlignPanel.PROGRESS.equals(pcEvent.getPropertyName()))
+ {
+ updateProgressBar((int) pcEvent.getNewValue());
+ } else if (PairwiseAlignPanel.TOTAL.equals(pcEvent.getPropertyName())) {
+ updateProgressBar((int) pcEvent.getNewValue(), 0);
+ }
+ }
+ });
+ }
+
@Override
public void registerHandler(final long id,
final IProgressIndicatorHandler handler)
getRotatableCanvas().ap = panel;
PaintRefresher.Register(PaSiMapPanel.this, panel.av.getSequenceSetId());
}
+
+ @Override
+ public JProgressBar getProgressBar(long id)
+ {
+ return progressBar.getProgressBar(id);
+ }
}