mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-11 06:27:13 -06:00
Theme Editor: Preview: fixed preview of cell focus indicators in List, Table and Tree
This commit is contained in:
@@ -27,6 +27,7 @@ import java.util.function.Predicate;
|
|||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.table.DefaultTableModel;
|
import javax.swing.table.DefaultTableModel;
|
||||||
import javax.swing.table.JTableHeader;
|
import javax.swing.table.JTableHeader;
|
||||||
|
import javax.swing.table.TableCellRenderer;
|
||||||
import javax.swing.table.TableColumnModel;
|
import javax.swing.table.TableColumnModel;
|
||||||
import javax.swing.table.TableRowSorter;
|
import javax.swing.table.TableRowSorter;
|
||||||
import javax.swing.tree.DefaultMutableTreeNode;
|
import javax.swing.tree.DefaultMutableTreeNode;
|
||||||
@@ -37,6 +38,7 @@ import com.formdev.flatlaf.extras.FlatSVGIcon;
|
|||||||
import com.formdev.flatlaf.extras.components.*;
|
import com.formdev.flatlaf.extras.components.*;
|
||||||
import com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon;
|
import com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon;
|
||||||
import com.formdev.flatlaf.ui.FlatTabbedPaneUI;
|
import com.formdev.flatlaf.ui.FlatTabbedPaneUI;
|
||||||
|
import com.formdev.flatlaf.ui.FlatUIUtils;
|
||||||
import net.miginfocom.swing.*;
|
import net.miginfocom.swing.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -91,10 +93,14 @@ class FlatThemePreviewAll
|
|||||||
tabbedPane1.addTab( "Tab 8", null );
|
tabbedPane1.addTab( "Tab 8", null );
|
||||||
|
|
||||||
list1.setSelectedIndex( 1 );
|
list1.setSelectedIndex( 1 );
|
||||||
|
// list1.setSelectedIndices( new int[] { 0, 1 } );
|
||||||
|
list1.uiDefaultsGetter = preview::getUIDefaultProperty;
|
||||||
tree1.setSelectionRow( 1 );
|
tree1.setSelectionRow( 1 );
|
||||||
|
// tree1.setSelectionRows( new int[] { 0, 1 } );
|
||||||
table1.setRowSorter( new TableRowSorter<>( table1.getModel() ) );
|
table1.setRowSorter( new TableRowSorter<>( table1.getModel() ) );
|
||||||
table1.getRowSorter().toggleSortOrder( 0 );
|
table1.getRowSorter().toggleSortOrder( 0 );
|
||||||
table1.setRowSelectionInterval( 1, 1 );
|
table1.setRowSelectionInterval( 1, 1 );
|
||||||
|
table1.setColumnSelectionInterval( 0, 0 );
|
||||||
table1.uiDefaultsGetter = preview::getUIDefaultProperty;
|
table1.uiDefaultsGetter = preview::getUIDefaultProperty;
|
||||||
|
|
||||||
EventQueue.invokeLater( () -> {
|
EventQueue.invokeLater( () -> {
|
||||||
@@ -347,7 +353,7 @@ class FlatThemePreviewAll
|
|||||||
JLabel listTreeLabel = new JLabel();
|
JLabel listTreeLabel = new JLabel();
|
||||||
JSplitPane splitPane1 = new JSplitPane();
|
JSplitPane splitPane1 = new JSplitPane();
|
||||||
JScrollPane scrollPane2 = new JScrollPane();
|
JScrollPane scrollPane2 = new JScrollPane();
|
||||||
list1 = new JList<>();
|
list1 = new FlatThemePreviewAll.PreviewList();
|
||||||
JScrollPane scrollPane3 = new JScrollPane();
|
JScrollPane scrollPane3 = new JScrollPane();
|
||||||
tree1 = new JTree();
|
tree1 = new JTree();
|
||||||
JLabel tableLabel = new JLabel();
|
JLabel tableLabel = new JLabel();
|
||||||
@@ -980,7 +986,7 @@ class FlatThemePreviewAll
|
|||||||
private FlatProgressBar progressBar2;
|
private FlatProgressBar progressBar2;
|
||||||
private JToolBar toolBar1;
|
private JToolBar toolBar1;
|
||||||
private FlatThemePreviewAll.PreviewTabbedPane tabbedPane1;
|
private FlatThemePreviewAll.PreviewTabbedPane tabbedPane1;
|
||||||
private JList<String> list1;
|
private FlatThemePreviewAll.PreviewList list1;
|
||||||
private JTree tree1;
|
private JTree tree1;
|
||||||
private FlatThemePreviewAll.PreviewTable table1;
|
private FlatThemePreviewAll.PreviewTable table1;
|
||||||
private JDesktopPane desktopPane1;
|
private JDesktopPane desktopPane1;
|
||||||
@@ -1046,12 +1052,32 @@ class FlatThemePreviewAll
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---- class PreviewList --------------------------------------------------
|
||||||
|
|
||||||
|
private static class PreviewList
|
||||||
|
extends JList<String>
|
||||||
|
{
|
||||||
|
Function<Object, Object> uiDefaultsGetter;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void paint( Graphics g ) {
|
||||||
|
if( !Beans.isDesignTime() ) {
|
||||||
|
// needed for DefaultListCellRenderer
|
||||||
|
FlatLaf.runWithUIDefaultsGetter( uiDefaultsGetter, () -> {
|
||||||
|
super.paint( g );
|
||||||
|
} );
|
||||||
|
} else
|
||||||
|
super.paint( g );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//---- class PreviewTable -------------------------------------------------
|
//---- class PreviewTable -------------------------------------------------
|
||||||
|
|
||||||
private static class PreviewTable
|
private static class PreviewTable
|
||||||
extends JTable
|
extends JTable
|
||||||
{
|
{
|
||||||
Function<Object, Object> uiDefaultsGetter;
|
Function<Object, Object> uiDefaultsGetter;
|
||||||
|
private boolean inPrepareRenderer;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected JTableHeader createDefaultTableHeader() {
|
protected JTableHeader createDefaultTableHeader() {
|
||||||
@@ -1069,6 +1095,24 @@ class FlatThemePreviewAll
|
|||||||
super.paint( g );
|
super.paint( g );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component prepareRenderer( TableCellRenderer renderer, int row, int column ) {
|
||||||
|
inPrepareRenderer = true;
|
||||||
|
try {
|
||||||
|
return super.prepareRenderer( renderer, row, column );
|
||||||
|
} finally {
|
||||||
|
inPrepareRenderer = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isFocusOwner() {
|
||||||
|
// needed because FlatUIUtils.isPermanentFocusOwner() is not used in FlatTableUI
|
||||||
|
return inPrepareRenderer
|
||||||
|
? FlatUIUtils.isPermanentFocusOwner( this )
|
||||||
|
: super.isFocusOwner();
|
||||||
|
}
|
||||||
|
|
||||||
//---- class PreviewTableHeader ----
|
//---- class PreviewTableHeader ----
|
||||||
|
|
||||||
private class PreviewTableHeader
|
private class PreviewTableHeader
|
||||||
|
|||||||
@@ -624,7 +624,7 @@ new FormModel {
|
|||||||
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
|
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
|
||||||
name: "scrollPane2"
|
name: "scrollPane2"
|
||||||
"preferredSize": new java.awt.Dimension( 50, 50 )
|
"preferredSize": new java.awt.Dimension( 50, 50 )
|
||||||
add( new FormComponent( "javax.swing.JList" ) {
|
add( new FormComponent( "com.formdev.flatlaf.themeeditor.FlatThemePreviewAll$PreviewList" ) {
|
||||||
name: "list1"
|
name: "list1"
|
||||||
"model": new javax.swing.DefaultListModel {
|
"model": new javax.swing.DefaultListModel {
|
||||||
addElement( "Item 1" )
|
addElement( "Item 1" )
|
||||||
|
|||||||
Reference in New Issue
Block a user