build tabs dynamically based on presence of commments or local copies

auto-update
Zlatin Balevsky 2021-10-27 04:09:50 +01:00
parent 4fc5bdd382
commit d61e4245bd
No known key found for this signature in database
GPG Key ID: A72832072D525E41
3 changed files with 40 additions and 31 deletions

View File

@ -39,7 +39,6 @@ class ResultDetailsModel {
List<UIResultEvent> results
String key
List<SharedFile> localFiles
private final Set<UIResultEvent> uniqueResults = new HashSet<>()
List<UIResultEvent> resultsWithComments = []
@ -55,11 +54,6 @@ class ResultDetailsModel {
void mvcGroupInit(Map<String,String> args) {
key = fileName + Base64.encode(infoHash.getRoot())
SharedFile[] locals = core.fileManager.getSharedFiles(infoHash.getRoot())
if (locals == null)
localFiles = Collections.emptyList()
else
localFiles = Arrays.asList(locals)
certificates = new HashMap<>()
collectionFetches = new HashMap<>()
@ -86,6 +80,13 @@ class ResultDetailsModel {
core.eventBus.unregister(CollectionFetchStatusEvent.class, this)
}
}
List<String> getLocalCopies() {
SharedFile[] sharedFiles = core.fileManager.getSharedFiles(infoHash.getRoot())
if (sharedFiles == null || sharedFiles.length == 0)
return null
sharedFiles.collect {it.getCachedPath()}
}
void addResult(UIResultEvent event) {
if (!uniqueResults.add(event))
@ -197,12 +198,4 @@ class ResultDetailsModel {
int count
final List<FileCollection> collections = new ArrayList<>()
}
boolean hasComments() {
for (UIResultEvent event : results) {
if (event.comment != null)
return true
}
false
}
}

View File

@ -42,8 +42,10 @@ class ResultDetailsView {
int rowHeight
JTabbedPane tabs
JPanel sendersPanel
JTable sendersTable
JPanel commentsPanel
JList<UIResultEvent> commentsList
JTextArea commentTextArea
@ -59,7 +61,7 @@ class ResultDetailsView {
tabs = tabbedPane(constraints: BorderLayout.CENTER)
}
JPanel sendersPanel = builder.panel {
sendersPanel = builder.panel {
borderLayout()
panel(constraints: BorderLayout.NORTH) {
label(text: trans("RESULTS_CAME_FROM"))
@ -83,20 +85,6 @@ class ResultDetailsView {
button(text: trans("COPY_FULL_ID"), enabled: bind {model.copyIdActionEnabled}, copyIdAction)
}
}
tabs.addTab(trans("SENDERS"), sendersPanel)
if (!model.localFiles.isEmpty()) {
JPanel localCopies = builder.panel {
borderLayout()
panel(constraints: BorderLayout.NORTH) {
label(text: trans("YOU_ALREADY_HAVE_FILE", model.localFiles.size()))
}
scrollPane(constraints: BorderLayout.CENTER) {
list(items : model.localFiles.collect {it.getCachedPath()})
}
}
tabs.addTab(trans("LOCAL_COPIES"), localCopies)
}
commentsPanel = builder.panel {
cardLayout()
@ -115,7 +103,31 @@ class ResultDetailsView {
}
}
}
tabs.addTab(trans("COMMENTS"), commentsPanel)
}
private JPanel buildLocalCopies() {
List<String> localCopies = model.getLocalCopies()
if (localCopies == null)
return null
builder.panel {
borderLayout()
panel(constraints: BorderLayout.NORTH) {
label(text: trans("YOU_ALREADY_HAVE_FILE", localCopies.size()))
}
scrollPane(constraints: BorderLayout.CENTER) {
list(items : localCopies)
}
}
}
void buildTabs() {
tabs.removeAll()
tabs.addTab(trans("SENDERS"), sendersPanel)
JPanel localCopies = buildLocalCopies()
if (localCopies != null)
tabs.addTab(trans("LOCAL_COPIES"), localCopies)
if (!model.resultsWithComments.isEmpty())
tabs.addTab(trans("COMMENTS"), commentsPanel)
}
void mvcGroupInit(Map<String,String> args) {
@ -165,6 +177,9 @@ class ResultDetailsView {
commentsPanel.getLayout().show(commentsPanel,"yes-comments")
commentsList.setListData(model.resultsWithComments.toArray(new UIResultEvent[0]))
}
buildTabs()
p.updateUI()
}
void refreshCertificates() {

View File

@ -457,6 +457,7 @@ class SearchTabView {
resultDetails[infoHash] = group
}
group.view.buildTabs()
detailsPanelByFile.add(group.view.p, null)
detailsPanelByFile.updateUI()
}