X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=d45759343751073e7574c9aca7e9939bf29b81ee;hb=42ed2d813b3b8e7c9c80d79e1c8e1ded61ec6dd9;hp=d081f162aa91861e9e285bcf5d61ce9ffaed934d;hpb=f0ea7e292e26e7cec19720be39b143d261f53821;p=jalview.git
diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java
index d081f16..d457593 100755
--- a/src/jalview/gui/SeqPanel.java
+++ b/src/jalview/gui/SeqPanel.java
@@ -27,6 +27,8 @@ import java.awt.event.*;
import javax.swing.*;
+import java.util.Vector;
+
/**
* DOCUMENT ME!
@@ -70,6 +72,8 @@ public class SeqPanel extends JPanel implements MouseListener,
StringBuffer keyboardNo1;
StringBuffer keyboardNo2;
+ java.net.URL linkImageURL;
+
/**
* Creates a new SeqPanel object.
*
@@ -78,6 +82,7 @@ public class SeqPanel extends JPanel implements MouseListener,
*/
public SeqPanel(AlignViewport avp, AlignmentPanel p)
{
+ linkImageURL = getClass().getResource("/images/link.gif");
ToolTipManager.sharedInstance().registerComponent(this);
ToolTipManager.sharedInstance().setInitialDelay(0);
ToolTipManager.sharedInstance().setDismissDelay(10000);
@@ -167,6 +172,29 @@ public class SeqPanel extends JPanel implements MouseListener,
return seq;
}
+ Vector getAllFeaturesAtRes(SequenceI seq, int res)
+ {
+ Vector allFeatures = new Vector();
+ int index = 0;
+ if(seq.getSequenceFeatures()!=null)
+ {
+ while (index < seq.getSequenceFeatures().length)
+ {
+ SequenceFeature sf = seq.getSequenceFeatures()[index];
+ if (sf.getBegin() <= res &&
+ sf.getEnd() >= res)
+ {
+ if (av.featuresDisplayed.containsKey(sf.getType()))
+ {
+ allFeatures.addElement(sf);
+ }
+ }
+ index++;
+ }
+ }
+ return allFeatures;
+ }
+
void endEditing()
{
startseq = -1;
@@ -501,6 +529,7 @@ public class SeqPanel extends JPanel implements MouseListener,
if(features!=null)
{
StringBuffer sbuffer = new StringBuffer("");
+ StringBuffer seqSpecific = new StringBuffer();
for (int i = 0; i < features.length; i++)
{
@@ -522,30 +551,46 @@ public class SeqPanel extends JPanel implements MouseListener,
sbuffer.append("
");
sbuffer.append("disulfide bond " + features[i].getBegin() + ":" +
features[i].getEnd());
+ if (features[i].links != null)
+ sbuffer.append(" ");
}
}
else
{
if (sbuffer.length() > 6)
sbuffer.append("
");
- if(features[i].featureGroup!=null)
- sbuffer.append(features[i].featureGroup+";");
- sbuffer.append(features[i].getType());
+ sbuffer.append(features[i].getType() + " " +
+ features[i].begin);
+ if (features[i].begin != features[i].end)
+ sbuffer.append(" " + features[i].end);
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)
+ if (features[i].getValue("status") != null)
{
- sbuffer.append("; (" + features[i].getStatus() + ")");
+ sbuffer.append("; (" + features[i].getValue("status") + ")");
}
+ if (features[i].links != null)
+ sbuffer.append(" ");
+
}
}
+ else if(features[i].begin==0 && features[i].end==0)
+ {
+ // seqSpecific.append(features[i].featureGroup+": "
+ // + features[i].getType()+" "
+ // +features[i].getDescription()+"
");
+ }
}
+ if(seqSpecific.length()>0)
+ seqSpecific.setLength(seqSpecific.length()-4);
+
+ sbuffer.append(seqSpecific);
sbuffer.append("");
if(sbuffer.length()==13) //
setToolTipText("");
@@ -597,48 +642,48 @@ public class SeqPanel extends JPanel implements MouseListener,
*/
public void mouseDragged(MouseEvent evt)
{
- if(mouseWheelPressed)
+ if (mouseWheelPressed)
{
int oldWidth = av.charWidth;
//Which is bigger, left-right or up-down?
- if( Math.abs(evt.getY()-lastMousePress.getY())
- > Math.abs(evt.getX()-lastMousePress.getX()))
- {
- int fontSize = av.font.getSize();
-
- if (evt.getY() < lastMousePress.getY() && av.charHeight > 1)
- {
- fontSize--;
- }
- else if (evt.getY() > lastMousePress.getY())
- {
- fontSize++;
- }
+ if (Math.abs(evt.getY() - lastMousePress.getY())
+ > Math.abs(evt.getX() - lastMousePress.getX()))
+ {
+ int fontSize = av.font.getSize();
- av.setFont(new Font(av.font.getName(), av.font.getStyle(), fontSize));
- av.charWidth = oldWidth;
- ap.fontChanged();
+ if (evt.getY() < lastMousePress.getY())
+ {
+ fontSize--;
+ }
+ else if (evt.getY() > lastMousePress.getY())
+ {
+ fontSize++;
+ }
+ if(fontSize<1)
+ fontSize = 1;
- }
- else
- {
- if (evt.getX() < lastMousePress.getX() && av.charWidth > 1)
- {
- av.charWidth--;
- }
- else if (evt.getX() > lastMousePress.getX())
- {
- av.charWidth++;
- }
+ av.setFont(new Font(av.font.getName(), av.font.getStyle(), fontSize));
+ av.charWidth = oldWidth;
+ ap.fontChanged();
+ }
+ else
+ {
+ if (evt.getX() < lastMousePress.getX() && av.charWidth > 1)
+ {
+ av.charWidth--;
+ }
+ else if (evt.getX() > lastMousePress.getX())
+ {
+ av.charWidth++;
+ }
- ap.repaint();
- }
+ ap.repaint();
+ }
- FontMetrics fm = getFontMetrics(av.getFont());
- av.showText = (fm.charWidth('M') < av.charWidth);
- // && fm.getHeight()= res))
{
stretchGroup = allGroups[i];
- av.setSelectionGroup(stretchGroup);
-
break;
}
}
}
+
+ av.setSelectionGroup(stretchGroup);
+
}
if (av.cursorMode)
@@ -1207,49 +1253,65 @@ public class SeqPanel extends JPanel implements MouseListener,
}
- if (stretchGroup == null)
+ if (javax.swing.SwingUtilities.isRightMouseButton(evt))
{
- // define a new group here
- SequenceGroup sg = new SequenceGroup();
- sg.setStartRes(res);
- sg.setEndRes(res);
- sg.addSequence(sequence, false);
- av.setSelectionGroup(sg);
- stretchGroup = sg;
-
- if (av.getConservationSelected())
+ Vector allFeatures = getAllFeaturesAtRes(sequence.getDatasetSequence(),
+ sequence.findPosition(res));
+ Vector links = new Vector();;
+ for (int i = 0; i < allFeatures.size(); i++)
{
- SliderPanel.setConservationSlider(ap,
- av.getGlobalColourScheme(), "Background");
+ SequenceFeature sf = (SequenceFeature) allFeatures.elementAt(i);
+ if (sf.links != null)
+ {
+ for (int j = 0; j < sf.links.size(); j++)
+ {
+ links.addElement(sf.links.elementAt(j));
+ }
+ }
}
- if (av.getAbovePIDThreshold())
- {
- SliderPanel.setPIDSliderSource(ap, av.getGlobalColourScheme(),
- "Background");
- }
+
+ jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu(ap, null, links);
+ pop.show(this, evt.getX(), evt.getY());
}
- else if (javax.swing.SwingUtilities.isRightMouseButton(evt))
+ else if (stretchGroup == null)
{
- jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu(ap, null);
- pop.show(this, evt.getX(), evt.getY());
+ //Only if left mouse button do we want to change group sizes
- // edit the properties of existing group
- }
+ // define a new group here
+ SequenceGroup sg = new SequenceGroup();
+ sg.setStartRes(res);
+ sg.setEndRes(res);
+ sg.addSequence(sequence, false);
+ av.setSelectionGroup(sg);
+ stretchGroup = sg;
- if ((stretchGroup != null) && (stretchGroup.getEndRes() == res))
- {
+ if (av.getConservationSelected())
+ {
+ SliderPanel.setConservationSlider(ap,
+ av.getGlobalColourScheme(),
+ "Background");
+ }
+
+ if (av.getAbovePIDThreshold())
+ {
+ SliderPanel.setPIDSliderSource(ap, av.getGlobalColourScheme(),
+ "Background");
+ }
+ if ( (stretchGroup != null) && (stretchGroup.getEndRes() == res))
+ {
// Edit end res position of selected group
changeEndRes = true;
- }
- else if ((stretchGroup != null) && (stretchGroup.getStartRes() == res))
- {
+ }
+ else if ( (stretchGroup != null) &&
+ (stretchGroup.getStartRes() == res))
+ {
// Edit end res position of selected group
changeStartRes = true;
+ }
+ stretchGroup.getWidth();
}
- stretchGroup.getWidth();
-
seqCanvas.repaint();
}