Files
iD/js/id/controller/controller.js
John Firebaugh da5239b98d Eliminate Map#{perform,undo,redo}
Map binds to history changes instead.
2012-12-03 18:37:41 -05:00

30 lines
736 B
JavaScript

// A controller holds a single action at a time and calls `.enter` and `.exit`
// to bind and unbind actions.
iD.Controller = function(map, history) {
var event = d3.dispatch('enter', 'exit');
var controller = { mode: null };
controller.enter = function(mode) {
mode.controller = controller;
mode.history = history;
mode.map = map;
if (controller.mode) {
controller.mode.exit();
event.exit(controller.mode);
}
mode.enter();
controller.mode = mode;
event.enter(mode);
};
controller.exit = function() {
controller.enter(iD.modes.Move);
};
controller.exit();
return d3.rebind(controller, event, 'on');
};