Coverage Summary for Class: BizGenSelectedActionEvent (ru.eda.plgn.bizgen.plugin.actions)

Class Method, % Branch, % Line, % Instruction, %
BizGenSelectedActionEvent$Companion 100% (3/3) 100% (6/6) 100% (33/33)
Total 100% (3/3) 100% (6/6) 100% (33/33)


 package ru.eda.plgn.bizgen.plugin.actions
 
 import com.intellij.openapi.Disposable
 import com.intellij.openapi.application.ApplicationManager
 import com.intellij.util.messages.Topic
 import ru.eda.plgn.bizgen.core.generator_info.GeneratorInfo
 import ru.eda.plgn.bizgen.plugin.invokeLater
 
 /**
  * Общий интерфейс, который обеспечивает возможность работы с выбранным действием генератора.
  *
  * @author Dmitry_Emelyanenko
  */
 internal fun interface BizGenSelectedActionEvent {
 
   /**
    * Метод по работе с выбранным генератором.
    *
    * @param action действие
    */
   fun selectedGenerator(action: GeneratorInfo<*>)
 
   companion object {
     private const val TOPIC_DSP_NAME = "RuBizGen Selected generator from settings"
     private val listener = BizGenSelectedActionEvent::class.java
 
     /** Топик, отвечающий за передачу выбранного действия. */
     private val TOPIC: Topic<BizGenSelectedActionEvent> = Topic.create(TOPIC_DSP_NAME, listener)
 
     /**
      * Метод публикации, что теперь выбран генератор.
      *
      * @param action выбранный генератор
      */
     internal fun publish(action: GeneratorInfo<*>) {
       ApplicationManager.getApplication().messageBus.syncPublisher(TOPIC)
         .selectedGenerator(action)
     }
 
     /**
      * Метод подписки на выбранный генератор.
      *
      * @param parentDisposable [Disposable] родительского элемента, чтобы при очистке происходила отписка от прослушивания
      * @param handler обработчик выбранного генератора
      */
     internal fun subscribeAsync(parentDisposable: Disposable, handler: (GeneratorInfo<*>) -> Unit) {
       ApplicationManager.getApplication().messageBus.connect(parentDisposable)
         .subscribe(TOPIC, BizGenSelectedActionEvent { action -> invokeLater { handler(action) } })
     }
   }
 }