Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. import com.intellij.concurrency.JobScheduler
  2. import com.intellij.openapi.Disposable
  3. import com.intellij.openapi.application.Application
  4. import com.intellij.openapi.application.ApplicationManager
  5. import com.intellij.openapi.ui.popup.Balloon
  6. import com.intellij.openapi.ui.popup.JBPopupFactory
  7. import com.intellij.openapi.util.Disposer
  8. import com.intellij.ui.Gray
  9. import com.intellij.ui.LightColors
  10. import com.intellij.ui.awt.RelativePoint
  11. import com.intellij.ui.components.JBLabel
  12. import com.intellij.util.ui.JBUI
  13.  
  14. import javax.swing.JLabel
  15. import javax.swing.JPanel
  16. import javax.swing.SwingUtilities
  17. import javax.swing.text.Position
  18. import java.awt.Color
  19. import java.awt.Dimension
  20. import java.awt.GridBagLayout
  21. import java.awt.Point
  22. import java.util.concurrent.ScheduledFuture
  23. import java.util.concurrent.TimeUnit
  24.  
  25. import static liveplugin.PluginUtil.*
  26.  
  27. class PlaceholderBalloon implements Disposable {
  28. private Balloon balloon
  29. private ScheduledFuture schedule
  30.  
  31. def init() {
  32. def label = new JBLabel("<html>Video placeholder<br/>Time: 00:00</html>")
  33. def panel = new JPanel().with {
  34. layout = new GridBagLayout()
  35.  
  36. def scale = 38 // Looks ok in full HD resolution.
  37. it.setPreferredSize(new Dimension((16 * scale).toInteger(), (9 * scale).toInteger()))
  38. it.background = LightColors.SLIGHTLY_GRAY
  39.  
  40. it.add(label)
  41. it
  42. }
  43. balloon = JBPopupFactory.getInstance().createBalloonBuilder(panel)
  44. .setFadeoutTime(0)
  45. .setFillColor(Gray.TRANSPARENT)
  46. .setShowCallout(false)
  47. .setBorderColor(Gray.TRANSPARENT)
  48. .setBorderInsets(JBUI.emptyInsets())
  49. .setAnimationCycle(0)
  50. .setCloseButtonEnabled(false)
  51. .setHideOnClickOutside(false)
  52. // .setDisposable(pluginDisposable)
  53. .setHideOnFrameResize(false)
  54. .setHideOnKeyOutside(false)
  55. .setBlockClicksThroughBalloon(true)
  56. .setHideOnAction(false)
  57. .setShadow(false)
  58. .createBalloon()
  59.  
  60. balloon.show(new RelativePoint(new Point(10_000, 0)), Balloon.Position.below)
  61.  
  62. def seconds = 0
  63. schedule = JobScheduler.scheduler.scheduleWithFixedDelay({
  64. invokeLaterOnEDT {
  65. seconds++
  66. def secondsString = (seconds % 60).toString()
  67. if (secondsString.length() == 1) secondsString = "0" + secondsString
  68. def minutesString = (seconds / 60).toInteger().toString()
  69. if (minutesString.length() == 1) minutesString = "0" + minutesString
  70. label.text = "<html>Video placeholder<br/>Time: $minutesString:$secondsString</html>"
  71. }
  72. }, 1000, 1000, TimeUnit.MILLISECONDS)
  73.  
  74. this
  75. }
  76.  
  77. @Override void dispose() {
  78. schedule.cancel(true)
  79. Disposer.dispose(balloon)
  80. }
  81. }
  82.  
  83.  
  84. registerAction("ShowBoxBalloon", "alt meta shift B", "Tools", "ShowBoxBalloon", pluginDisposable) {
  85. changeGlobalVar("boxBalloon") { PlaceholderBalloon oldBalloon ->
  86. if (oldBalloon == null) {
  87. new PlaceholderBalloon().init()
  88. } else {
  89. Disposer.dispose(oldBalloon)
  90. null
  91. }
  92. }
  93. }
  94.  
  95. registerAction("ShowAndHideBoxBalloon", "alt meta shift PERIOD", "Tools", "ShowAndHideBoxBalloon", pluginDisposable) {
  96. def panel = new JPanel()
  97. panel.setPreferredSize(new Dimension(1, 1))
  98.  
  99. Balloon balloon = JBPopupFactory.getInstance().createBalloonBuilder(panel)
  100. .setFadeoutTime(0)
  101. .setFillColor(Gray.TRANSPARENT)
  102. .setShowCallout(false)
  103. .setBorderColor(Gray.TRANSPARENT)
  104. .setBorderInsets(JBUI.emptyInsets())
  105. .setAnimationCycle(0)
  106. .setCloseButtonEnabled(false)
  107. .setHideOnClickOutside(false)
  108. .setDisposable(pluginDisposable)
  109. .setHideOnFrameResize(false)
  110. .setHideOnKeyOutside(false)
  111. .setBlockClicksThroughBalloon(true)
  112. .setHideOnAction(false)
  113. .setShadow(false)
  114. .createBalloon()
  115.  
  116. balloon.show(new RelativePoint(new Point(0, 0)), Balloon.Position.below)
  117. SwingUtilities.invokeLater {
  118. Disposer.dispose(balloon)
  119. }
  120. }
  121.  
  122.  
  123. if (!isIdeStartup) show("reloaded ShowBoxBalloon")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement