LayoutManager.coffee 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. define [
  2. "underscore",
  3. "libs/backbone",
  4. "libs/jquery-layout"
  5. "libs/jquery.storage"
  6. ], () ->
  7. class LayoutManager
  8. constructor: (@ide) ->
  9. _.extend @, Backbone.Events
  10. template = $("#editorLayoutTemplate").html()
  11. el = $(template)
  12. @ide.tabManager.addTab {
  13. id: "code"
  14. name: "Code"
  15. content: el
  16. active: true
  17. contract: true
  18. onShown: () =>
  19. @resizeAllSplitters()
  20. }
  21. $(window).resize () =>
  22. @refreshHeights()
  23. @refreshHeights()
  24. @initLayout()
  25. $(window).keypress (event)->
  26. if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19))
  27. return true
  28. event.preventDefault()
  29. return false
  30. @refreshHeights()
  31. initLayout: () ->
  32. options =
  33. spacing_open: 8
  34. spacing_closed: 16
  35. onresize: () =>
  36. @.trigger("resize")
  37. if (state = $.localStorage("layout.main"))?
  38. options.west =
  39. state.west
  40. $("#mainSplitter").layout options
  41. $(window).unload () ->
  42. $.localStorage("layout.main", $("#mainSplitter").layout().readState())
  43. refreshHeights: ->
  44. @setSplitterHeight()
  45. @setSectionsHeight()
  46. @setTopOffset()
  47. setSplitterHeight: () ->
  48. $("#mainSplitter").height($(window).height() - $(".navbar").outerHeight())
  49. setTopOffset: () ->
  50. $("#toolbar").css(top: $(".navbar").outerHeight())
  51. $("#tab-content").css(top: $(".navbar").outerHeight())
  52. setSectionsHeight: ()->
  53. $sections = $('#sections')
  54. $chatArea = $('#chatArea')
  55. availableSpace = $(window).height() - 40 - 20 - 10
  56. if $chatArea.is(':visible')
  57. availableSpace -= 200
  58. $sections.height(availableSpace)
  59. resizeAllSplitters : ->
  60. $("#mainSplitter").layout().resizeAll()
  61. $("#editorSplitter").layout().resizeAll()