X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=b9ba9f344c7fa4aaebc5af7be02b2d08a0b725bc;hb=9807ea8cc4e867378c52d51b832168d4bc611d29;hp=8146be0314bd1be23d4188153ce7c6111886cd20;hpb=8da7acff9214ddaf0e6d28e76219ab51bd38e62d;p=jalview.git
diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java
index 8146be0..b9ba9f3 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,36 +224,57 @@ 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
{
res = (x / av.getCharWidth()) + av.getStartRes();
}
+ if(av.hasHiddenColumns)
+ res = av.getColumnSelection().adjustForHiddenColumns(res);
+
return res;
}
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 +357,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 +399,62 @@ 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())
+ SequenceFeature [] features = sequence.getDatasetSequence().getSequenceFeatures();
+ if(features!=null)
{
- SequenceFeature sf = (SequenceFeature) e.nextElement();
+ StringBuffer sbuffer = new StringBuffer("");
+
+ for (int i = 0; i < features.length; i++)
+ {
- if ((sf.getStart() <= sequence.findPosition(res)) &&
- (sf.getEnd() >= sequence.findPosition(res)))
+ if ( (features[i].getBegin() <= sequence.findPosition(res)) &&
+ (features[i].getEnd() >= sequence.findPosition(res)))
{
- if (sbuffer.length() > 0)
+ if(!av.featuresDisplayed.containsKey(features[i].getType()))
+ continue;
+
+
+ if (features[i].getType().equals("disulfide bond"))
+ {
+ if (features[i].getBegin() == sequence.findPosition(res)
+ || features[i].getEnd() == sequence.findPosition(res))
{
- sbuffer.append("; ");
+ if (sbuffer.length() > 6)
+ sbuffer.append("
");
+ sbuffer.append("disulfide bond " + features[i].getBegin() + ":" +
+ features[i].getEnd());
}
+ }
+ else
+ {
+ if (sbuffer.length() > 6)
+ sbuffer.append("
");
+ if(features[i].featureGroup!=null)
+ sbuffer.append(features[i].featureGroup+";");
- sbuffer.append(sf.getType() + " " + sf.getDescription());
+ sbuffer.append(features[i].getType());
- if (sf.getStatus().length() > 0)
+ if (features[i].getDescription() != null
+ && !features[i].description.equals(features[i].getType()))
+ sbuffer.append("; " + features[i].getDescription());
+
+ if (features[i].getStatus() != null && features[i].getStatus().length()>0)
{
- sbuffer.append(" (" + sf.getStatus() + ")");
+ sbuffer.append("; (" + features[i].getStatus() + ")");
}
+ }
}
- }
- this.setToolTipText(sbuffer.toString());
+ }
+
+ sbuffer.append("");
+ if(sbuffer.length()==13) //
+ setToolTipText("");
+ else
+ setToolTipText(sbuffer.toString());
+ }
+ else
+ setToolTipText("");
}
}
@@ -531,19 +610,6 @@ public class SeqPanel extends JPanel
seqCanvas.repaint();
}
- /**
- * DOCUMENT ME!
- *
- * @param seqstart DOCUMENT ME!
- * @param seqend DOCUMENT ME!
- * @param start DOCUMENT ME!
- */
- public void drawChars(int seqstart, int seqend, int start)
- {
- seqCanvas.drawPanel(seqCanvas.gg, start, av.getEndRes(), seqstart,
- seqend, av.getStartRes(), av.getStartSeq(), 0);
- seqCanvas.repaint();
- }
/**
* DOCUMENT ME!
@@ -602,8 +668,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);
@@ -931,7 +1007,7 @@ public class SeqPanel extends JPanel
try
{
- Thread.sleep(75);
+ Thread.sleep(20);
}
catch (Exception ex)
{