Theme Editor: fixed preview of focused list and table selection

This commit is contained in:
Karl Tauber
2021-09-05 22:05:21 +02:00
parent 8640dee053
commit 0b6247851b
3 changed files with 37 additions and 1 deletions

View File

@@ -20,10 +20,12 @@ import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.beans.PropertyChangeListener;
import javax.swing.JComponent;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicListUI;
import com.formdev.flatlaf.FlatClientProperties;
/**
* Provides the Flat LaF UI delegate for {@link javax.swing.JList}.
@@ -95,6 +97,17 @@ public class FlatListUI
selectionInactiveForeground = null;
}
@Override
protected PropertyChangeListener createPropertyChangeListener() {
PropertyChangeListener superListener = super.createPropertyChangeListener();
return e -> {
superListener.propertyChange( e );
if( FlatClientProperties.COMPONENT_FOCUS_OWNER.equals( e.getPropertyName() ) )
toggleSelectionColors();
};
}
@Override
protected FocusListener createFocusListener() {
return new BasicListUI.FocusHandler() {

View File

@@ -25,6 +25,7 @@ import java.awt.Graphics2D;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.geom.Rectangle2D;
import java.beans.PropertyChangeListener;
import javax.swing.JComponent;
import javax.swing.JScrollPane;
import javax.swing.JViewport;
@@ -34,6 +35,7 @@ import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicTableUI;
import javax.swing.table.JTableHeader;
import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.util.Graphics2DProxy;
import com.formdev.flatlaf.util.SystemInfo;
import com.formdev.flatlaf.util.UIScale;
@@ -103,6 +105,8 @@ public class FlatTableUI
private boolean oldShowVerticalLines;
private Dimension oldIntercellSpacing;
private PropertyChangeListener propertyChangeListener;
public static ComponentUI createUI( JComponent c ) {
return new FlatTableUI();
}
@@ -162,6 +166,25 @@ public class FlatTableUI
table.setIntercellSpacing( oldIntercellSpacing );
}
@Override
protected void installListeners() {
super.installListeners();
propertyChangeListener = e -> {
if( FlatClientProperties.COMPONENT_FOCUS_OWNER.equals( e.getPropertyName() ) )
toggleSelectionColors();
};
table.addPropertyChangeListener( propertyChangeListener );
}
@Override
protected void uninstallListeners() {
super.uninstallListeners();
table.removePropertyChangeListener( propertyChangeListener );
propertyChangeListener = null;
}
@Override
protected FocusListener createFocusListener() {
return new BasicTableUI.FocusHandler() {

View File

@@ -59,9 +59,9 @@ class FlatThemePreviewAll
list1.setSelectedIndex( 1 );
tree1.setSelectionRow( 1 );
table1.setRowSelectionInterval( 1, 1 );
table1.setRowSorter( new TableRowSorter<>( table1.getModel() ) );
table1.getRowSorter().toggleSortOrder( 0 );
table1.setRowSelectionInterval( 1, 1 );
table1.uiDefaultsGetter = preview::getUIDefaultProperty;
EventQueue.invokeLater( () -> {