blob: 875bac40b1b2a9138e0a177af2a663de852f3a06 [file] [log] [blame]
/**
* Copyright (c) 2006-2015, JGraph Ltd
* Copyright (c) 2006-2015, Gaudenz Alder
*/
/**
* Class: mxMouseEvent
*
* Base class for all mouse events in mxGraph. A listener for this event should
* implement the following methods:
*
* (code)
* graph.addMouseListener(
* {
* mouseDown: function(sender, evt)
* {
* mxLog.debug('mouseDown');
* },
* mouseMove: function(sender, evt)
* {
* mxLog.debug('mouseMove');
* },
* mouseUp: function(sender, evt)
* {
* mxLog.debug('mouseUp');
* }
* });
* (end)
*
* Constructor: mxMouseEvent
*
* Constructs a new event object for the given arguments.
*
* Parameters:
*
* evt - Native mouse event.
* state - Optional <mxCellState> under the mouse.
*
*/
function mxMouseEvent(evt, state)
{
this.evt = evt;
this.state = state;
this.sourceState = state;
};
/**
* Variable: consumed
*
* Holds the consumed state of this event.
*/
mxMouseEvent.prototype.consumed = false;
/**
* Variable: evt
*
* Holds the inner event object.
*/
mxMouseEvent.prototype.evt = null;
/**
* Variable: graphX
*
* Holds the x-coordinate of the event in the graph. This value is set in
* <mxGraph.fireMouseEvent>.
*/
mxMouseEvent.prototype.graphX = null;
/**
* Variable: graphY
*
* Holds the y-coordinate of the event in the graph. This value is set in
* <mxGraph.fireMouseEvent>.
*/
mxMouseEvent.prototype.graphY = null;
/**
* Variable: state
*
* Holds the optional <mxCellState> associated with this event.
*/
mxMouseEvent.prototype.state = null;
/**
* Variable: sourceState
*
* Holds the <mxCellState> that was passed to the constructor. This can be
* different from <state> depending on the result of <mxGraph.getEventState>.
*/
mxMouseEvent.prototype.sourceState = null;
/**
* Function: getEvent
*
* Returns <evt>.
*/
mxMouseEvent.prototype.getEvent = function()
{
return this.evt;
};
/**
* Function: getSource
*
* Returns the target DOM element using <mxEvent.getSource> for <evt>.
*/
mxMouseEvent.prototype.getSource = function()
{
return mxEvent.getSource(this.evt);
};
/**
* Function: isSource
*
* Returns true if the given <mxShape> is the source of <evt>.
*/
mxMouseEvent.prototype.isSource = function(shape)
{
if (shape != null)
{
return mxUtils.isAncestorNode(shape.node, this.getSource());
}
return false;
};
/**
* Function: getX
*
* Returns <evt.clientX>.
*/
mxMouseEvent.prototype.getX = function()
{
return mxEvent.getClientX(this.getEvent());
};
/**
* Function: getY
*
* Returns <evt.clientY>.
*/
mxMouseEvent.prototype.getY = function()
{
return mxEvent.getClientY(this.getEvent());
};
/**
* Function: getGraphX
*
* Returns <graphX>.
*/
mxMouseEvent.prototype.getGraphX = function()
{
return this.graphX;
};
/**
* Function: getGraphY
*
* Returns <graphY>.
*/
mxMouseEvent.prototype.getGraphY = function()
{
return this.graphY;
};
/**
* Function: getState
*
* Returns <state>.
*/
mxMouseEvent.prototype.getState = function()
{
return this.state;
};
/**
* Function: getCell
*
* Returns the <mxCell> in <state> is not null.
*/
mxMouseEvent.prototype.getCell = function()
{
var state = this.getState();
if (state != null)
{
return state.cell;
}
return null;
};
/**
* Function: isPopupTrigger
*
* Returns true if the event is a popup trigger.
*/
mxMouseEvent.prototype.isPopupTrigger = function()
{
return mxEvent.isPopupTrigger(this.getEvent());
};
/**
* Function: isConsumed
*
* Returns <consumed>.
*/
mxMouseEvent.prototype.isConsumed = function()
{
return this.consumed;
};
/**
* Function: consume
*
* Sets <consumed> to true and invokes preventDefault on the native event
* if such a method is defined. This is used mainly to avoid the cursor from
* being changed to a text cursor in Webkit. You can use the preventDefault
* flag to disable this functionality.
*
* Parameters:
*
* preventDefault - Specifies if the native event should be canceled. Default
* is true.
*/
mxMouseEvent.prototype.consume = function(preventDefault)
{
preventDefault = (preventDefault != null) ? preventDefault : true;
if (preventDefault && this.evt.preventDefault)
{
this.evt.preventDefault();
}
// Workaround for images being dragged in IE
// Does not change returnValue in Opera
if (mxClient.IS_IE)
{
this.evt.returnValue = true;
}
// Sets local consumed state
this.consumed = true;
};