Skip to content

Commit d2fa3cf

Browse files
committed
Fix selectionModel
1 parent dd7aef7 commit d2fa3cf

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

src/BookmarkTab.kt

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ class BookmarksPanel(private val callbacks: IBurpExtenderCallbacks) {
4242
val table = JTable(model)
4343

4444
private val messageEditor = MessageEditor(callbacks)
45-
private val requestViewer: IMessageEditor? = messageEditor.requestViewer
46-
private val responseViewer: IMessageEditor? = messageEditor.responseViewer
45+
val requestViewer: IMessageEditor? = messageEditor.requestViewer
46+
val responseViewer: IMessageEditor? = messageEditor.responseViewer
4747

4848
val panel = JSplitPane(JSplitPane.VERTICAL_SPLIT)
4949
val bookmarks = model.bookmarks
@@ -52,7 +52,7 @@ class BookmarksPanel(private val callbacks: IBurpExtenderCallbacks) {
5252

5353
init {
5454
BookmarkActions(this, bookmarks, callbacks)
55-
val bookmarkOptons = BookmarkOptions(this, callbacks)
55+
val bookmarkOptions = BookmarkOptions(this, callbacks)
5656
table.autoResizeMode = JTable.AUTO_RESIZE_OFF
5757
table.columnModel.getColumn(0).preferredWidth = 30 // ID
5858
table.columnModel.getColumn(1).preferredWidth = 145 // date
@@ -68,12 +68,15 @@ class BookmarksPanel(private val callbacks: IBurpExtenderCallbacks) {
6868
table.columnModel.getColumn(11).preferredWidth = 50 // protocol
6969
table.columnModel.getColumn(12).preferredWidth = 80 // file
7070
table.columnModel.getColumn(13).preferredWidth = 120 // comments
71+
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
7172

7273
table.selectionModel.addListSelectionListener {
73-
val requestResponse = bookmarks[table.selectedRow].requestResponse
74-
messageEditor.requestResponse = requestResponse
75-
requestViewer?.setMessage(requestResponse.request, true)
76-
responseViewer?.setMessage(requestResponse.response ?: ByteArray(0), false)
74+
if (table.selectedRow != -1) {
75+
val requestResponse = bookmarks[table.selectedRow].requestResponse
76+
messageEditor.requestResponse = requestResponse
77+
requestViewer?.setMessage(requestResponse.request, true)
78+
responseViewer?.setMessage(requestResponse.response ?: ByteArray(0), false)
79+
}
7780
}
7881

7982
val repeatPanel = JPanel(FlowLayout(FlowLayout.LEFT))
@@ -94,7 +97,7 @@ class BookmarksPanel(private val callbacks: IBurpExtenderCallbacks) {
9497
JSplitPane(JSplitPane.VERTICAL_SPLIT, repeatPanel, reqResSplit)
9598

9699
val bookmarksOptSplit =
97-
JSplitPane(JSplitPane.VERTICAL_SPLIT, bookmarkOptons.panel, bookmarksTable)
100+
JSplitPane(JSplitPane.VERTICAL_SPLIT, bookmarkOptions.panel, bookmarksTable)
98101

99102
panel.topComponent = bookmarksOptSplit
100103
panel.bottomComponent = repeatReqSplit
@@ -173,9 +176,11 @@ class BookmarksPanel(private val callbacks: IBurpExtenderCallbacks) {
173176
GlobalScope.launch(Dispatchers.IO) {
174177
val requestResponse = callbacks.makeHttpRequest(messageEditor.httpService, requestViewer?.message)
175178
withContext(Dispatchers.Swing) {
176-
responseViewer?.setMessage(requestResponse.response, false)
177-
if (repeatInTable.isSelected) {
178-
createBookmark(requestResponse, repeated = true, proxyHistory = false)
179+
SwingUtilities.invokeLater {
180+
responseViewer?.setMessage(requestResponse.response, false)
181+
if (repeatInTable.isSelected) {
182+
createBookmark(requestResponse, repeated = true, proxyHistory = false)
183+
}
179184
}
180185
}
181186
}

0 commit comments

Comments
 (0)