X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=3209960d6f183e9a9901884df259378a40a9f61a;hb=e21fb8306a9efaf170d7354daa10e7ee42d37c17;hp=62d95ead3c7f3608c47058957b810592ebf78dd1;hpb=b90206d60dbcb530a3eeeb00b4802ba0a6d8bad2;p=jalview.git
diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java
index 62d95ea..3209960 100755
--- a/src/jalview/gui/SeqPanel.java
+++ b/src/jalview/gui/SeqPanel.java
@@ -18,8 +18,6 @@
*/
package jalview.gui;
-import jalview.analysis.*;
-
import jalview.datamodel.*;
import jalview.schemes.*;
@@ -91,21 +89,31 @@ public class SeqPanel extends JPanel
ap = p;
+
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseMoved(MouseEvent evt)
{
doMouseMoved(evt);
+ if (editingSeqs)
+ {
+ // This is because MacOSX creates a mouseMoved
+ // If control is down
+ if(!av.isDataset())
+ doMouseDragged(evt);
+ }
}
public void mouseDragged(MouseEvent evt)
{
if (editingSeqs)
{
+ if(!av.isDataset())
doMouseDragged(evt);
}
else
{
+ if(!av.isDataset())
doMouseDraggedDefineMode(evt);
}
}
@@ -120,7 +128,7 @@ public class SeqPanel extends JPanel
{
Font font = av.getFont();
int fontSize = font.getSize();
- if (e.getWheelRotation() > 0 && fontSize < 30)
+ if (e.getWheelRotation() > 0 && fontSize < 51)
fontSize++;
else if (fontSize > 1)
fontSize--;
@@ -140,67 +148,71 @@ public class SeqPanel extends JPanel
});
- addMouseListener(new MouseAdapter()
- {
- public void mouseReleased(MouseEvent evt)
- {
- mouseWheelPressed = false;
-
- if (editingSeqs)
- {
- doMouseReleased(evt);
- }
- else
- {
- doMouseReleasedDefineMode(evt);
- }
- }
-
- public void mousePressed(MouseEvent evt)
- {
- if( javax.swing.SwingUtilities.isMiddleMouseButton(evt))
- {
- mouseWheelPressed = true;
- return;
- }
+ if(!av.isDataset())
+ {
+ addMouseListener(new MouseAdapter()
+ {
+ public void mouseReleased(MouseEvent evt)
+ {
+ mouseWheelPressed = false;
- if (evt.isShiftDown() || evt.isAltDown() ||
- evt.isControlDown())
- {
- if (evt.isAltDown() || evt.isControlDown())
- {
- groupEditing = true;
- }
+ if (editingSeqs)
+ {
+ doMouseReleased(evt);
+ }
+ else
+ {
+ doMouseReleasedDefineMode(evt);
+ }
+ }
- editingSeqs = true;
- doMousePressed(evt);
- }
- else
- {
- doMousePressedDefineMode(evt);
- }
- }
+ public void mousePressed(MouseEvent evt)
+ {
+ if (javax.swing.SwingUtilities.isMiddleMouseButton(evt))
+ {
+ mouseWheelPressed = true;
+ return;
+ }
+
+ if (evt.isShiftDown() || evt.isAltDown() ||
+ evt.isControlDown())
+ {
+ if (evt.isAltDown() || evt.isControlDown())
+ {
+ groupEditing = true;
+
+ }
+
+ editingSeqs = true;
+ doMousePressed(evt);
+ }
+ else
+ {
+ doMousePressedDefineMode(evt);
+ }
+ }
- public void mouseExited(MouseEvent evt)
- {
- if (editingSeqs)
- {
- return;
- }
+ public void mouseExited(MouseEvent evt)
+ {
+ if (editingSeqs)
+ {
+ return;
+ }
- doMouseExitedDefineMode(evt);
- }
+ doMouseExitedDefineMode(evt);
+ }
- public void mouseEntered(MouseEvent evt)
- {
- if (editingSeqs)
- {
- return;
- }
+ public void mouseEntered(MouseEvent evt)
+ {
+ if (editingSeqs)
+ {
+ return;
+ }
- doMouseEnteredDefineMode(evt);
- }
- });
+ doMouseEnteredDefineMode(evt);
+ }
+ });
+ }
}
int startWrapBlock=-1;
@@ -212,16 +224,26 @@ public class SeqPanel extends JPanel
if (av.wrapAlignment)
{
+
+ int hgap = av.charHeight;
+ if (av.scaleAboveWrapped)
+ hgap += av.charHeight;
+
+ int cHeight = av.getAlignment().getHeight() * av.charHeight
+ + hgap + seqCanvas.getAnnotationHeight();
+
int y = evt.getY();
- y -= (2 * av.charHeight);
+ y -= hgap;
x -= seqCanvas.LABEL_WEST;
- int chunkHeight = (av.getAlignment().getHeight() + 2) * av.charHeight;
+
int cwidth = seqCanvas.getWrappedCanvasWidth(this.getWidth());
- wrappedBlock = y/chunkHeight;
- wrappedBlock += av.getStartRes()/cwidth;
- res = wrappedBlock*cwidth + x / av.getCharWidth();
+ wrappedBlock = y / cHeight;
+ wrappedBlock += av.getStartRes() / cwidth;
+
+ res = wrappedBlock * cwidth + x / av.getCharWidth();
+
}
else
{
@@ -234,14 +256,22 @@ public class SeqPanel extends JPanel
int findSeq(MouseEvent evt)
{
+
int seq = 0;
int y = evt.getY();
if (av.wrapAlignment)
{
- y -= (2 * av.charHeight);
- int chunkHeight = (av.getAlignment().getHeight() + 2) * av.charHeight;
- seq = ( (y % chunkHeight) / av.getCharHeight());
+ int hgap = av.charHeight;
+ if (av.scaleAboveWrapped)
+ hgap += av.charHeight;
+
+ int cHeight = av.getAlignment().getHeight() * av.charHeight
+ + hgap + seqCanvas.getAnnotationHeight();
+
+ y -= hgap;
+
+ seq = ( (y % cHeight) / av.getCharHeight());
}
else
{
@@ -324,25 +354,41 @@ public class SeqPanel extends JPanel
if (res > sequence.getLength())
{
- return;
- }
+ return;
+ }
- Object obj = ResidueProperties.aa2Triplet.get(sequence.getCharAt(res) +
- "");
- String aa = "";
+ if(seqCanvas.pdbCanvas!=null && sequence==seqCanvas.pdbCanvas.sequence)
+ {
+ seqCanvas.pdbCanvas.highlightRes(sequence.findPosition(res));
+ }
- if (obj != null)
- {
- aa = obj.toString();
- }
StringBuffer text = new StringBuffer("Sequence " + (seq + 1) + " ID: " +
sequence.getName());
- if (aa != "")
+ Object obj = null;
+ if (av.alignment.isNucleotide())
{
- text.append(" Residue: " + aa + " (" +
- av.getAlignment().getSequenceAt(seq).findPosition(res) + ")");
+ obj = ResidueProperties.nucleotideName.get(sequence.getCharAt(res) +
+ "");
+ if(obj!=null)
+ text.append(" Nucleotide: ");
+ }
+ else
+ {
+ obj = ResidueProperties.aa2Triplet.get(sequence.getCharAt(res) + "");
+ if(obj!=null)
+ text.append(" Residue: ");
+ }
+
+ if (obj != null)
+ {
+
+ if (obj != "")
+ {
+ text.append( obj + " (" +
+ av.getAlignment().getSequenceAt(seq).findPosition(res) + ")");
+ }
}
ap.alignFrame.statusBar.setText(text.toString());
@@ -350,32 +396,54 @@ public class SeqPanel extends JPanel
// use aa to see if the mouse pointer is on a
if (av.showSequenceFeatures)
{
- Vector features = sequence.getSequenceFeatures();
- Enumeration e = features.elements();
- StringBuffer sbuffer = new StringBuffer();
-
- while (e.hasMoreElements())
+ Vector features = sequence.getDatasetSequence().getSequenceFeatures();
+ if(features!=null)
{
- SequenceFeature sf = (SequenceFeature) e.nextElement();
+ StringBuffer sbuffer = new StringBuffer("");
- if ((sf.getStart() <= sequence.findPosition(res)) &&
- (sf.getEnd() >= sequence.findPosition(res)))
+ for (int i = 0; i < features.size(); i++)
+ {
+ SequenceFeature sf = (SequenceFeature) features.elementAt(i);
+
+ if ( (sf.getBegin() <= sequence.findPosition(res)) &&
+ (sf.getEnd() >= sequence.findPosition(res)))
{
- if (sbuffer.length() > 0)
+ if (sf.getType().equals("disulfide bond"))
+ {
+ if (sf.getBegin() == sequence.findPosition(res)
+ || sf.getEnd() == sequence.findPosition(res))
{
- sbuffer.append("; ");
+ if (sbuffer.length() > 6)
+ sbuffer.append("
");
+ sbuffer.append("disulfide bond " + sf.getBegin() + ":" +
+ sf.getEnd());
}
+ }
+ else
+ {
+ if (sbuffer.length() > 6)
+ sbuffer.append("
");
+ sbuffer.append(sf.getType());
+ if (sf.getDescription() != null)
+ sbuffer.append(" " + sf.getDescription());
- sbuffer.append(sf.getType() + " " + sf.getDescription());
-
- if (sf.getStatus().length() > 0)
+ if (sf.getStatus() != null)
{
- sbuffer.append(" (" + sf.getStatus() + ")");
+ sbuffer.append(" (" + sf.getStatus() + ")");
}
+ }
}
- }
- this.setToolTipText(sbuffer.toString());
+ }
+
+ sbuffer.append("");
+ if(sbuffer.length()==13) //
+ setToolTipText("");
+ else
+ setToolTipText(sbuffer.toString());
+ }
+ else
+ setToolTipText("");
}
}
@@ -585,98 +653,8 @@ public class SeqPanel extends JPanel
ap.alignFrame.updateEditMenuBar();
}
- av.updateConservation();
- av.updateConsensus();
-
- //Does the edit affect any groups?
- //////////////////////////////
- Vector groupsToUpdate = new Vector();
- SequenceGroup sg = av.getSelectionGroup();
-
- int s, g, gSize = av.alignment.getGroups().size();
- if (sg != null)
- {
- groupsToUpdate.addElement(av.getSelectionGroup());
- int sSize = sg.getSize();
- for (s = 0; s < sSize; s++)
- {
- SequenceI seq = sg.getSequenceAt(s);
-
- for (g = 0; g < gSize; g++)
- {
- SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups().
- elementAt(
- g);
- if (sg2.sequences.contains(seq))
- {
- if (!groupsToUpdate.contains(sg2))
- groupsToUpdate.addElement(sg2);
- continue;
- }
- }
- }
- }
- else
- {
- SequenceI seq = av.alignment.getSequenceAt(startseq);
- for (g = 0; g < gSize; g++)
- {
- SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups().elementAt(
- g);
- if (sg2.sequences.contains(seq))
- {
- if (!groupsToUpdate.contains(sg2))
- groupsToUpdate.addElement(sg2);
- continue;
- }
- }
- }
-
- gSize = groupsToUpdate.size();
- for (g = 0; g < gSize; g++)
- {
- ( (SequenceGroup) groupsToUpdate.elementAt(g)).recalcConservation();
- }
- ////End of updating groups
- //////////////////////////////////////////
-
- // Y O Y CLUSTALX
- ColourSchemeI cs = av.getGlobalColourScheme();
- if(cs!=null)
- {
- if (cs.conservationApplied())
- {
- Conservation c = new Conservation("All",
- ResidueProperties.propHash, 3,
- av.alignment.getSequences(),
- 0, av.alignment.getWidth() - 1);
- c.calculate();
- c.verdict(false, av.ConsPercGaps);
-
- if (cs instanceof ClustalxColourScheme)
- {
- ((ClustalxColourScheme)cs).
- resetClustalX(av.alignment.getSequences(),
- av.alignment.getWidth());
+ av.firePropertyChange("alignment", null,av.getAlignment().getSequences());
- cs.setConservation(c);
- av.setGlobalColourScheme(cs);
- }
- else
- {
- cs.setConservation(c);
- av.setGlobalColourScheme(cs);
- }
-
- }
-
- if (cs instanceof ClustalxColourScheme)
- {
- ( (ClustalxColourScheme) cs).resetClustalX(av.alignment.getSequences(),
- av.alignment.getWidth());
- av.setGlobalColourScheme(cs);
- }
- }
}
/**
@@ -692,8 +670,18 @@ public class SeqPanel extends JPanel
startWrapBlock=wrappedBlock;
- if(seq<0 || res<0)
+ if(av.wrapAlignment && seq>av.alignment.getHeight())
+ {
+ JOptionPane.showInternalMessageDialog(Desktop.desktop,
+ "Cannot edit annotations in wrapped view.",
+ "Wrapped view - no edit",
+ JOptionPane.WARNING_MESSAGE);
return;
+ }
+
+ if(seq<0 || res<0)
+ return;
+
SequenceI sequence = (Sequence) av.getAlignment().getSequenceAt(seq);
@@ -1021,7 +1009,7 @@ public class SeqPanel extends JPanel
try
{
- Thread.sleep(75);
+ Thread.sleep(20);
}
catch (Exception ex)
{