boolean stretchingGroup = false;\r
int min; //used by mouseDragged to see if user\r
int max; //used by mouseDragged to see if user\r
+ boolean mouseDragging = false;\r
\r
// wants to delete columns\r
public ScalePanel(AlignViewport av, AlignmentPanel ap)\r
{\r
public void actionPerformed(ActionEvent e)\r
{\r
- av.getColumnSelection().revealHiddenColumns(reveal[0], av);\r
+ av.showColumn(reveal[0]);\r
reveal = null;\r
ap.repaint();\r
if(ap.overviewPanel != null)\r
});\r
pop.add(item);\r
\r
- if(av.getColumnSelection().hiddenColumns.size()>1)\r
+ if(av.getColumnSelection().size()>1)\r
{\r
item = new JMenuItem("Reveal All");\r
item.addActionListener(new ActionListener()\r
{\r
public void actionPerformed(ActionEvent e)\r
{\r
- av.getColumnSelection().revealAllHiddenColumns(av);\r
+ av.showAllHiddenColumns();\r
reveal = null;\r
ap.repaint();\r
if(ap.overviewPanel != null)\r
pop.show(this, evt.getX(), evt.getY());\r
\r
}\r
- else if (av.getColumnSelection().contains(res))\r
+ else\r
+ if (av.getColumnSelection().contains(res))\r
{\r
if( SwingUtilities.isRightMouseButton(evt))\r
{\r
{\r
public void actionPerformed(ActionEvent e)\r
{\r
- av.getColumnSelection().hideColumns(res, av);\r
+ av.hideColumns(res, res);\r
ap.repaint();\r
if(ap.overviewPanel != null)\r
ap.overviewPanel.updateOverviewImage();\r
*/\r
public void mouseReleased(MouseEvent evt)\r
{\r
+ mouseDragging = false;\r
+\r
int res = (evt.getX() / av.getCharWidth()) + av.getStartRes();\r
\r
+ if(res> av.alignment.getWidth())\r
+ {\r
+ res = av.alignment.getWidth()-1;\r
+ }\r
+\r
if(av.hasHiddenColumns)\r
res = av.getColumnSelection().adjustForHiddenColumns(res);\r
\r
*/\r
public void mouseDragged(MouseEvent evt)\r
{\r
+ mouseDragging = true;\r
+\r
int res = (evt.getX() / av.getCharWidth()) + av.getStartRes();\r
+ if(res<0)\r
+ res = 0;\r
\r
if(av.hasHiddenColumns)\r
res = av.getColumnSelection().adjustForHiddenColumns(res);\r
\r
+\r
+ if(res> av.alignment.getWidth())\r
+ {\r
+ res = av.alignment.getWidth()-1;\r
+ }\r
+\r
if (res < min)\r
{\r
min = res;\r
max = res;\r
}\r
\r
+\r
+\r
SequenceGroup sg = av.getSelectionGroup();\r
\r
if (sg != null)\r
{\r
sg.setEndRes(res);\r
}\r
- else if (res < sg.getStartRes())\r
+ if (res < sg.getStartRes())\r
{\r
sg.setStartRes(res);\r
}\r
}\r
}\r
\r
- public void mouseEntered(MouseEvent evt){}\r
- public void mouseExited(MouseEvent evt){}\r
+ public void mouseEntered(MouseEvent evt)\r
+ {\r
+ if(mouseDragging)\r
+ ap.seqPanel.scrollCanvas(null);\r
+ }\r
+\r
+ public void mouseExited(MouseEvent evt)\r
+ {\r
+ if(mouseDragging)\r
+ ap.seqPanel.scrollCanvas(evt);\r
+ }\r
+\r
public void mouseClicked(MouseEvent evt){}\r
\r
public void mouseMoved(MouseEvent evt)\r
scalestartx += 5;\r
}\r
\r
+ String string;\r
+ int maxX=0;\r
+\r
for (int i = scalestartx; i < endx; i += 5)\r
{\r
if ((i % 10) == 0)\r
{\r
- gg.drawString(String.valueOf(av.getColumnSelection().adjustForHiddenColumns(i)),\r
- (i - startx - 1) * av.charWidth, y);\r
- gg.drawLine((int) (((i - startx - 1) * av.charWidth) +\r
- (av.charWidth / 2)), y + 2,\r
- (int) (((i - startx - 1) * av.charWidth) +\r
- (av.charWidth / 2)), y + (fm.getDescent() * 2));\r
+ string = String.valueOf(av.getColumnSelection().adjustForHiddenColumns(i));\r
+ if ( (i - startx - 1) * av.charWidth > maxX)\r
+ {\r
+ gg.drawString(string,\r
+ (i - startx - 1) * av.charWidth, y);\r
+ maxX = (i - startx + 1) * av.charWidth + fm.stringWidth(string);\r
+ }\r
+\r
+ gg.drawLine( (int) ( ( (i - startx - 1) * av.charWidth) +\r
+ (av.charWidth / 2)), y + 2,\r
+ (int) ( ( (i - startx - 1) * av.charWidth) +\r
+ (av.charWidth / 2)),\r
+ y + (fm.getDescent() * 2));\r
+\r
}\r
else\r
{\r
{\r
gg.setColor(Color.blue);\r
int res;\r
- for (int i = 0; i < av.getColumnSelection().getHiddenColumns().size(); i++)\r
+ if(av.getShowHiddenMarkers())\r
{\r
- res = av.getColumnSelection().findHiddenRegionPosition( i )-startx;\r
+ for (int i = 0; i < av.getColumnSelection().getHiddenColumns().size();\r
+ i++)\r
+ {\r
+\r
+ res = av.getColumnSelection().findHiddenRegionPosition(i) -\r
+ startx;\r
\r
- gg.fillPolygon(new int[] { res*av.charWidth - av.charHeight/4,\r
- res*av.charWidth + av.charHeight/4,\r
- res*av.charWidth },\r
- new int[]\r
- {\r
- y-av.charHeight/2 , y-av.charHeight/2 ,\r
- y + 8\r
- }, 3);\r
+ if(res < 0 || res > endx-scalestartx)\r
+ continue;\r
\r
+ gg.fillPolygon(new int[]\r
+ {res * av.charWidth - av.charHeight / 4,\r
+ res * av.charWidth + av.charHeight / 4,\r
+ res * av.charWidth},\r
+ new int[]\r
+ {\r
+ y - av.charHeight / 2, y - av.charHeight / 2,\r
+ y + 8\r
+ }, 3);\r
\r
+ }\r
}\r
\r
if (reveal != null && reveal[0] > startx && reveal[0] < endx)\r