OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Brian Grinstead All rights reserved. | 2 * Copyright (C) 2011 Brian Grinstead All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 /** @type {!Map.<string, !WebInspector.Spectrum.Palette>} */ | 106 /** @type {!Map.<string, !WebInspector.Spectrum.Palette>} */ |
107 this._palettes = new Map(); | 107 this._palettes = new Map(); |
108 this._palettePanel = this.contentElement.createChild("div", "palette-panel")
; | 108 this._palettePanel = this.contentElement.createChild("div", "palette-panel")
; |
109 this._palettePanelShowing = false; | 109 this._palettePanelShowing = false; |
110 this._paletteContainer = this.contentElement.createChild("div", "spectrum-pa
lette"); | 110 this._paletteContainer = this.contentElement.createChild("div", "spectrum-pa
lette"); |
111 this._paletteContainer.addEventListener("contextmenu", this._showPaletteColo
rContextMenu.bind(this, -1)); | 111 this._paletteContainer.addEventListener("contextmenu", this._showPaletteColo
rContextMenu.bind(this, -1)); |
112 WebInspector.installDragHandle(this._paletteContainer, this._paletteDragStar
t.bind(this), this._paletteDrag.bind(this), this._paletteDragEnd.bind(this), "de
fault"); | 112 WebInspector.installDragHandle(this._paletteContainer, this._paletteDragStar
t.bind(this), this._paletteDrag.bind(this), this._paletteDragEnd.bind(this), "de
fault"); |
113 var paletteSwitcher = this.contentElement.createChild("div", "spectrum-palet
te-switcher spectrum-switcher"); | 113 var paletteSwitcher = this.contentElement.createChild("div", "spectrum-palet
te-switcher spectrum-switcher"); |
114 appendSwitcherIcon(paletteSwitcher); | 114 appendSwitcherIcon(paletteSwitcher); |
115 paletteSwitcher.addEventListener("click", this._togglePalettePanel.bind(this
, true)); | 115 paletteSwitcher.addEventListener("click", this._togglePalettePanel.bind(this
, true)); |
| 116 |
| 117 this._deleteIconToolbar = new WebInspector.Toolbar(); |
| 118 this._deleteIconToolbar.element.classList.add("delete-color-toolbar"); |
| 119 this._deleteButton = new WebInspector.ToolbarButton("", "garbage-collect-too
lbar-item"); |
| 120 this._deleteIconToolbar.appendToolbarItem(this._deleteButton); |
| 121 |
116 var overlay = this.contentElement.createChild("div", "spectrum-overlay fill"
); | 122 var overlay = this.contentElement.createChild("div", "spectrum-overlay fill"
); |
117 overlay.addEventListener("click", this._togglePalettePanel.bind(this, false)
); | 123 overlay.addEventListener("click", this._togglePalettePanel.bind(this, false)
); |
118 | 124 |
119 this._addColorToolbar = new WebInspector.Toolbar(); | 125 this._addColorToolbar = new WebInspector.Toolbar(); |
120 this._addColorToolbar.element.classList.add("add-color-toolbar"); | 126 this._addColorToolbar.element.classList.add("add-color-toolbar"); |
121 var addColorButton = new WebInspector.ToolbarButton(WebInspector.UIString("A
dd to palette"), "add-toolbar-item"); | 127 var addColorButton = new WebInspector.ToolbarButton(WebInspector.UIString("A
dd to palette"), "add-toolbar-item"); |
122 addColorButton.addEventListener("click", this._addColorToCustomPalette.bind(
this)); | 128 addColorButton.addEventListener("click", this._addColorToCustomPalette.bind(
this)); |
123 this._addColorToolbar.appendToolbarItem(addColorButton); | 129 this._addColorToolbar.appendToolbarItem(addColorButton); |
124 | 130 |
125 new WebInspector.Spectrum.PaletteGenerator(this._generatedPaletteLoaded.bind
(this)); | 131 new WebInspector.Spectrum.PaletteGenerator(this._generatedPaletteLoaded.bind
(this)); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 colorElement.addEventListener("contextmenu", this._showPaletteCo
lorContextMenu.bind(this, i)); | 257 colorElement.addEventListener("contextmenu", this._showPaletteCo
lorContextMenu.bind(this, i)); |
252 } | 258 } |
253 this._paletteContainer.appendChild(colorElement); | 259 this._paletteContainer.appendChild(colorElement); |
254 } | 260 } |
255 this._paletteContainerMutable = palette.mutable; | 261 this._paletteContainerMutable = palette.mutable; |
256 | 262 |
257 var numItems = palette.colors.length; | 263 var numItems = palette.colors.length; |
258 if (palette.mutable) | 264 if (palette.mutable) |
259 numItems++; | 265 numItems++; |
260 var rowsNeeded = Math.max(1, Math.ceil(numItems / WebInspector.Spectrum.
_itemsPerPaletteRow)); | 266 var rowsNeeded = Math.max(1, Math.ceil(numItems / WebInspector.Spectrum.
_itemsPerPaletteRow)); |
261 if (palette.mutable) | 267 if (palette.mutable) { |
262 this.contentElement.appendChild(this._addColorToolbar.element); | 268 this._paletteContainer.appendChild(this._addColorToolbar.element); |
263 else | 269 this._paletteContainer.appendChild(this._deleteIconToolbar.element); |
| 270 } else { |
264 this._addColorToolbar.element.remove(); | 271 this._addColorToolbar.element.remove(); |
| 272 this._deleteIconToolbar.element.remove(); |
| 273 } |
265 | 274 |
266 this._togglePalettePanel(false); | 275 this._togglePalettePanel(false); |
267 var paletteColorHeight = 12; | 276 var paletteColorHeight = 12; |
268 var paletteMargin = 12; | 277 var paletteMargin = 12; |
269 this.element.style.height = (this._paletteContainer.offsetTop + paletteM
argin + (paletteColorHeight + paletteMargin) * rowsNeeded) + "px"; | 278 this.element.style.height = (this._paletteContainer.offsetTop + paletteM
argin + (paletteColorHeight + paletteMargin) * rowsNeeded) + "px"; |
270 this.dispatchEventToListeners(WebInspector.Spectrum.Events.SizeChanged); | 279 this.dispatchEventToListeners(WebInspector.Spectrum.Events.SizeChanged); |
271 }, | 280 }, |
272 | 281 |
273 /** | 282 /** |
274 * @param {!Event} e | 283 * @param {!Event} e |
275 * @return {number} | 284 * @return {number} |
276 */ | 285 */ |
277 _slotIndexForEvent: function(e) | 286 _slotIndexForEvent: function(e) |
278 { | 287 { |
279 var localX = e.pageX - this._paletteContainer.totalOffsetLeft(); | 288 var localX = e.pageX - this._paletteContainer.totalOffsetLeft(); |
280 var localY = e.pageY - this._paletteContainer.totalOffsetTop(); | 289 var localY = e.pageY - this._paletteContainer.totalOffsetTop(); |
281 var col = Math.min(localX / WebInspector.Spectrum._colorChipSize | 0, We
bInspector.Spectrum._itemsPerPaletteRow - 1); | 290 var col = Math.min(localX / WebInspector.Spectrum._colorChipSize | 0, We
bInspector.Spectrum._itemsPerPaletteRow - 1); |
282 var row = (localY / WebInspector.Spectrum._colorChipSize) | 0; | 291 var row = (localY / WebInspector.Spectrum._colorChipSize) | 0; |
283 return Math.min(row * WebInspector.Spectrum._itemsPerPaletteRow + col, t
his._paletteContainer.children.length - 1); | 292 return Math.min(row * WebInspector.Spectrum._itemsPerPaletteRow + col, t
his._customPaletteSetting.get().colors.length - 1); |
284 }, | 293 }, |
285 | 294 |
286 /** | 295 /** |
| 296 * @param {!Event} e |
| 297 * @return {boolean} |
| 298 */ |
| 299 _isDraggingToBin: function(e) |
| 300 { |
| 301 return e.pageX > this._deleteIconToolbar.element.totalOffsetLeft(); |
| 302 }, |
| 303 |
| 304 /** |
287 * @param {!Event} e | 305 * @param {!Event} e |
288 * @return {boolean} | 306 * @return {boolean} |
289 */ | 307 */ |
290 _paletteDragStart: function(e) | 308 _paletteDragStart: function(e) |
291 { | 309 { |
292 var element = e.deepElementFromPoint(); | 310 var element = e.deepElementFromPoint(); |
293 if (!element.__mutable) | 311 if (!element || !element.__mutable) |
294 return false; | 312 return false; |
295 | 313 |
296 var index = this._slotIndexForEvent(e); | 314 var index = this._slotIndexForEvent(e); |
297 this._dragElement = element; | 315 this._dragElement = element; |
298 this._dragHotSpotX = e.pageX - (index % WebInspector.Spectrum._itemsPerP
aletteRow) * WebInspector.Spectrum._colorChipSize; | 316 this._dragHotSpotX = e.pageX - (index % WebInspector.Spectrum._itemsPerP
aletteRow) * WebInspector.Spectrum._colorChipSize; |
299 this._dragHotSpotY = e.pageY - (index / WebInspector.Spectrum._itemsPerP
aletteRow | 0) * WebInspector.Spectrum._colorChipSize; | 317 this._dragHotSpotY = e.pageY - (index / WebInspector.Spectrum._itemsPerP
aletteRow | 0) * WebInspector.Spectrum._colorChipSize; |
| 318 |
| 319 this._deleteIconToolbar.element.classList.add("dragging"); |
300 return true; | 320 return true; |
301 }, | 321 }, |
302 | 322 |
303 /** | 323 /** |
304 * @param {!Event} e | 324 * @param {!Event} e |
305 */ | 325 */ |
306 _paletteDrag: function(e) | 326 _paletteDrag: function(e) |
307 { | 327 { |
308 if (e.pageX < this._paletteContainer.totalOffsetLeft() || e.pageY < this
._paletteContainer.totalOffsetTop()) | 328 if (e.pageX < this._paletteContainer.totalOffsetLeft() || e.pageY < this
._paletteContainer.totalOffsetTop()) |
309 return; | 329 return; |
310 var newIndex = this._slotIndexForEvent(e); | 330 var newIndex = this._slotIndexForEvent(e); |
311 var offsetX = e.pageX - (newIndex % WebInspector.Spectrum._itemsPerPalet
teRow) * WebInspector.Spectrum._colorChipSize; | 331 var offsetX = e.pageX - (newIndex % WebInspector.Spectrum._itemsPerPalet
teRow) * WebInspector.Spectrum._colorChipSize; |
312 var offsetY = e.pageY - (newIndex / WebInspector.Spectrum._itemsPerPalet
teRow | 0) * WebInspector.Spectrum._colorChipSize; | 332 var offsetY = e.pageY - (newIndex / WebInspector.Spectrum._itemsPerPalet
teRow | 0) * WebInspector.Spectrum._colorChipSize; |
313 | 333 |
314 this._dragElement.style.transform = "translateX(" + (offsetX - this._dra
gHotSpotX) + "px) translateY(" + (offsetY - this._dragHotSpotY) + "px)"; | 334 var isDeleting = this._isDraggingToBin(e); |
| 335 this._deleteIconToolbar.element.classList.toggle("delete-color-toolbar-a
ctive", isDeleting); |
| 336 var dragElementTransform = "translateX(" + (offsetX - this._dragHotSpotX
) + "px) translateY(" + (offsetY - this._dragHotSpotY) + "px)"; |
| 337 this._dragElement.style.transform = isDeleting ? dragElementTransform +
" scale(0.8)" : dragElementTransform; |
315 var children = Array.prototype.slice.call(this._paletteContainer.childre
n); | 338 var children = Array.prototype.slice.call(this._paletteContainer.childre
n); |
316 var index = children.indexOf(this._dragElement); | 339 var index = children.indexOf(this._dragElement); |
317 /** @type {!Map.<!Element, {left: number, top: number}>} */ | 340 /** @type {!Map.<!Element, {left: number, top: number}>} */ |
318 var swatchOffsets = new Map(); | 341 var swatchOffsets = new Map(); |
319 for (var swatch of children) | 342 for (var swatch of children) |
320 swatchOffsets.set(swatch, swatch.totalOffset()); | 343 swatchOffsets.set(swatch, swatch.totalOffset()); |
321 | 344 |
322 if (index !== newIndex) | 345 if (index !== newIndex) |
323 this._paletteContainer.insertBefore(this._dragElement, children[newI
ndex > index ? newIndex + 1 : newIndex]); | 346 this._paletteContainer.insertBefore(this._dragElement, children[newI
ndex > index ? newIndex + 1 : newIndex]); |
324 | 347 |
325 for (var swatch of children) { | 348 for (var swatch of children) { |
326 if (swatch === this._dragElement) | 349 if (swatch === this._dragElement) |
327 continue; | 350 continue; |
328 var before = swatchOffsets.get(swatch); | 351 var before = swatchOffsets.get(swatch); |
329 var after = swatch.totalOffset(); | 352 var after = swatch.totalOffset(); |
330 if (before.left !== after.left || before.top !== after.top) { | 353 if (before.left !== after.left || before.top !== after.top) { |
331 swatch.animate([ | 354 swatch.animate([ |
332 { transform: "translateX(" + (before.left - after.left) + "p
x) translateY(" + (before.top - after.top) + "px)" }, | 355 { transform: "translateX(" + (before.left - after.left) + "p
x) translateY(" + (before.top - after.top) + "px)" }, |
333 { transform: "none" }], { duration: 100, easing: "cubic-bezi
er(0, 0, 0.2, 1)" }); | 356 { transform: "none" }], { duration: 100, easing: "cubic-bezi
er(0, 0, 0.2, 1)" }); |
334 } | 357 } |
335 } | 358 } |
336 }, | 359 }, |
337 | 360 |
338 /** | 361 /** |
339 * @param {!Event} e | 362 * @param {!Event} e |
340 */ | 363 */ |
341 _paletteDragEnd: function(e) | 364 _paletteDragEnd: function(e) |
342 { | 365 { |
| 366 if (this._isDraggingToBin(e)) |
| 367 this._dragElement.remove(); |
343 this._dragElement.style.removeProperty("transform"); | 368 this._dragElement.style.removeProperty("transform"); |
344 var children = this._paletteContainer.children; | 369 var children = this._paletteContainer.children; |
345 var colors = []; | 370 var colors = []; |
346 for (var i = 0; i < children.length; ++i) { | 371 for (var i = 0; i < children.length; ++i) { |
347 if (children[i].__color) | 372 if (children[i].__color) |
348 colors.push(children[i].__color); | 373 colors.push(children[i].__color); |
349 } | 374 } |
350 var palette = this._customPaletteSetting.get(); | 375 var palette = this._customPaletteSetting.get(); |
351 palette.colors = colors; | 376 palette.colors = colors; |
352 this._customPaletteSetting.set(palette); | 377 this._customPaletteSetting.set(palette); |
353 this._showPalette(this._customPaletteSetting.get(), false); | 378 this._showPalette(this._customPaletteSetting.get(), false); |
| 379 |
| 380 this._deleteIconToolbar.element.classList.remove("dragging"); |
| 381 this._deleteIconToolbar.element.classList.remove("delete-color-toolbar-a
ctive"); |
| 382 this._deleteButton.setToggled(false); |
354 }, | 383 }, |
355 | 384 |
356 /** | 385 /** |
357 * @param {!WebInspector.Spectrum.Palette} generatedPalette | 386 * @param {!WebInspector.Spectrum.Palette} generatedPalette |
358 */ | 387 */ |
359 _generatedPaletteLoaded: function(generatedPalette) | 388 _generatedPaletteLoaded: function(generatedPalette) |
360 { | 389 { |
361 if (generatedPalette.colors.length) | 390 if (generatedPalette.colors.length) |
362 this._palettes.set(generatedPalette.title, generatedPalette); | 391 this._palettes.set(generatedPalette.title, generatedPalette); |
363 this._palettes.set(WebInspector.Spectrum.MaterialPalette.title, WebInspe
ctor.Spectrum.MaterialPalette); | 392 this._palettes.set(WebInspector.Spectrum.MaterialPalette.title, WebInspe
ctor.Spectrum.MaterialPalette); |
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
905 "#8BC34A", | 934 "#8BC34A", |
906 "#CDDC39", | 935 "#CDDC39", |
907 "#FFEB3B", | 936 "#FFEB3B", |
908 "#FFC107", | 937 "#FFC107", |
909 "#FF9800", | 938 "#FF9800", |
910 "#FF5722", | 939 "#FF5722", |
911 "#795548", | 940 "#795548", |
912 "#9E9E9E", | 941 "#9E9E9E", |
913 "#607D8B" | 942 "#607D8B" |
914 ]}; | 943 ]}; |
OLD | NEW |