diff --git a/js/controller/PaletteController.js b/js/controller/PaletteController.js
index 8460e398..816f25d5 100644
--- a/js/controller/PaletteController.js
+++ b/js/controller/PaletteController.js
@@ -1,112 +1,113 @@
-/*
- * @provide pskl.Palette
- *
- * @require Constants
- * @require Events
- */
-$.namespace("pskl");
+(function () {
+ var ns = $.namespace("pskl.controller");
-pskl.Palette = (function() {
-
- var paletteRoot,
- paletteColors = [];
+ ns.PaletteController = function () {
+ this.paletteRoot = null;
+ this.paletteColors = [];
+ };
/**
* @private
*/
- var onPickerChange_ = function(evt, isPrimary) {
- var inputPicker = $(evt.target);
- $.publish(Events.COLOR_SELECTED, [inputPicker.val(), evt.data.isPrimary]);
- };
+ ns.PaletteController.prototype.onPickerChange_ = function(evt, isPrimary) {
+ var inputPicker = $(evt.target);
+ $.publish(Events.COLOR_SELECTED, [inputPicker.val(), evt.data.isPrimary]);
+ };
/**
- * @private
- */
- var createPalette_ = function (colors) {
+ * @private
+ */
+ ns.PaletteController.prototype.createPalette_ = function (colors) {
// Always adding transparent color
- paletteRoot.html('');
+ this.paletteRoot.html('');
for(var color in colors) {
if(color != Constants.TRANSPARENT_COLOR) {
- addColorToPalette_(color);
+ this.addColorToPalette_(color);
}
}
- };
+ };
- /**
- * @private
- */
- var addColorToPalette_ = function (color) {
- if (paletteColors.indexOf(color) == -1 && color != Constants.TRANSPARENT_COLOR) {
- var colorEl = document.createElement("li");
- colorEl.className = "palette-color";
- colorEl.setAttribute("data-color", color);
- colorEl.setAttribute("title", color);
- colorEl.style.background = color;
- paletteRoot[0].appendChild(colorEl);
- paletteColors.push(color);
- }
- };
+ /**
+ * @private
+ */
+ ns.PaletteController.prototype.addColorToPalette_ = function (color) {
+ if (this.paletteColors.indexOf(color) == -1 && color != Constants.TRANSPARENT_COLOR) {
+ var colorEl = document.createElement("li");
+ colorEl.className = "palette-color";
+ colorEl.setAttribute("data-color", color);
+ colorEl.setAttribute("title", color);
+ colorEl.style.background = color;
+ this.paletteRoot.append(colorEl);
+ this.paletteColors.push(color);
+ }
+ };
- /**
- * @private
- */
- var onPaletteColorClick_ = function (event) {
- var selectedColor = $(event.target).data("color");
- if (event.which == 1) { // left button
- updateColorPicker(selectedColor, $('#color-picker'));
- $.publish(Events.COLOR_SELECTED, [selectedColor, true]);
- } else if (event.which == 3) { // right button
- updateColorPicker(selectedColor, $('#secondary-color-picker'));
- $.publish(Events.COLOR_SELECTED, [selectedColor, false]);
- }
- };
+ /**
+ * @private
+ */
+ ns.PaletteController.prototype.onPaletteColorClick_ = function (event) {
+ var selectedColor = $(event.target).data("color");
+ if (event.which == 1) { // left button
+ this.updateColorPicker_(selectedColor, $('#color-picker'));
+ $.publish(Events.COLOR_SELECTED, [selectedColor, true]);
+ } else if (event.which == 3) { // right button
+ this.updateColorPicker_(selectedColor, $('#secondary-color-picker'));
+ $.publish(Events.COLOR_SELECTED, [selectedColor, false]);
+ }
+ };
- var updateColorPicker = function (color, colorPicker) {
- if (color == Constants.TRANSPARENT_COLOR) {
- // We can set the current palette color to transparent.
- // You can then combine this transparent color with an advanced
- // tool for customized deletions.
- // Eg: bucket + transparent: Delete a colored area
- // Stroke + transparent: hollow out the equivalent of a stroke
+ /**
+ * @private
+ */
+ ns.PaletteController.prototype.updateColorPicker_ = function (color, colorPicker) {
+ if (color == Constants.TRANSPARENT_COLOR) {
+ // We can set the current palette color to transparent.
+ // You can then combine this transparent color with an advanced
+ // tool for customized deletions.
+ // Eg: bucket + transparent: Delete a colored area
+ // Stroke + transparent: hollow out the equivalent of a stroke
- // The colorpicker can't be set to a transparent state.
- // We set its background to white and insert the
- // string "TRANSPARENT" to mimic this state:
- colorPicker[0].color.fromString("#fff");
- colorPicker.val(Constants.TRANSPARENT_COLOR);
- } else {
- colorPicker[0].color.fromString(color);
- }
- };
+ // The colorpicker can't be set to a transparent state.
+ // We set its background to white and insert the
+ // string "TRANSPARENT" to mimic this state:
+ colorPicker[0].color.fromString("#fff");
+ colorPicker.val(Constants.TRANSPARENT_COLOR);
+ } else {
+ colorPicker[0].color.fromString(color);
+ }
+ };
- return {
- init: function(framesheet) {
+ /**
+ * @public
+ */
+ ns.PaletteController.prototype.init = function(framesheet) {
- paletteRoot = $("#palette");
+ this.paletteRoot = $("#palette");
+ this.framesheet = framesheet;
- // Initialize palette:
- createPalette_(framesheet.getUsedColors());
+ // Initialize palette:
+ this.createPalette_(this.framesheet.getUsedColors());
- $.subscribe(Events.FRAMESHEET_RESET, function(evt) {
- createPalette_(framesheet.getUsedColors());
- });
+ $.subscribe(Events.FRAMESHEET_RESET, $.proxy(function(evt) {
+ this.createPalette_(this.framesheet.getUsedColors());
+ }, this));
- paletteRoot.mouseup(onPaletteColorClick_);
- $.subscribe(Events.COLOR_SELECTED, function(evt, color) {
- addColorToPalette_(color);
- });
+ this.paletteRoot.mouseup($.proxy(this.onPaletteColorClick_, this));
+
+ $.subscribe(Events.COLOR_SELECTED, $.proxy(function(evt, color) {
+ this.addColorToPalette_(color);
+ }, this));
- // Initialize colorpicker:
- var colorPicker = $('#color-picker');
- colorPicker.val(Constants.DEFAULT_PEN_COLOR);
- colorPicker.change({isPrimary : true}, onPickerChange_);
+ // Initialize colorpickers:
+ var colorPicker = $('#color-picker');
+ colorPicker.val(Constants.DEFAULT_PEN_COLOR);
+ colorPicker.change({isPrimary : true}, $.proxy(this.onPickerChange_, this));
- var secondaryColorPicker = $('#secondary-color-picker');
- secondaryColorPicker.val(Constants.TRANSPARENT_COLOR);
- secondaryColorPicker.change({isPrimary : false}, onPickerChange_);
+ var secondaryColorPicker = $('#secondary-color-picker');
+ secondaryColorPicker.val(Constants.TRANSPARENT_COLOR);
+ secondaryColorPicker.change({isPrimary : false}, $.proxy(this.onPickerChange_, this));
- }
};
})();
diff --git a/js/piskel.js b/js/piskel.js
index e98b80c7..968fd41a 100644
--- a/js/piskel.js
+++ b/js/piskel.js
@@ -71,7 +71,7 @@ $.namespace("pskl");
this.KeyboardEventService = new pskl.service.KeyboardEventService();
this.KeyboardEventService.init();
-
+
pskl.NotificationService.init();
this.localStorageService = new pskl.service.LocalStorageService(frameSheet);
this.localStorageService.init();
@@ -149,7 +149,8 @@ $.namespace("pskl");
var toolController = new pskl.controller.ToolController();
toolController.init();
- pskl.Palette.init(frameSheet);
+ var paletteController = new pskl.controller.PaletteController();
+ paletteController.init(frameSheet);
},
getFramesheetIdFromUrl : function() {