mirror of https://github.com/zlatinb/muwire
show certificate comment form file details view
parent
e94b7cb0d4
commit
00a8d100fe
|
@ -6,6 +6,23 @@ import griffon.inject.MVCMember
|
||||||
import griffon.metadata.ArtifactProviderFor
|
import griffon.metadata.ArtifactProviderFor
|
||||||
import javax.annotation.Nonnull
|
import javax.annotation.Nonnull
|
||||||
|
|
||||||
|
import com.muwire.core.filecert.Certificate
|
||||||
|
|
||||||
@ArtifactProviderFor(GriffonController)
|
@ArtifactProviderFor(GriffonController)
|
||||||
class SharedFileController {
|
class SharedFileController {
|
||||||
|
@MVCMember @Nonnull
|
||||||
|
SharedFileView view
|
||||||
|
@MVCMember @Nonnull
|
||||||
|
SharedFileModel model
|
||||||
|
|
||||||
|
@ControllerAction
|
||||||
|
void showComment() {
|
||||||
|
Certificate cert = view.getSelectedCertificate()
|
||||||
|
if (cert == null || cert.comment == null)
|
||||||
|
return
|
||||||
|
|
||||||
|
def params = [:]
|
||||||
|
params['text'] = cert.comment.name
|
||||||
|
mvcGroup.createMVCGroup('show-comment',params)
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -16,6 +16,8 @@ class SharedFileModel {
|
||||||
def downloaders = []
|
def downloaders = []
|
||||||
def certificates = []
|
def certificates = []
|
||||||
|
|
||||||
|
@Observable boolean showCommentActionEnabled
|
||||||
|
|
||||||
public void mvcGroupInit(Map<String,String> args) {
|
public void mvcGroupInit(Map<String,String> args) {
|
||||||
searchers.addAll(sf.searches)
|
searchers.addAll(sf.searches)
|
||||||
downloaders.addAll(sf.downloaders)
|
downloaders.addAll(sf.downloaders)
|
||||||
|
|
|
@ -5,10 +5,17 @@ import griffon.inject.MVCMember
|
||||||
import griffon.metadata.ArtifactProviderFor
|
import griffon.metadata.ArtifactProviderFor
|
||||||
|
|
||||||
import javax.swing.JDialog
|
import javax.swing.JDialog
|
||||||
|
import javax.swing.JMenuItem
|
||||||
|
import javax.swing.JPopupMenu
|
||||||
import javax.swing.JTabbedPane
|
import javax.swing.JTabbedPane
|
||||||
|
import javax.swing.ListSelectionModel
|
||||||
import javax.swing.SwingConstants
|
import javax.swing.SwingConstants
|
||||||
|
|
||||||
|
import com.muwire.core.filecert.Certificate
|
||||||
|
|
||||||
import java.awt.BorderLayout
|
import java.awt.BorderLayout
|
||||||
|
import java.awt.event.MouseAdapter
|
||||||
|
import java.awt.event.MouseEvent
|
||||||
import java.awt.event.WindowAdapter
|
import java.awt.event.WindowAdapter
|
||||||
import java.awt.event.WindowEvent
|
import java.awt.event.WindowEvent
|
||||||
|
|
||||||
|
@ -20,6 +27,8 @@ class SharedFileView {
|
||||||
FactoryBuilderSupport builder
|
FactoryBuilderSupport builder
|
||||||
@MVCMember @Nonnull
|
@MVCMember @Nonnull
|
||||||
SharedFileModel model
|
SharedFileModel model
|
||||||
|
@MVCMember @Nonnull
|
||||||
|
SharedFileController controller
|
||||||
|
|
||||||
def mainFrame
|
def mainFrame
|
||||||
def dialog
|
def dialog
|
||||||
|
@ -28,6 +37,7 @@ class SharedFileView {
|
||||||
def downloadersPanel
|
def downloadersPanel
|
||||||
def certificatesTable
|
def certificatesTable
|
||||||
def certificatesPanel
|
def certificatesPanel
|
||||||
|
def lastCertificateSortEvent
|
||||||
|
|
||||||
void initUI() {
|
void initUI() {
|
||||||
mainFrame = application.windowManager.findWindow("main-frame")
|
mainFrame = application.windowManager.findWindow("main-frame")
|
||||||
|
@ -77,10 +87,33 @@ class SharedFileView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
panel(constraints : BorderLayout.SOUTH) {
|
||||||
|
button(text : "Show Comment", enabled : bind {model.showCommentActionEnabled}, showCommentAction)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mvcGroupInit(Map<String,String> args) {
|
void mvcGroupInit(Map<String,String> args) {
|
||||||
|
|
||||||
|
certificatesTable.rowSorter.addRowSorterListener({evt -> lastCertificateSortEvent = evt})
|
||||||
|
def selectionModel = certificatesTable.getSelectionModel()
|
||||||
|
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
|
||||||
|
selectionModel.addListSelectionListener({
|
||||||
|
Certificate c = getSelectedCertificate()
|
||||||
|
model.showCommentActionEnabled = c != null && c.comment != null
|
||||||
|
})
|
||||||
|
|
||||||
|
certificatesTable.addMouseListener(new MouseAdapter() {
|
||||||
|
public void mouseReleased(MouseEvent e) {
|
||||||
|
if (e.isPopupTrigger())
|
||||||
|
showMenu(e)
|
||||||
|
}
|
||||||
|
public void mousePressed(MouseEvent e) {
|
||||||
|
if (e.isPopupTrigger())
|
||||||
|
showMenu(e)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
def tabbedPane = new JTabbedPane()
|
def tabbedPane = new JTabbedPane()
|
||||||
tabbedPane.addTab("Search Hits", searchersPanel)
|
tabbedPane.addTab("Search Hits", searchersPanel)
|
||||||
tabbedPane.addTab("Downloaders", downloadersPanel)
|
tabbedPane.addTab("Downloaders", downloadersPanel)
|
||||||
|
@ -99,4 +132,23 @@ class SharedFileView {
|
||||||
show()
|
show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Certificate getSelectedCertificate() {
|
||||||
|
int selectedRow = certificatesTable.getSelectedRow()
|
||||||
|
if (selectedRow < 0)
|
||||||
|
return null
|
||||||
|
if (lastCertificateSortEvent != null)
|
||||||
|
selectedRow = certificatesTable.rowSorter.convertRowIndexToModel(selectedRow)
|
||||||
|
model.certificates[selectedRow]
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showMenu(MouseEvent e) {
|
||||||
|
if (!model.showCommentActionEnabled)
|
||||||
|
return
|
||||||
|
JPopupMenu menu = new JPopupMenu()
|
||||||
|
JMenuItem showComment = new JMenuItem("Show Comment")
|
||||||
|
showComment.addActionListener({controller.showComment()})
|
||||||
|
menu.add(showComment)
|
||||||
|
menu.show(e.getComponent(), e.getX(), e.getY())
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue