git://source.jalview.org
/
jalview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a5cdcd4
)
group editing bug fixed
author
amwaterhouse
<Andrew Waterhouse>
Thu, 19 May 2005 17:47:37 +0000
(17:47 +0000)
committer
amwaterhouse
<Andrew Waterhouse>
Thu, 19 May 2005 17:47:37 +0000
(17:47 +0000)
src/jalview/appletgui/SeqPanel.java
patch
|
blob
|
history
diff --git
a/src/jalview/appletgui/SeqPanel.java
b/src/jalview/appletgui/SeqPanel.java
index
7df2254
..
e6e02c5
100755
(executable)
--- a/
src/jalview/appletgui/SeqPanel.java
+++ b/
src/jalview/appletgui/SeqPanel.java
@@
-13,12
+13,8
@@
public class SeqPanel extends Panel
public SeqCanvas seqCanvas;
\r
public AlignmentPanel ap;
\r
\r
public SeqCanvas seqCanvas;
\r
public AlignmentPanel ap;
\r
\r
- protected int startres;
\r
protected int lastres;
\r
protected int lastres;
\r
- protected int endres;
\r
-
\r
protected int startseq;
\r
protected int startseq;
\r
- protected int padseq;
\r
\r
protected AlignViewport av;
\r
\r
\r
protected AlignViewport av;
\r
\r
@@
-100,13
+96,7
@@
public class SeqPanel extends Panel
\r
public void doMouseReleased(MouseEvent evt) {
\r
\r
\r
public void doMouseReleased(MouseEvent evt) {
\r
\r
- int x = evt.getX();
\r
- int res = x/av.getCharWidth() + av.getStartRes();
\r
-
\r
- endres = res;
\r
-
\r
startseq = -1;
\r
startseq = -1;
\r
- startres = -1;
\r
lastres = -1;
\r
if(seqEditOccurred>-1)
\r
updateConservation(seqEditOccurred);
\r
lastres = -1;
\r
if(seqEditOccurred>-1)
\r
updateConservation(seqEditOccurred);
\r
@@
-114,7
+104,6
@@
public class SeqPanel extends Panel
seqEditOccurred = -1;
\r
\r
ap.repaint();
\r
seqEditOccurred = -1;
\r
\r
ap.repaint();
\r
-
\r
}
\r
\r
public void doMousePressed(MouseEvent evt) {
\r
}
\r
\r
public void doMousePressed(MouseEvent evt) {
\r
@@
-136,20
+125,11
@@
public class SeqPanel extends Panel
// in the alignment
\r
\r
startseq = seq;
\r
// in the alignment
\r
\r
startseq = seq;
\r
-
\r
- if (startseq == (av.getAlignment().getHeight() - 1))
\r
- padseq = 1;
\r
- else
\r
- padseq = 1;
\r
-
\r
- startres = res;
\r
lastres = res;
\r
lastres = res;
\r
-
\r
}
\r
else
\r
{
\r
startseq = -1;
\r
}
\r
else
\r
{
\r
startseq = -1;
\r
- startres = -1;
\r
lastres = -1;
\r
}
\r
\r
lastres = -1;
\r
}
\r
\r
@@
-226,107
+206,114
@@
public class SeqPanel extends Panel
}
\r
\r
public void doMouseDragged(MouseEvent evt) {
\r
}
\r
\r
public void doMouseDragged(MouseEvent evt) {
\r
- // If we're dragging we're editing
\r
\r
\r
- if(lastres==-1)
\r
- return;
\r
+ // If we're dragging we're editing
\r
+ int res = evt.getX() / av.getCharWidth() + av.getStartRes();
\r
+ if (res < 0)
\r
+ res = 0;
\r
\r
\r
- int x = evt.getX();
\r
+ if (lastres == -1 || lastres == res)
\r
+ return;
\r
\r
\r
- int res = x/av.getCharWidth() + av.getStartRes();
\r
- if (res < 0)
\r
- res = 0;
\r
+ boolean dragRight = true;
\r
+ if (res < av.getAlignment().getWidth() && res < lastres)
\r
+ dragRight = false;
\r
\r
\r
- if (res != lastres)
\r
- {
\r
- // Group editing
\r
- if (evt.isAltDown() || evt.isControlDown())
\r
- {
\r
- SequenceGroup sg = av.getSelectionGroup();
\r
- if(sg==null)
\r
- av.getAlignment().findGroup(startseq);
\r
- if (sg != null)
\r
+
\r
+ if (res != lastres)
\r
+ {
\r
+ // Group editing
\r
+ if (evt.isAltDown() || evt.isControlDown())
\r
{
\r
{
\r
- boolean deleteAllowed = false;
\r
- if (res < av.getAlignment().getWidth() && res < lastres)
\r
+ SequenceGroup sg = av.getSelectionGroup();
\r
+ if(sg==null)
\r
{
\r
{
\r
- /// Are we able to delete?
\r
- boolean allGaps = true;
\r
- for (int i = 0; i < sg.getSize(); i++)
\r
+ lastres=-1;
\r
+ return;
\r
+ }
\r
+
\r
+ // drag to right
\r
+ if(dragRight)
\r
+ sg.setEndRes(sg.getEndRes() + (res-lastres));
\r
+
\r
+ // drag to left
\r
+ else
\r
{
\r
{
\r
- SequenceI s = sg.getSequenceAt(i);
\r
- for (int j = lastres-1; j >= res && allGaps; j--)
\r
+ /// Are we able to delete?
\r
+ // ie are all columns blank?
\r
+ boolean deleteAllowed = false;
\r
+ for (int s = 0; s < sg.getSize(); s++)
\r
{
\r
{
\r
- if (!jalview.util.Comparison.isGap(s.getSequence().charAt(j)))
\r
+ SequenceI seq = sg.getSequenceAt(s);
\r
+ for (int j=res; j<lastres; j++)
\r
+ {
\r
+ if(seq.getSequence().length()<=j)
\r
+ continue;
\r
+
\r
+ if(!jalview.util.Comparison.isGap(seq.getSequence().charAt(j)))
\r
{
\r
{
\r
- res = j + 1;
\r
- allGaps = false;
\r
+ // Not a gap, block edit not valid
\r
+ res=j+1;
\r
+ deleteAllowed = false;
\r
+ continue;
\r
}
\r
}
\r
+ deleteAllowed = true;
\r
+ }
\r
}
\r
\r
}
\r
\r
- if(!deleteAllowed && allGaps)
\r
- deleteAllowed = true;
\r
- }
\r
- }
\r
-
\r
- // drag to right
\r
- if (res < av.getAlignment().getWidth() && res > lastres)
\r
- sg.setEndRes(sg.getEndRes() + 1);
\r
-
\r
- // drag to left
\r
- else if (deleteAllowed && res < av.getAlignment().getWidth() &&
\r
- res < lastres)
\r
- sg.setEndRes(sg.getEndRes() - 1);
\r
-
\r
+ if(!deleteAllowed)
\r
+ {
\r
+ lastres = -1;
\r
+ return;
\r
+ }
\r
\r
\r
+ sg.setEndRes(sg.getEndRes() - (lastres-res));
\r
+ }
\r
\r
\r
\r
\r
- for (int i = 0; i < sg.getSize(); i++)
\r
- {
\r
- SequenceI s = sg.getSequenceAt(i);
\r
- int k = av.alignment.findIndex(s);
\r
+ for (int i = 0; i < sg.getSize(); i++)
\r
+ {
\r
+ SequenceI s = sg.getSequenceAt(i);
\r
+ int k = av.alignment.findIndex(s);
\r
\r
\r
- // drag to right
\r
- if (res < av.getAlignment().getWidth() && res > lastres)
\r
- for (int j = lastres; j < res; j++)
\r
- insertChar(j, k);
\r
+ // drag to right
\r
+ if (dragRight)
\r
+ for (int j = lastres; j < res; j++)
\r
+ insertChar(j, k);
\r
\r
\r
- // drag to left
\r
- else if (deleteAllowed && res < av.getAlignment().getWidth() && res < lastres)
\r
- {
\r
- for (int j = res; j < lastres; j++)
\r
+ // drag to left
\r
+ else
\r
{
\r
{
\r
- deleteChar(j, k);
\r
- startres = res;
\r
+ for (int j = res; j < lastres; j++)
\r
+ {
\r
+ if(s.getLength()>j)
\r
+ deleteChar(res, k);
\r
+ }
\r
}
\r
}
\r
}
\r
}
\r
- }
\r
- }
\r
- }
\r
- else /////Editing a single sequence///////////
\r
- {
\r
- if (res < av.getAlignment().getWidth() && res > lastres)
\r
- {
\r
- // dragging to the right
\r
- for (int j = lastres; j < res; j++)
\r
- insertChar(j, startseq);
\r
}
\r
}
\r
- else if (res < av.getAlignment().getWidth() && res < lastres)
\r
+ else /////Editing a single sequence///////////
\r
{
\r
{
\r
- // dragging to the left
\r
- for (int j = res; j < lastres; j++)
\r
+ if (res < av.getAlignment().getWidth() && res > lastres)
\r
{
\r
{
\r
- deleteChar(j, startseq);
\r
- startres = res;
\r
+ // dragging to the right
\r
+ for (int j = lastres; j < res; j++)
\r
+ insertChar(j, startseq);
\r
+ }
\r
+ else if (res < av.getAlignment().getWidth() && res < lastres)
\r
+ {
\r
+ // dragging to the left
\r
+ for (int j = lastres; j > res; j--)
\r
+ {
\r
+ deleteChar(res, startseq);
\r
+ }
\r
}
\r
}
\r
- }
\r
-
\r
- }
\r
\r
\r
- }
\r
+ }
\r
+ }
\r
\r
\r
- lastres = res;
\r
- seqCanvas.repaint();
\r
+ lastres = res;
\r
+ seqCanvas.repaint();
\r
}
\r
\r
public void drawChars(int seqstart, int seqend, int start) {
\r
}
\r
\r
public void drawChars(int seqstart, int seqend, int start) {
\r