Skip to content

Commit

Permalink
fix molecule jumps on rotate [#39 state:committed]
Browse files Browse the repository at this point in the history
  • Loading branch information
novakps committed Sep 29, 2010
1 parent 3b09cf5 commit 00d4fb7
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 30 deletions.
37 changes: 16 additions & 21 deletions kemia/controller/plugins/move.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ goog.exportSymbol('kemia.controller.plugins.Move',
*/
kemia.controller.plugins.Move.COMMAND = 'move';

kemia.controller.plugins.Move.ROTATE_CURSOR_STYLE = 'url("../../elements/images/rotate-cursor-32.png") 16 16, pointer';

/** @inheritDoc */
kemia.controller.plugins.Move.prototype.isSupportedCommand = function(command) {
return command == kemia.controller.plugins.Move.COMMAND;
Expand Down Expand Up @@ -48,15 +50,6 @@ kemia.controller.plugins.Move.prototype.execCommandInternal = function(command,
this.isActive = active;
};

/**
* The logger for this class.
*
* @type {goog.debug.Logger}
* @protected
*/
kemia.controller.plugins.Move.prototype.logger = goog.debug.Logger
.getLogger('kemia.controller.plugins.Move');

kemia.controller.plugins.Move.prototype.handleMouseMove = function(e) {

if (this.isActive && !this.isDragging) {
Expand Down Expand Up @@ -89,8 +82,7 @@ kemia.controller.plugins.Move.prototype.handleMouseMove = function(e) {
}
} else if (target instanceof kemia.model.Molecule) {
if (e.shiftKey) {
this.editorObject.getOriginalElement().style.cursor = 'url("../../elements/images/rotate-cursor-32.png") 16 16, pointer';

this.editorObject.getOriginalElement().style.cursor = kemia.controller.plugins.Move.ROTATE_CURSOR_STYLE;
} else {
this.editorObject.getOriginalElement().style.cursor = 'move';
}
Expand Down Expand Up @@ -157,6 +149,7 @@ kemia.controller.plugins.Move.prototype.handleMouseDown = function(e) {
var molecule = target;
this.editorObject.dispatchBeforeChange();
if (e.shiftKey) {
this.editorObject.getOriginalElement().style.cursor = kemia.controller.plugins.Move.ROTATE_CURSOR_STYLE;
this.rotateMolecule(e, target);
} else {
this.dragMolecule(e, target);
Expand Down Expand Up @@ -654,20 +647,22 @@ kemia.controller.plugins.Move.prototype.rotateMolecule = function(e, molecule) {
var deltaY = d.deltaY - d._initDeltaY;
var new_angle = goog.math.angle(d._center.x, d._center.y, d._start.x
+ deltaX, d._start.y + deltaY);
var g_trans = d.group.getTransform();
var degrees = new_angle - d._start_angle;
d.group.setTransformation(0, 0, degrees, d._center.x, d._center.y);
d._degrees = new_angle - d._start_angle;
d.group.setTransformation(0, 0, d._degrees, d._center.x, d._center.y);
});
d.addEventListener(goog.fx.Dragger.EventType.END, function(e) {
var mol_center = d.editor.reactionRenderer.transform.createInverse()
.transformCoords( [ d._center ])[0];
var new_angle = goog.math.angle(d._center.x, d._center.y, d._start.x
+ d.deltaX, d._start.y + d.deltaY);

var degrees = new_angle - d._start_angle;
d.molecule.rotate( -degrees, mol_center);
d.molecule.rotate( -d._degrees, d.molecule.getCenter());
d.editor.setModels(d.editor.getModels());
d.dispose();
});
d.startDrag(e);
};

/**
* The logger for this class.
*
* @type {goog.debug.Logger}
* @protected
*/
kemia.controller.plugins.Move.prototype.logger = goog.debug.Logger
.getLogger('kemia.controller.plugins.Move');
20 changes: 12 additions & 8 deletions kemia/deps.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 12 additions & 1 deletion kemia/model/molecule.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ goog.provide('kemia.model.Molecule');
goog.require('goog.array');
goog.require('kemia.ring.RingFinder');
goog.require('kemia.model.Atom');
goog.require('goog.debug.Logger');

/**
* Class representing a Molecule
Expand Down Expand Up @@ -425,6 +426,7 @@ kemia.model.Molecule.prototype.getBoundingBox = function() {
*
*/
kemia.model.Molecule.prototype.rotate = function(degrees, center) {
// this.logger.info('rotate ' + degrees);
var trans = kemia.graphics.AffineTransform.getRotateInstance(goog.math
.toRadians(degrees), center.x, center.y);
goog.array.forEach(this.atoms, function(a) {
Expand All @@ -444,4 +446,13 @@ kemia.model.Molecule.prototype.translate = function(vector) {
goog.array.forEach(this.atoms, function(a) {
a.coord = goog.math.Coordinate.sum(a.coord, vector);
});
};
};

/**
* The logger for this class.
*
* @type {goog.debug.Logger}
* @protected
*/
kemia.model.Molecule.prototype.logger = goog.debug.Logger
.getLogger('kemia.model.Molecule');

0 comments on commit 00d4fb7

Please sign in to comment.