You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.7 KiB
48 lines
1.7 KiB
package org.jetbrains.plugins.template.toolWindow
|
|
|
|
import com.intellij.openapi.components.service
|
|
import com.intellij.openapi.diagnostic.thisLogger
|
|
import com.intellij.openapi.project.Project
|
|
import com.intellij.openapi.wm.ToolWindow
|
|
import com.intellij.openapi.wm.ToolWindowFactory
|
|
import com.intellij.ui.components.JBLabel
|
|
import com.intellij.ui.components.JBPanel
|
|
import com.intellij.ui.content.ContentFactory
|
|
import org.jetbrains.plugins.template.MyBundle
|
|
import org.jetbrains.plugins.template.services.MyProjectService
|
|
import javax.swing.JButton
|
|
|
|
|
|
class MyToolWindowFactory : ToolWindowFactory {
|
|
|
|
init {
|
|
thisLogger().warn("Don't forget to remove all non-needed sample code files with their corresponding registration entries in `plugin.xml`.")
|
|
}
|
|
|
|
private val contentFactory = ContentFactory.SERVICE.getInstance()
|
|
|
|
override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
|
|
val myToolWindow = MyToolWindow(toolWindow)
|
|
val content = contentFactory.createContent(myToolWindow.getContent(), null, false)
|
|
toolWindow.contentManager.addContent(content)
|
|
}
|
|
|
|
override fun shouldBeAvailable(project: Project) = true
|
|
|
|
class MyToolWindow(toolWindow: ToolWindow) {
|
|
|
|
private val service = toolWindow.project.service<MyProjectService>()
|
|
|
|
fun getContent() = JBPanel<JBPanel<*>>().apply {
|
|
val label = JBLabel(MyBundle.message("randomLabel", "?"))
|
|
|
|
add(label)
|
|
add(JButton(MyBundle.message("shuffle")).apply {
|
|
addActionListener {
|
|
label.text = MyBundle.message("randomLabel", service.getRandomNumber())
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|