Commit 48a2fcd1 authored by Joshua Gould's avatar Joshua Gould

resize cursor tolerance

parent 64b3343f
morpheus.VectorTrackHeader = function(project, name, isColumns, controller) { morpheus.VectorTrackHeader = function (project, name, isColumns, controller) {
morpheus.AbstractCanvas.call(this); morpheus.AbstractCanvas.call(this);
this.project = project; this.project = project;
this.name = name; this.name = name;
...@@ -16,38 +16,40 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) { ...@@ -16,38 +16,40 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) {
var _this = this; var _this = this;
this.setBounds({ this.setBounds({
height : this.defaultFontHeight height: this.defaultFontHeight
+ morpheus.VectorTrackHeader.FONT_OFFSET + morpheus.VectorTrackHeader.FONT_OFFSET
}); });
function getResizeCursor(pos) { function getResizeCursor(pos) {
if (isColumns) { if (isColumns) {
if (pos.y >= (_this.getUnscaledHeight() - 3)) { if (pos.y < 3 || pos.y >= (_this.getUnscaledHeight() - 3)) {
return 'ns-resize'; return 'ns-resize';
} }
} }
if (pos.x >= (_this.getUnscaledWidth() - 3)) { if (pos.x < 3 || pos.x >= (_this.getUnscaledWidth() - 3)) {
return 'ew-resize'; return 'ew-resize';
} }
} }
var mouseMove = function(event) {
var mouseMove = function (event) {
if (!morpheus.CanvasUtil.dragging) { if (!morpheus.CanvasUtil.dragging) {
var pos = morpheus.CanvasUtil.getMousePos(event.target, event); var pos = morpheus.CanvasUtil.getMousePos(event.target, event);
var cursor = getResizeCursor(pos); var cursor = getResizeCursor(pos);
canvas.style.cursor = !cursor ? 'default' : cursor; canvas.style.cursor = !cursor ? 'default' : cursor;
//document.body.style.cursor = !cursor ? 'default' : cursor;
_this.isMouseOver = true; _this.isMouseOver = true;
_this.repaint(); _this.repaint();
} }
}; };
var mouseExit = function(e) { var mouseExit = function (e) {
if (!morpheus.CanvasUtil.dragging) { if (!morpheus.CanvasUtil.dragging) {
canvas.style.cursor = 'default'; canvas.style.cursor = 'default';
} }
_this.isMouseOver = false; _this.isMouseOver = false;
_this.repaint(); _this.repaint();
}; };
var showPopup = function(e) { var showPopup = function (e) {
controller.setSelectedTrack(_this.name, isColumns); controller.setSelectedTrack(_this.name, isColumns);
var track = controller.getTrack(_this.name, isColumns); var track = controller.getTrack(_this.name, isColumns);
if (!track) { if (!track) {
...@@ -65,7 +67,7 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) { ...@@ -65,7 +67,7 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) {
}; };
this.selectedBackgroundColor = '#c8c8c8'; this.selectedBackgroundColor = '#c8c8c8';
this.backgroundColor = '#f9f9f9'; this.backgroundColor = '#f9f9f9';
$(this.canvas).css('background-color', this.backgroundColor).on( $(this.canvas).css({'background-color': this.backgroundColor}).on(
'mousemove.morpheus', mouseMove).on('mouseout.morpheus', mouseExit) 'mousemove.morpheus', mouseMove).on('mouseout.morpheus', mouseExit)
.on('mouseenter.morpheus', mouseMove); .on('mouseenter.morpheus', mouseMove);
...@@ -84,8 +86,8 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) { ...@@ -84,8 +86,8 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) {
// }, 100); // }, 100);
// $(canvas).on('mouseout', throttled).on('mousemove', throttled); // $(canvas).on('mouseout', throttled).on('mousemove', throttled);
this.hammer = morpheus.Util this.hammer = morpheus.Util
.hammer(canvas, [ 'pan', 'tap', 'longpress' ]) .hammer(canvas, ['pan', 'tap', 'longpress'])
.on('longpress', function(event) { .on('longpress', function (event) {
event.preventDefault(); event.preventDefault();
controller.setSelectedTrack(_this.name, isColumns); controller.setSelectedTrack(_this.name, isColumns);
var track = controller.getTrack(_this.name, isColumns); var track = controller.getTrack(_this.name, isColumns);
...@@ -93,7 +95,7 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) { ...@@ -93,7 +95,7 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) {
}) })
.on( .on(
'panend', 'panend',
function(event) { function (event) {
_this.isMouseOver = false; _this.isMouseOver = false;
morpheus.CanvasUtil.dragging = false; morpheus.CanvasUtil.dragging = false;
canvas.style.cursor = 'default'; canvas.style.cursor = 'default';
...@@ -110,7 +112,7 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) { ...@@ -110,7 +112,7 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) {
}) })
.on( .on(
'panstart', 'panstart',
function(event) { function (event) {
_this.isMouseOver = false; _this.isMouseOver = false;
if (morpheus.CanvasUtil.dragging) { if (morpheus.CanvasUtil.dragging) {
return; return;
...@@ -147,7 +149,7 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) { ...@@ -147,7 +149,7 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) {
}) })
.on( .on(
'panmove', 'panmove',
function(event) { function (event) {
_this.isMouseOver = false; _this.isMouseOver = false;
if (resizeCursor) { if (resizeCursor) {
var width; var width;
...@@ -219,7 +221,7 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) { ...@@ -219,7 +221,7 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) {
}) })
.on( .on(
'tap', 'tap',
function(event) { function (event) {
if (morpheus.Util.IS_MAC && event.srcEvent.ctrlKey) { // right-click if (morpheus.Util.IS_MAC && event.srcEvent.ctrlKey) { // right-click
return; return;
} }
...@@ -268,17 +270,17 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) { ...@@ -268,17 +270,17 @@ morpheus.VectorTrackHeader = function(project, name, isColumns, controller) {
}; };
morpheus.VectorTrackHeader.FONT_OFFSET = 2; morpheus.VectorTrackHeader.FONT_OFFSET = 2;
morpheus.VectorTrackHeader.prototype = { morpheus.VectorTrackHeader.prototype = {
selected : false, selected: false,
isMouseOver : false, isMouseOver: false,
defaultFontHeight : 11, defaultFontHeight: 11,
dispose : function() { dispose: function () {
morpheus.AbstractCanvas.prototype.dispose.call(this); morpheus.AbstractCanvas.prototype.dispose.call(this);
$(this.canvas) $(this.canvas)
.off( .off(
'contextmenu.morpheus mousemove.morpheus mouseout.morpheus mouseenter.morpheus'); 'contextmenu.morpheus mousemove.morpheus mouseout.morpheus mouseenter.morpheus');
this.hammer.destroy(); this.hammer.destroy();
}, },
getPreferredSize : function() { getPreferredSize: function () {
var size = this.getPrintSize(); var size = this.getPrintSize();
size.width += 22; size.width += 22;
...@@ -304,21 +306,21 @@ morpheus.VectorTrackHeader.prototype = { ...@@ -304,21 +306,21 @@ morpheus.VectorTrackHeader.prototype = {
// } // }
return size; return size;
}, },
getPrintSize : function() { getPrintSize: function () {
var context = this.canvas.getContext('2d'); var context = this.canvas.getContext('2d');
context.font = this.defaultFontHeight + 'px ' context.font = this.defaultFontHeight + 'px '
+ morpheus.CanvasUtil.FONT_NAME; + morpheus.CanvasUtil.FONT_NAME;
var width = 4 + context.measureText(this.name).width; var width = 4 + context.measureText(this.name).width;
return { return {
width : width, width: width,
height : this.getUnscaledHeight() height: this.getUnscaledHeight()
}; };
}, },
getSortKeys : function() { getSortKeys: function () {
return this.isColumns ? this.project.getColumnSortKeys() : this.project return this.isColumns ? this.project.getColumnSortKeys() : this.project
.getRowSortKeys(); .getRowSortKeys();
}, },
setOrder : function(sortKeys) { setOrder: function (sortKeys) {
if (this.isColumns) { if (this.isColumns) {
this.project.setColumnSortKeys(morpheus.SortKey this.project.setColumnSortKeys(morpheus.SortKey
.keepExistingSortKeys(sortKeys, this.project .keepExistingSortKeys(sortKeys, this.project
...@@ -328,7 +330,7 @@ morpheus.VectorTrackHeader.prototype = { ...@@ -328,7 +330,7 @@ morpheus.VectorTrackHeader.prototype = {
sortKeys, this.project.getRowSortKeys()), false); sortKeys, this.project.getRowSortKeys()), false);
} }
}, },
setGroupBy : function(groupBy) { setGroupBy: function (groupBy) {
var existingGroupBy = this.isColumns ? this.project.groupColumns var existingGroupBy = this.isColumns ? this.project.groupColumns
: this.project.groupRows; : this.project.groupRows;
// see if already exists, if so remove it // see if already exists, if so remove it
...@@ -339,7 +341,7 @@ morpheus.VectorTrackHeader.prototype = { ...@@ -339,7 +341,7 @@ morpheus.VectorTrackHeader.prototype = {
break; break;
} }
} }
var newGroupBy = [ groupBy ]; var newGroupBy = [groupBy];
if (index !== -1) { if (index !== -1) {
newGroupBy = existingGroupBy; newGroupBy = existingGroupBy;
newGroupBy.splice(index, 1); newGroupBy.splice(index, 1);
...@@ -350,18 +352,18 @@ morpheus.VectorTrackHeader.prototype = { ...@@ -350,18 +352,18 @@ morpheus.VectorTrackHeader.prototype = {
this.project.setGroupRows(newGroupBy, true); this.project.setGroupRows(newGroupBy, true);
} }
}, },
setSelected : function(selected) { setSelected: function (selected) {
if (selected != this.selected) { if (selected != this.selected) {
this.selected = selected; this.selected = selected;
$(this.canvas) $(this.canvas)
.css( .css(
{ {
'background-color' : this.selected ? this.selectedBackgroundColor 'background-color': this.selected ? this.selectedBackgroundColor
: this.backgroundColor : this.backgroundColor
}); });
} }
}, },
setSortingStatus : function(sortKeys, sortKey, additionalSort, isGroupBy) { setSortingStatus: function (sortKeys, sortKey, additionalSort, isGroupBy) {
if (!isGroupBy) { if (!isGroupBy) {
if (sortKey.getSortOrder() == morpheus.SortKey.SortOrder.UNSORTED if (sortKey.getSortOrder() == morpheus.SortKey.SortOrder.UNSORTED
&& !additionalSort) { && !additionalSort) {
...@@ -371,7 +373,7 @@ morpheus.VectorTrackHeader.prototype = { ...@@ -371,7 +373,7 @@ morpheus.VectorTrackHeader.prototype = {
additionalSort = false; additionalSort = false;
} }
if (!additionalSort) { if (!additionalSort) {
sortKeys = [ sortKey ]; sortKeys = [sortKey];
} else { } else {
var sortKeyIndex = this.getSortKeyIndexForColumnName( var sortKeyIndex = this.getSortKeyIndexForColumnName(
sortKeys, sortKey.toString()); sortKeys, sortKey.toString());
...@@ -394,7 +396,7 @@ morpheus.VectorTrackHeader.prototype = { ...@@ -394,7 +396,7 @@ morpheus.VectorTrackHeader.prototype = {
} }
} }
}, },
getSortKeyIndexForColumnName : function(sortKeys, columnName) { getSortKeyIndexForColumnName: function (sortKeys, columnName) {
if (sortKeys != null) { if (sortKeys != null) {
for (var i = 0, size = sortKeys.length; i < size; i++) { for (var i = 0, size = sortKeys.length; i < size; i++) {
if (columnName === sortKeys[i].toString()) { if (columnName === sortKeys[i].toString()) {
...@@ -404,7 +406,7 @@ morpheus.VectorTrackHeader.prototype = { ...@@ -404,7 +406,7 @@ morpheus.VectorTrackHeader.prototype = {
} }
return -1; return -1;
}, },
print : function(clip, context) { print: function (clip, context) {
if (clip.height <= 6) { if (clip.height <= 6) {
return; return;
} }
...@@ -422,7 +424,7 @@ morpheus.VectorTrackHeader.prototype = { ...@@ -422,7 +424,7 @@ morpheus.VectorTrackHeader.prototype = {
context.fillStyle = morpheus.CanvasUtil.FONT_COLOR; context.fillStyle = morpheus.CanvasUtil.FONT_COLOR;
context.fillText(this.name, 0, 0); context.fillText(this.name, 0, 0);
}, },
draw : function(clip, context) { draw: function (clip, context) {
var sortKeys = this.getSortKeys(); var sortKeys = this.getSortKeys();
var name = this.name; var name = this.name;
var existingSortKeyIndex = this.getSortKeyIndexForColumnName(sortKeys, var existingSortKeyIndex = this.getSortKeyIndexForColumnName(sortKeys,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment