Icons for trust status from blob2k

dbus-notify
Zlatin Balevsky 2022-06-06 13:43:14 +01:00
parent ed785915a8
commit b5eb48624f
No known key found for this signature in database
GPG Key ID: A72832072D525E41
13 changed files with 91 additions and 26 deletions

View File

@ -524,7 +524,7 @@ NEGATIVE_TREE=Negative Tree
## Fetch certificates dialog ## Fetch certificates dialog
ISSUER=Issuer ISSUER=Issuer
TRUST_STATUS=Trust Status TRUST_STATUS=Status
ISSUED=Issued ISSUED=Issued
IMPORT=Import IMPORT=Import
CERTIFICATES_IMPORTED=Certificates imported. CERTIFICATES_IMPORTED=Certificates imported.

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 B

View File

@ -1,5 +1,6 @@
package com.muwire.gui package com.muwire.gui
import com.muwire.core.trust.TrustLevel
import com.muwire.gui.profile.PersonaOrProfile import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.PersonaOrProfileCellRenderer import com.muwire.gui.profile.PersonaOrProfileCellRenderer
import com.muwire.gui.profile.PersonaOrProfileComparator import com.muwire.gui.profile.PersonaOrProfileComparator
@ -86,9 +87,9 @@ class ChatRoomView {
scrollPane { scrollPane {
membersTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) { membersTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
tableModel(list : model.members) { tableModel(list : model.members) {
closureColumn(header : trans("NAME"), preferredWidth: 100, type: PersonaOrProfile, read : {it}) closureColumn(header : trans("NAME"), preferredWidth: 150, type: PersonaOrProfile, read : {it})
closureColumn(header : trans("TRUST_STATUS"), preferredWidth: 30, type : String, closureColumn(header : trans("TRUST_STATUS"), preferredWidth: 10, type : TrustLevel,
read : {trans(model.core.trustService.getLevel(it.getPersona().destination).name())}) read : {model.core.trustService.getLevel(it.getPersona().destination)})
} }
} }
} }
@ -134,6 +135,7 @@ class ChatRoomView {
if (membersTable != null) { if (membersTable != null) {
membersTable.setDefaultRenderer(TrustLevel.class, new TrustCellRenderer())
membersTable.setDefaultRenderer(PersonaOrProfile.class, new PersonaOrProfileCellRenderer(application.context.get("ui-settings"))) membersTable.setDefaultRenderer(PersonaOrProfile.class, new PersonaOrProfileCellRenderer(application.context.get("ui-settings")))
membersTable.rowSorter.setComparator(0, new PersonaOrProfileComparator()) membersTable.rowSorter.setComparator(0, new PersonaOrProfileComparator())
membersTable.rowSorter.addRowSorterListener({evt -> lastMembersTableSortEvent = evt}) membersTable.rowSorter.addRowSorterListener({evt -> lastMembersTableSortEvent = evt})

View File

@ -1,6 +1,7 @@
package com.muwire.gui package com.muwire.gui
import com.muwire.core.Persona import com.muwire.core.Persona
import com.muwire.core.trust.TrustLevel
import griffon.core.GriffonApplication import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView import griffon.core.artifact.GriffonView
@ -60,7 +61,7 @@ class FetchCertificatesView {
certsTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) { certsTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
tableModel(list : model.certificates) { tableModel(list : model.certificates) {
closureColumn(header : trans("ISSUER"), preferredWidth : 200, type : Persona, read : {it.issuer}) closureColumn(header : trans("ISSUER"), preferredWidth : 200, type : Persona, read : {it.issuer})
closureColumn(header : trans("TRUST_STATUS"), preferredWidth: 50, type : String, read : {trans(controller.core.trustService.getLevel(it.issuer.destination).name())}) closureColumn(header : trans("TRUST_STATUS"), preferredWidth: 10, type : TrustLevel, read : {controller.core.trustService.getLevel(it.issuer.destination)})
closureColumn(header : trans("NAME"), preferredWidth : 200, type: String, read : {HTMLSanitizer.sanitize(it.name.name.toString())}) closureColumn(header : trans("NAME"), preferredWidth : 200, type: String, read : {HTMLSanitizer.sanitize(it.name.name.toString())})
closureColumn(header : trans("ISSUED"), preferredWidth : 100, type : String, read : { closureColumn(header : trans("ISSUED"), preferredWidth : 100, type : String, read : {
def date = new Date(it.timestamp) def date = new Date(it.timestamp)
@ -77,6 +78,7 @@ class FetchCertificatesView {
} }
} }
certsTable.setDefaultRenderer(TrustLevel.class, new TrustCellRenderer())
certsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings"))) certsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings")))
certsTable.rowSorter.setComparator(0, new PersonaComparator()) certsTable.rowSorter.setComparator(0, new PersonaComparator())
certsTable.rowSorter.addRowSorterListener({evt -> lastSortEvent = evt}) certsTable.rowSorter.addRowSorterListener({evt -> lastSortEvent = evt})

View File

@ -655,8 +655,8 @@ class MainFrameView {
tableModel(list: model.contacts) { tableModel(list: model.contacts) {
closureColumn(header: trans("CONTACTS"), preferredWidth: 250, type: PersonaOrProfile, read: { it }) closureColumn(header: trans("CONTACTS"), preferredWidth: 250, type: PersonaOrProfile, read: { it })
closureColumn(header: trans("REASON"), preferredWidth: 450, type: String, read: { it.getReason() }) closureColumn(header: trans("REASON"), preferredWidth: 450, type: String, read: { it.getReason() })
closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 60, type: String, read: { PersonaOrProfile row -> closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 60, type: TrustLevel, read: { PersonaOrProfile row ->
trans(model.core.trustService.getLevel(row.getPersona().destination).name()) model.core.trustService.getLevel(row.getPersona().destination)
}) })
} }
} }
@ -895,6 +895,8 @@ class MainFrameView {
def popRenderer = new PersonaOrProfileCellRenderer(application.context.get("ui-settings")) def popRenderer = new PersonaOrProfileCellRenderer(application.context.get("ui-settings"))
def popComparator = new PersonaOrProfileComparator() def popComparator = new PersonaOrProfileComparator()
def trustRenderer = new TrustCellRenderer()
// downloads table // downloads table
def downloadsTable = builder.getVariable("downloads-table") def downloadsTable = builder.getVariable("downloads-table")
def selectionModel = downloadsTable.getSelectionModel() def selectionModel = downloadsTable.getSelectionModel()
@ -1325,6 +1327,7 @@ class MainFrameView {
// contacts table // contacts table
JTable contactsTable = builder.getVariable("contacts-table") JTable contactsTable = builder.getVariable("contacts-table")
contactsTable.setDefaultRenderer(TrustLevel.class, trustRenderer)
contactsTable.setDefaultRenderer(PersonaOrProfile.class, popRenderer) contactsTable.setDefaultRenderer(PersonaOrProfile.class, popRenderer)
contactsTable.rowSorter.setComparator(0, popComparator) contactsTable.rowSorter.setComparator(0, popComparator)
contactsTable.rowSorter.addRowSorterListener({ evt -> lastContactsSortEvent = evt }) contactsTable.rowSorter.addRowSorterListener({ evt -> lastContactsSortEvent = evt })

View File

@ -1,6 +1,7 @@
package com.muwire.gui package com.muwire.gui
import com.muwire.core.SharedFile import com.muwire.core.SharedFile
import com.muwire.core.trust.TrustLevel
import com.muwire.gui.SearchTabModel.SenderBucket import com.muwire.gui.SearchTabModel.SenderBucket
import com.muwire.gui.profile.PersonaOrProfile import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.PersonaOrProfileCellRenderer import com.muwire.gui.profile.PersonaOrProfileCellRenderer
@ -104,15 +105,15 @@ class SearchTabView {
scrollPane (constraints : BorderLayout.CENTER) { scrollPane (constraints : BorderLayout.CENTER) {
sendersTable = table(id : "senders-table", autoCreateRowSorter : true, rowHeight : rowHeight) { sendersTable = table(id : "senders-table", autoCreateRowSorter : true, rowHeight : rowHeight) {
tableModel(list : model.senders) { tableModel(list : model.senders) {
closureColumn(header : trans("SENDER"), preferredWidth : 500, type: PersonaOrProfile, read : { SenderBucket row -> row}) closureColumn(header : trans("SENDER"), preferredWidth : 600, type: PersonaOrProfile, read : { SenderBucket row -> row})
closureColumn(header : trans("RESULTS"), preferredWidth : 20, type: Integer, read : {SenderBucket row -> row.results.size()}) closureColumn(header : trans("RESULTS"), preferredWidth : 20, type: Integer, read : {SenderBucket row -> row.results.size()})
closureColumn(header : trans("BROWSE"), preferredWidth : 20, type: Boolean, read : {SenderBucket row -> row.results[0].browse}) closureColumn(header : trans("BROWSE"), preferredWidth : 20, type: Boolean, read : {SenderBucket row -> row.results[0].browse})
closureColumn(header : trans("COLLECTIONS"), preferredWidth : 20, type: Boolean, read : {SenderBucket row -> row.results[0].browseCollections}) closureColumn(header : trans("COLLECTIONS"), preferredWidth : 20, type: Boolean, read : {SenderBucket row -> row.results[0].browseCollections})
closureColumn(header : trans("FEED"), preferredWidth : 20, type : Boolean, read : {SenderBucket row -> row.results[0].feed}) closureColumn(header : trans("FEED"), preferredWidth : 20, type : Boolean, read : {SenderBucket row -> row.results[0].feed})
closureColumn(header : trans("MESSAGES"), preferredWidth : 20, type : Boolean, read : {SenderBucket row -> row.results[0].messages}) closureColumn(header : trans("MESSAGES"), preferredWidth : 20, type : Boolean, read : {SenderBucket row -> row.results[0].messages})
closureColumn(header : trans("CHAT"), preferredWidth : 20, type : Boolean, read : {SenderBucket row -> row.results[0].chat}) closureColumn(header : trans("CHAT"), preferredWidth : 20, type : Boolean, read : {SenderBucket row -> row.results[0].chat})
closureColumn(header : trans("TRUST_NOUN"), preferredWidth : 50, type: String, read : { SenderBucket row -> closureColumn(header : trans("TRUST_STATUS"), preferredWidth : 10, type: TrustLevel, read : { SenderBucket row ->
trans(model.core.trustService.getLevel(row.sender.destination).name()) model.core.trustService.getLevel(row.sender.destination)
}) })
} }
} }
@ -405,6 +406,7 @@ class SearchTabView {
def popRenderer = new PersonaOrProfileCellRenderer(application.context.get("ui-settings")) def popRenderer = new PersonaOrProfileCellRenderer(application.context.get("ui-settings"))
def popComparator = new PersonaOrProfileComparator() def popComparator = new PersonaOrProfileComparator()
sendersTable.addMouseListener(sendersMouseListener) sendersTable.addMouseListener(sendersMouseListener)
sendersTable.setDefaultRenderer(TrustLevel.class, new TrustCellRenderer())
sendersTable.setDefaultRenderer(Integer.class, centerRenderer) sendersTable.setDefaultRenderer(Integer.class, centerRenderer)
sendersTable.setDefaultRenderer(PersonaOrProfile.class, popRenderer) sendersTable.setDefaultRenderer(PersonaOrProfile.class, popRenderer)
sendersTable.rowSorter.setComparator(0, popComparator) sendersTable.rowSorter.setComparator(0, popComparator)

View File

@ -1,6 +1,7 @@
package com.muwire.gui package com.muwire.gui
import com.muwire.core.Persona import com.muwire.core.Persona
import com.muwire.core.trust.TrustLevel
import com.muwire.gui.profile.PersonaOrProfile import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.PersonaOrProfileCellRenderer import com.muwire.gui.profile.PersonaOrProfileCellRenderer
import com.muwire.gui.profile.PersonaOrProfileComparator import com.muwire.gui.profile.PersonaOrProfileComparator
@ -63,14 +64,12 @@ class TrustListView {
scrollPane (constraints : BorderLayout.CENTER){ scrollPane (constraints : BorderLayout.CENTER){
contactsTable = table(id : "contacts-table", autoCreateRowSorter : true, rowHeight : rowHeight) { contactsTable = table(id : "contacts-table", autoCreateRowSorter : true, rowHeight : rowHeight) {
tableModel(list : model.contacts) { tableModel(list : model.contacts) {
closureColumn(header: trans("CONTACTS"), preferredWidth: 200, type : PersonaOrProfile, read : {it}) closureColumn(header: trans("CONTACTS"), preferredWidth: 250, type : PersonaOrProfile, read : {it})
closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 20, type: String, read: { closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 10, type: TrustLevel, read: {it.level})
trans(it.level.name()) closureColumn(header: trans("REASON"), preferredWidth: 250, type : String, read : {it.reason})
}) closureColumn(header: trans("YOUR_TRUST"), preferredWidth: 10, type : TrustLevel, read : {
closureColumn(header: trans("REASON"), preferredWidth: 200, type : String, read : {it.reason})
closureColumn(header: trans("YOUR_TRUST"), preferredWidth: 20, type : String, read : {
Persona p = it.persona Persona p = it.persona
trans(model.trustService.getLevel(p.destination).name()) model.trustService.getLevel(p.destination)
}) })
} }
} }
@ -90,6 +89,7 @@ class TrustListView {
def popRenderer = new PersonaOrProfileCellRenderer(application.context.get("ui-settings")) def popRenderer = new PersonaOrProfileCellRenderer(application.context.get("ui-settings"))
def popComparator = new PersonaOrProfileComparator() def popComparator = new PersonaOrProfileComparator()
contactsTable.setDefaultRenderer(TrustLevel.class, new TrustCellRenderer())
contactsTable.setDefaultRenderer(PersonaOrProfile.class, popRenderer) contactsTable.setDefaultRenderer(PersonaOrProfile.class, popRenderer)
contactsTable.rowSorter.setComparator(0, popComparator) contactsTable.rowSorter.setComparator(0, popComparator)
contactsTable.rowSorter.setSortsOnUpdates(true) contactsTable.rowSorter.setSortsOnUpdates(true)

View File

@ -2,10 +2,12 @@ package com.muwire.gui.resultdetails
import com.muwire.core.Persona import com.muwire.core.Persona
import com.muwire.core.filecert.Certificate import com.muwire.core.filecert.Certificate
import com.muwire.core.trust.TrustLevel
import com.muwire.gui.DateRenderer import com.muwire.gui.DateRenderer
import com.muwire.gui.HTMLSanitizer import com.muwire.gui.HTMLSanitizer
import com.muwire.gui.PersonaCellRenderer import com.muwire.gui.PersonaCellRenderer
import com.muwire.gui.PersonaComparator import com.muwire.gui.PersonaComparator
import com.muwire.gui.TrustCellRenderer
import griffon.core.GriffonApplication import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView import griffon.core.artifact.GriffonView
import griffon.inject.MVCMember import griffon.inject.MVCMember
@ -52,8 +54,8 @@ class CertificateTabView {
tableModel(list: model.certificates) { tableModel(list: model.certificates) {
closureColumn(header: trans("ISSUER"), preferredWidth: 150, type: Persona, closureColumn(header: trans("ISSUER"), preferredWidth: 150, type: Persona,
read:{it.issuer}) read:{it.issuer})
closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 30, type:String, closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 10, type: TrustLevel,
read:{trans(model.core.trustService.getLevel(it.issuer.destination).name())}) read:{model.core.trustService.getLevel(it.issuer.destination)})
closureColumn(header: trans("NAME"), preferredWidth: 450, closureColumn(header: trans("NAME"), preferredWidth: 450,
read: { Certificate c -> HTMLSanitizer.sanitize(c.name.name) }) read: { Certificate c -> HTMLSanitizer.sanitize(c.name.name) })
closureColumn(header: trans("ISSUED"), preferredWidth: 50, type: Long, closureColumn(header: trans("ISSUED"), preferredWidth: 50, type: Long,
@ -72,6 +74,7 @@ class CertificateTabView {
} }
void mvcGroupInit(Map<String,String> args) { void mvcGroupInit(Map<String,String> args) {
certsTable.setDefaultRenderer(TrustLevel.class, new TrustCellRenderer())
certsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings"))) certsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings")))
certsTable.setDefaultRenderer(Long.class, new DateRenderer()) certsTable.setDefaultRenderer(Long.class, new DateRenderer())
certsTable.rowSorter.setComparator(0, new PersonaComparator()) certsTable.rowSorter.setComparator(0, new PersonaComparator())

View File

@ -1,5 +1,7 @@
package com.muwire.gui.resultdetails package com.muwire.gui.resultdetails
import com.muwire.core.trust.TrustLevel
import com.muwire.gui.TrustCellRenderer
import com.muwire.gui.profile.PersonaOrProfile import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.PersonaOrProfileCellRenderer import com.muwire.gui.profile.PersonaOrProfileCellRenderer
import com.muwire.gui.profile.PersonaOrProfileComparator import com.muwire.gui.profile.PersonaOrProfileComparator
@ -86,10 +88,10 @@ class ResultDetailsFrameView {
scrollPane { scrollPane {
table(id: "senders-table", autoCreateRowSorter: true, rowHeight: rowHeight) { table(id: "senders-table", autoCreateRowSorter: true, rowHeight: rowHeight) {
tableModel(list: model.senders.toList()) { tableModel(list: model.senders.toList()) {
closureColumn(header: trans("SENDER"), type: PersonaOrProfile, read: { it }) closureColumn(header: trans("SENDER"), preferredWidth: 700, type: PersonaOrProfile, read: { it })
closureColumn(header: trans("TRUST_NOUN"), read: { PersonaOrProfile pop -> closureColumn(header: trans("TRUST_STATUS"), preferredWidth:10, type: TrustLevel, read: { PersonaOrProfile pop ->
Destination destination = pop.getPersona().destination Destination destination = pop.getPersona().destination
trans(model.core.trustService.getLevel(destination).name()) model.core.trustService.getLevel(destination)
}) })
} }
} }
@ -122,6 +124,7 @@ class ResultDetailsFrameView {
void mvcGroupInit(Map<String, String> args) { void mvcGroupInit(Map<String, String> args) {
if (model.senders.size() > 1) { if (model.senders.size() > 1) {
JTable sendersTable = builder.getVariable("senders-table") JTable sendersTable = builder.getVariable("senders-table")
sendersTable.setDefaultRenderer(TrustLevel.class, new TrustCellRenderer())
sendersTable.setDefaultRenderer(PersonaOrProfile.class, sendersTable.setDefaultRenderer(PersonaOrProfile.class,
new PersonaOrProfileCellRenderer(application.context.get("ui-settings"))) new PersonaOrProfileCellRenderer(application.context.get("ui-settings")))
sendersTable.rowSorter.setComparator(0, new PersonaOrProfileComparator()) sendersTable.rowSorter.setComparator(0, new PersonaOrProfileComparator())

View File

@ -1,7 +1,9 @@
package com.muwire.gui.resultdetails package com.muwire.gui.resultdetails
import com.muwire.core.search.UIResultEvent import com.muwire.core.search.UIResultEvent
import com.muwire.core.trust.TrustLevel
import com.muwire.gui.HTMLSanitizer import com.muwire.gui.HTMLSanitizer
import com.muwire.gui.TrustCellRenderer
import com.muwire.gui.profile.PersonaOrProfile import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.PersonaOrProfileCellRenderer import com.muwire.gui.profile.PersonaOrProfileCellRenderer
import com.muwire.gui.profile.PersonaOrProfileComparator import com.muwire.gui.profile.PersonaOrProfileComparator
@ -71,10 +73,10 @@ class ResultDetailsTabsView {
sendersTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) { sendersTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
tableModel(list: model.results) { tableModel(list: model.results) {
closureColumn(header: trans("SENDER"), preferredWidth: 150, type: PersonaOrProfile, read : {it}) closureColumn(header: trans("SENDER"), preferredWidth: 150, type: PersonaOrProfile, read : {it})
closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 30, type:String, read : { ResultPOP row -> closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 10, type: TrustLevel, read : { ResultPOP row ->
trans(model.core.trustService.getLevel(row.getPersona().destination).name()) model.core.trustService.getLevel(row.getPersona().destination)
}) })
closureColumn(header: trans("NAME"), preferredWidth: 650, type: String, read : { ResultPOP row -> closureColumn(header: trans("NAME"), preferredWidth: 700, type: String, read : { ResultPOP row ->
HTMLSanitizer.sanitize(row.getEvent().getFullPath()) HTMLSanitizer.sanitize(row.getEvent().getFullPath())
}) })
closureColumn(header: trans("COMMENTS"), preferredWidth: 20, type: Boolean, read : { ResultPOP row -> closureColumn(header: trans("COMMENTS"), preferredWidth: 20, type: Boolean, read : { ResultPOP row ->
@ -183,6 +185,7 @@ class ResultDetailsTabsView {
void mvcGroupInit(Map<String,String> args) { void mvcGroupInit(Map<String,String> args) {
// all senders table // all senders table
sendersTable.setDefaultRenderer(TrustLevel.class, new TrustCellRenderer())
sendersTable.setDefaultRenderer(PersonaOrProfile.class, sendersTable.setDefaultRenderer(PersonaOrProfile.class,
new PersonaOrProfileCellRenderer(application.context.get("ui-settings"))) new PersonaOrProfileCellRenderer(application.context.get("ui-settings")))
sendersTable.rowSorter.setComparator(0, new PersonaOrProfileComparator()) sendersTable.rowSorter.setComparator(0, new PersonaOrProfileComparator())

View File

@ -0,0 +1,47 @@
package com.muwire.gui
import com.muwire.core.trust.TrustLevel
import static com.muwire.gui.Translator.trans
import javax.swing.Icon
import javax.swing.ImageIcon
import javax.swing.JTable
import javax.swing.table.DefaultTableCellRenderer
import java.awt.Component
class TrustCellRenderer extends DefaultTableCellRenderer {
private final Icon trusted, neutral, distrusted
TrustCellRenderer() {
trusted = new ImageIcon(getClass().getClassLoader().getResource("trusted.png"))
neutral = new ImageIcon(getClass().getClassLoader().getResource("neutral.png"))
distrusted = new ImageIcon(getClass().getClassLoader().getResource("distrusted.png"))
}
@Override
Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column)
TrustLevel level = (TrustLevel) value
switch(value) {
case TrustLevel.TRUSTED: setIcon(trusted); break;
case TrustLevel.NEUTRAL: setIcon(neutral); break;
case TrustLevel.DISTRUSTED: setIcon(distrusted); break;
}
setText("")
setToolTipText(trans(level.name()))
if (isSelected) {
setForeground(table.getSelectionForeground())
setBackground(table.getSelectionBackground())
} else {
setForeground(table.getForeground())
setBackground(table.getBackground())
}
this
}
}