OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 } | 335 } |
336 info.icon = icon; | 336 info.icon = icon; |
337 } | 337 } |
338 | 338 |
339 /** | 339 /** |
340 * @param {string} url | 340 * @param {string} url |
341 * @param {string=} text | 341 * @param {string=} text |
342 * @param {string=} className | 342 * @param {string=} className |
343 * @param {number=} lineNumber | 343 * @param {number=} lineNumber |
344 * @param {number=} columnNumber | 344 * @param {number=} columnNumber |
| 345 * @param {boolean=} preventClick |
345 * @return {!Element} | 346 * @return {!Element} |
346 */ | 347 */ |
347 static linkifyURL(url, text, className, lineNumber, columnNumber) { | 348 static linkifyURL(url, text, className, lineNumber, columnNumber, preventClick
) { |
348 if (!url || url.trim().toLowerCase().startsWith('javascript:')) { | 349 if (!url || url.trim().toLowerCase().startsWith('javascript:')) { |
349 var element = createElementWithClass('span', className); | 350 var element = createElementWithClass('span', className); |
350 element.textContent = text || url || Common.UIString('(unknown)'); | 351 element.textContent = text || url || Common.UIString('(unknown)'); |
351 return element; | 352 return element; |
352 } | 353 } |
353 | 354 |
354 var linkText = text || Bindings.displayNameForURL(url); | 355 var linkText = text || Bindings.displayNameForURL(url); |
355 if (typeof lineNumber === 'number' && !text) | 356 if (typeof lineNumber === 'number' && !text) |
356 linkText += ':' + (lineNumber + 1); | 357 linkText += ':' + (lineNumber + 1); |
357 var title = linkText !== url ? url : ''; | 358 var title = linkText !== url ? url : ''; |
358 var link = Components.Linkifier._createLink(linkText.trimMiddle(150), classN
ame || '', title, url); | 359 var link = Components.Linkifier._createLink(linkText.trimMiddle(150), classN
ame || '', title, url, preventClick); |
359 var info = Components.Linkifier._linkInfo(link); | 360 var info = Components.Linkifier._linkInfo(link); |
360 if (typeof lineNumber === 'number') | 361 if (typeof lineNumber === 'number') |
361 info.lineNumber = lineNumber; | 362 info.lineNumber = lineNumber; |
362 if (typeof columnNumber === 'number') | 363 if (typeof columnNumber === 'number') |
363 info.columnNumber = columnNumber; | 364 info.columnNumber = columnNumber; |
364 return link; | 365 return link; |
365 } | 366 } |
366 | 367 |
367 /** | 368 /** |
368 * @param {!Object} revealable | 369 * @param {!Object} revealable |
369 * @param {string} text | 370 * @param {string} text |
370 * @param {string=} fallbackHref | 371 * @param {string=} fallbackHref |
371 * @return {!Element} | 372 * @return {!Element} |
372 */ | 373 */ |
373 static linkifyRevealable(revealable, text, fallbackHref) { | 374 static linkifyRevealable(revealable, text, fallbackHref) { |
374 var link = Components.Linkifier._createLink( | 375 var link = Components.Linkifier._createLink( |
375 text.trimMiddle(Components.Linkifier.MaxLengthForDisplayedURLs), '', und
efined, fallbackHref); | 376 text.trimMiddle(Components.Linkifier.MaxLengthForDisplayedURLs), '', und
efined, fallbackHref); |
376 Components.Linkifier._linkInfo(link).revealable = revealable; | 377 Components.Linkifier._linkInfo(link).revealable = revealable; |
377 return link; | 378 return link; |
378 } | 379 } |
379 | 380 |
380 /** | 381 /** |
381 * @param {string} text | 382 * @param {string} text |
382 * @param {string} className | 383 * @param {string} className |
383 * @param {string=} title | 384 * @param {string=} title |
384 * @param {string=} href | 385 * @param {string=} href |
| 386 * @param {boolean=} preventClick |
385 * @returns{!Element} | 387 * @returns{!Element} |
386 */ | 388 */ |
387 static _createLink(text, className, title, href) { | 389 static _createLink(text, className, title, href, preventClick) { |
388 var link = createElementWithClass('a', className); | 390 var link = createElementWithClass('a', className); |
389 link.classList.add('webkit-html-resource-link'); | 391 link.classList.add('webkit-html-resource-link'); |
390 if (title) | 392 if (title) |
391 link.title = title; | 393 link.title = title; |
392 if (href) | 394 if (href) |
393 link.href = href; | 395 link.href = href; |
394 link.textContent = text; | 396 link.textContent = text; |
395 link[Components.Linkifier._infoSymbol] = { | 397 link[Components.Linkifier._infoSymbol] = { |
396 icon: null, | 398 icon: null, |
397 enableDecorator: false, | 399 enableDecorator: false, |
398 uiLocation: null, | 400 uiLocation: null, |
399 liveLocation: null, | 401 liveLocation: null, |
400 url: href || null, | 402 url: href || null, |
401 lineNumber: null, | 403 lineNumber: null, |
402 columnNumber: null, | 404 columnNumber: null, |
403 revealable: null, | 405 revealable: null, |
404 fallback: null | 406 fallback: null |
405 }; | 407 }; |
406 link.addEventListener('click', Components.Linkifier._handleClick, false); | 408 if (preventClick) |
| 409 link.addEventListener('click', event => event.consume(true), false); |
| 410 else |
| 411 link.addEventListener('click', Components.Linkifier._handleClick, false); |
407 return link; | 412 return link; |
408 } | 413 } |
409 | 414 |
410 /** | 415 /** |
411 * @param {?Element} link | 416 * @param {?Element} link |
412 * @return {?Components._LinkInfo} | 417 * @return {?Components._LinkInfo} |
413 */ | 418 */ |
414 static _linkInfo(link) { | 419 static _linkInfo(link) { |
415 return /** @type {?Components._LinkInfo} */ (link ? link[Components.Linkifie
r._infoSymbol] || null : null); | 420 return /** @type {?Components._LinkInfo} */ (link ? link[Components.Linkifie
r._infoSymbol] || null : null); |
416 } | 421 } |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 contextMenu.appendItem(Common.UIString('Save'), save.bind(null, false)); | 772 contextMenu.appendItem(Common.UIString('Save'), save.bind(null, false)); |
768 | 773 |
769 if (contentProvider instanceof Workspace.UISourceCode) { | 774 if (contentProvider instanceof Workspace.UISourceCode) { |
770 var uiSourceCode = /** @type {!Workspace.UISourceCode} */ (contentProvider
); | 775 var uiSourceCode = /** @type {!Workspace.UISourceCode} */ (contentProvider
); |
771 if (uiSourceCode.project().type() !== Workspace.projectTypes.FileSystem && | 776 if (uiSourceCode.project().type() !== Workspace.projectTypes.FileSystem && |
772 uiSourceCode.project().type() !== Workspace.projectTypes.Snippets) | 777 uiSourceCode.project().type() !== Workspace.projectTypes.Snippets) |
773 contextMenu.appendItem(Common.UIString.capitalize('Save ^as...'), save.b
ind(null, true)); | 778 contextMenu.appendItem(Common.UIString.capitalize('Save ^as...'), save.b
ind(null, true)); |
774 } | 779 } |
775 } | 780 } |
776 }; | 781 }; |
OLD | NEW |