package plugin import app.Context /** * Provides extension points to plug-ins. */ object PluginSystem { private val repositoryMenuList = scala.collection.mutable.ListBuffer[Menu]() private val globalMenuList = scala.collection.mutable.ListBuffer[Menu]() case class Menu(label: String, url: String, icon: String, condition: Context => Boolean) def addRepositoryMenu(label: String, url: String, icon: String = "")(condition: Context => Boolean): Unit = { repositoryMenuList += Menu(label, url, icon, condition) } def addGlobalMenu(label: String, url: String, icon: String = "")(condition: Context => Boolean): Unit = { globalMenuList += Menu(label, url, icon, condition) } def addAction(path: String): Unit = { // TODO } def repositoryMenus: List[Menu] = repositoryMenuList.toList def globalMenus: List[Menu] = globalMenuList.toList // TODO This is a test addGlobalMenu("Google", "http://www.google.co.jp/"){ context => context.loginAccount.isDefined } }