1- package org.skgroup.securityinspector.ui
1+ package org.skgroup.securityinspector.ui.component
22
3+ import com.intellij.analysis.problemsView.toolWindow.ProblemsViewTab
34import com.intellij.openapi.application.ApplicationManager
45import com.intellij.openapi.fileEditor.OpenFileDescriptor
56import com.intellij.openapi.progress.ProgressIndicator
67import com.intellij.openapi.progress.ProgressManager
78import com.intellij.openapi.progress.Task
89import com.intellij.openapi.project.Project
910import com.intellij.openapi.vfs.VirtualFile
10- import com.intellij.openapi.wm.ToolWindow
11- import com.intellij.openapi.wm.ToolWindowFactory
1211import com.intellij.ui.components.JBPanel
1312import com.intellij.ui.components.JBScrollPane
14- import com.intellij.ui.content.ContentFactory
1513import com.intellij.ui.table.JBTable
16- import org.skgroup.securityinspector.ui.component.FirstColumnRenderer
17- import org.skgroup.securityinspector.ui.component.HighlightRenderer
1814import org.skgroup.securityinspector.utils.GraphUtils.collectProjectIssues
1915import java.awt.BorderLayout
2016import java.awt.event.MouseAdapter
@@ -23,28 +19,21 @@ import javax.swing.JButton
2319import javax.swing.table.DefaultTableModel
2420import javax.swing.table.TableRowSorter
2521
26- /* *
27- * 类描述:IssueViewWindow 类用于创建SinkFinder。
28- *
29- * @author springkill
30- * @version 1.0
31- */
32- class IssueViewWindow : ToolWindowFactory {
22+ class IssueProblemsTab (project : Project ) : ProblemsViewTab {
3323
34- override fun createToolWindowContent (project : Project , toolWindow : ToolWindow ) {
35- val panel = JBPanel <JBPanel <* >>(BorderLayout ())
36- val tableModel =
37- DefaultTableModel (arrayOf(" File" , " Line" , " SinkClass" , " SinkMethod" , " Type" , " SubType" , " CallMode" ), 0 )
38- val refreshButton = JButton (" Init Sink" )
39- val table = object : JBTable (tableModel) {
40- override fun isCellEditable (row : Int , column : Int ): Boolean {
41- return false
42- }
43- }
24+ private val panel = JBPanel <JBPanel <* >>(BorderLayout ())
4425
45- val sorter = TableRowSorter (tableModel)
46- table.rowSorter = sorter
26+ private val tableModel =
27+ DefaultTableModel (arrayOf(" File" , " Line" , " SinkClass" , " SinkMethod" , " Type" , " SubType" , " CallMode" ), 0 )
28+ private val refreshButton = JButton (" Init Sink" )
29+ private val table = object : JBTable (tableModel) {
30+ override fun isCellEditable (row : Int , column : Int ): Boolean = false
31+ }
4732
33+ private val sorter = TableRowSorter (tableModel)
34+
35+ init {
36+ table.rowSorter = sorter
4837 table.apply {
4938 columnModel.getColumn(0 ).cellRenderer = FirstColumnRenderer ()
5039 columnModel.getColumn(4 ).cellRenderer = HighlightRenderer ()
@@ -96,10 +85,13 @@ class IssueViewWindow : ToolWindowFactory {
9685
9786 panel.add(JBScrollPane (table), BorderLayout .CENTER )
9887 panel.add(refreshButton, BorderLayout .SOUTH )
88+ }
89+
90+ fun getComponent () = panel
9991
100- val contentFactory = ContentFactory .getInstance()
101- val content = contentFactory.createContent(panel, " " , false )
102- toolWindow.contentManager.addContent(content)
92+ override fun getName (count : Int ): String {
93+ return " Sink Finder"
10394 }
10495
96+ override fun getTabId () = " Issue Problems Tab"
10597}
0 commit comments