*/
package jalview.gui;
-import jalview.api.RotatableCanvasI;
-import jalview.datamodel.Point;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.datamodel.SequencePoint;
-import jalview.math.RotatableMatrix;
-import jalview.math.RotatableMatrix.Axis;
-import jalview.util.ColorUtils;
-import jalview.util.MessageManager;
-import jalview.viewmodel.AlignmentViewport;
-
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JPanel;
import javax.swing.ToolTipManager;
+import jalview.api.RotatableCanvasI;
+import jalview.datamodel.Point;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.datamodel.SequencePoint;
+import jalview.math.RotatableMatrix;
+import jalview.math.RotatableMatrix.Axis;
+import jalview.util.ColorUtils;
+import jalview.util.MessageManager;
+import jalview.viewmodel.AlignmentViewport;
+
/**
* Models a Panel on which a set of points, and optionally x/y/z axes, can be
* drawn, and rotated or zoomed with the mouse
*/
-public class RotatableCanvas extends JPanel implements MouseListener,
- MouseMotionListener, KeyListener, RotatableCanvasI,
- MouseWheelListener
+public class RotatableCanvas extends JPanel
+ implements MouseListener, MouseMotionListener, KeyListener,
+ RotatableCanvasI, MouseWheelListener
{
private static final float ZOOM_OUT = 0.9f;
{
float[] max = new float[DIMS];
float[] min = new float[DIMS];
-
+
max[0] = -Float.MAX_VALUE;
max[1] = -Float.MAX_VALUE;
max[2] = -Float.MAX_VALUE;
-
+
min[0] = Float.MAX_VALUE;
min[1] = Float.MAX_VALUE;
min[2] = Float.MAX_VALUE;
-
+
for (SequencePoint sp : sequencePoints)
{
max[0] = Math.max(max[0], sp.coord.x);
min[1] = Math.min(min[1], sp.coord.y);
min[2] = Math.min(min[2], sp.coord.z);
}
-
+
seqMin = min;
seqMax = max;
}
int midX = getWidth() / 2;
int midY = getHeight() / 2;
- float maxWidth = Math.max(Math.abs(seqMax[0] - seqMin[0]),
- Math.abs(seqMax[1] - seqMin[1]));
+ // float maxWidth = Math.max(Math.abs(seqMax[0] - seqMin[0]),
+ // Math.abs(seqMax[1] - seqMin[1]));
int pix = Math.min(getWidth(), getHeight());
- float scaleBy = pix * getScaleFactor() / (2f * maxWidth);
+ float scaleBy = pix * getScaleFactor() / (2f);
for (int i = 0; i < DIMS; i++)
{
g.drawLine(midX, midY,
- midX + (int) (getAxisEndPoints()[i].x * scaleBy * seqMax[0]),
- midY + (int) (getAxisEndPoints()[i].y * scaleBy * seqMax[1]));
+ midX + (int) (getAxisEndPoints()[i].x * scaleBy * 0.25),
+ midY + (int) (getAxisEndPoints()[i].y * scaleBy * 0.25));
}
}
}
else if (evt.getKeyChar() == 's')
{
- // Cache.log.warn("DEBUG: Rectangle selection");
+ // Cache.warn("DEBUG: Rectangle selection");
// todo not yet enabled as rectx2, recty2 are always -1
// need to set them in mouseDragged; JAL-1124
// if ((rectx2 != -1) && (recty2 != -1))
int yDelta = yPos - mouseY;
// Check if this is a rectangle drawing drag
- if ((evt.getModifiers() & InputEvent.BUTTON2_MASK) != 0)
+ if ((evt.getModifiersEx() & InputEvent.BUTTON2_DOWN_MASK) != 0)
{
// rectx2 = evt.getX();
// recty2 = evt.getY();
// Now translate back again
sp.translate(centre[0], centre[1], centre[2]);
-
+
zMin = Math.min(zMin, sp.coord.z);
zMax = Math.max(zMax, sp.coord.z);
}
if (av != null)
{
SequenceI sequence = sp.getSequence();
- if (!av.getSelectionGroup().getSequences(null)
- .contains(sequence))
+ if (!av.getSelectionGroup().getSequences(null).contains(sequence))
{
av.getSelectionGroup().addSequence(sequence, true);
}
for (int i = 0; i < npoint; i++)
{
SequencePoint sp = sequencePoints.get(i);
- int px = (int) ((sp.coord.x - centre[0]) * scaleBy)
- + halfwidth;
- int py = (int) ((sp.coord.y - centre[1]) * scaleBy)
- + halfheight;
+ int px = (int) ((sp.coord.x - centre[0]) * scaleBy) + halfwidth;
+ int py = (int) ((sp.coord.y - centre[1]) * scaleBy) + halfheight;
if ((Math.abs(px - x) < NEARBY) && (Math.abs(py - y) < NEARBY))
{