mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-12 23:07:15 -06:00
Theme Editor: preview improvements:
- added JSplitPane (contains JList and JTree) - sort first column in JTable to have preview of sort direction arrow - fixed background color of JEditorPane and JTextPane when enabling/disabling - keep first JMenu enabled, but disable the menu items
This commit is contained in:
@@ -30,6 +30,7 @@ import javax.swing.UIDefaults.LazyValue;
|
|||||||
import javax.swing.event.DocumentEvent;
|
import javax.swing.event.DocumentEvent;
|
||||||
import javax.swing.event.DocumentListener;
|
import javax.swing.event.DocumentListener;
|
||||||
import javax.swing.table.DefaultTableModel;
|
import javax.swing.table.DefaultTableModel;
|
||||||
|
import javax.swing.table.TableRowSorter;
|
||||||
import javax.swing.tree.DefaultMutableTreeNode;
|
import javax.swing.tree.DefaultMutableTreeNode;
|
||||||
import javax.swing.tree.DefaultTreeModel;
|
import javax.swing.tree.DefaultTreeModel;
|
||||||
import com.formdev.flatlaf.FlatLaf;
|
import com.formdev.flatlaf.FlatLaf;
|
||||||
@@ -69,6 +70,8 @@ class FlatThemePreview
|
|||||||
list1.setSelectedIndex( 1 );
|
list1.setSelectedIndex( 1 );
|
||||||
tree1.setSelectionRow( 1 );
|
tree1.setSelectionRow( 1 );
|
||||||
table1.setRowSelectionInterval( 1, 1 );
|
table1.setRowSelectionInterval( 1, 1 );
|
||||||
|
table1.setRowSorter( new TableRowSorter<>( table1.getModel() ) );
|
||||||
|
table1.getRowSorter().toggleSortOrder( 0 );
|
||||||
table1.uiDefaultsGetter = this::getUIDefaultProperty;
|
table1.uiDefaultsGetter = this::getUIDefaultProperty;
|
||||||
|
|
||||||
EventQueue.invokeLater( () -> {
|
EventQueue.invokeLater( () -> {
|
||||||
@@ -268,7 +271,7 @@ class FlatThemePreview
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void enableDisable( Component comp, boolean enabled ) {
|
private void enableDisable( Component comp, boolean enabled ) {
|
||||||
if( comp != previewLabel && comp != enabledCheckBox )
|
if( comp != previewLabel && comp != enabledCheckBox && comp != menu2 )
|
||||||
comp.setEnabled( enabled );
|
comp.setEnabled( enabled );
|
||||||
|
|
||||||
if( !(comp instanceof Container) || comp instanceof JInternalFrame )
|
if( !(comp instanceof Container) || comp instanceof JInternalFrame )
|
||||||
@@ -278,8 +281,21 @@ class FlatThemePreview
|
|||||||
if( c instanceof JScrollPane )
|
if( c instanceof JScrollPane )
|
||||||
c = ((JScrollPane)c).getViewport().getView();
|
c = ((JScrollPane)c).getViewport().getView();
|
||||||
|
|
||||||
|
// make sure that background is updated correctly in BasicTextUI.updateBackground()
|
||||||
|
if( c instanceof JTextPane )
|
||||||
|
c.setBackground( UIManager.getColor( "TextPane.background" ) );
|
||||||
|
else if( c instanceof JEditorPane )
|
||||||
|
c.setBackground( UIManager.getColor( "EditorPane.background" ) );
|
||||||
|
|
||||||
enableDisable( c, enabled );
|
enableDisable( c, enabled );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( comp instanceof JMenu ) {
|
||||||
|
JMenu menu = (JMenu) comp;
|
||||||
|
int count = menu.getMenuComponentCount();
|
||||||
|
for( int i = 0; i < count; i++ )
|
||||||
|
enableDisable( menu.getMenuComponent( i ), enabled );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void changeProgress() {
|
private void changeProgress() {
|
||||||
@@ -384,6 +400,7 @@ class FlatThemePreview
|
|||||||
tabbedPaneLabel = new JLabel();
|
tabbedPaneLabel = new JLabel();
|
||||||
tabbedPane1 = new FlatThemePreview.PreviewTabbedPane();
|
tabbedPane1 = new FlatThemePreview.PreviewTabbedPane();
|
||||||
listTreeLabel = new JLabel();
|
listTreeLabel = new JLabel();
|
||||||
|
splitPane1 = new JSplitPane();
|
||||||
scrollPane2 = new JScrollPane();
|
scrollPane2 = new JScrollPane();
|
||||||
list1 = new JList<>();
|
list1 = new JList<>();
|
||||||
scrollPane3 = new JScrollPane();
|
scrollPane3 = new JScrollPane();
|
||||||
@@ -796,43 +813,51 @@ class FlatThemePreview
|
|||||||
add(tabbedPane1, "cell 1 23");
|
add(tabbedPane1, "cell 1 23");
|
||||||
|
|
||||||
//---- listTreeLabel ----
|
//---- listTreeLabel ----
|
||||||
listTreeLabel.setText("JList / JTree:");
|
listTreeLabel.setText("<html>JList / JTree:<br>JSplitPane:</html>");
|
||||||
add(listTreeLabel, "cell 0 24");
|
add(listTreeLabel, "cell 0 24,aligny top,growy 0");
|
||||||
|
|
||||||
//======== scrollPane2 ========
|
//======== splitPane1 ========
|
||||||
{
|
{
|
||||||
|
splitPane1.setResizeWeight(0.5);
|
||||||
|
|
||||||
//---- list1 ----
|
//======== scrollPane2 ========
|
||||||
list1.setModel(new AbstractListModel<String>() {
|
{
|
||||||
String[] values = {
|
scrollPane2.setPreferredSize(new Dimension(50, 50));
|
||||||
"Item 1",
|
|
||||||
"Item 2",
|
//---- list1 ----
|
||||||
"Item 3"
|
list1.setModel(new AbstractListModel<String>() {
|
||||||
};
|
String[] values = {
|
||||||
@Override
|
"Item 1",
|
||||||
public int getSize() { return values.length; }
|
"Item 2",
|
||||||
@Override
|
"Item 3"
|
||||||
public String getElementAt(int i) { return values[i]; }
|
};
|
||||||
});
|
@Override
|
||||||
scrollPane2.setViewportView(list1);
|
public int getSize() { return values.length; }
|
||||||
|
@Override
|
||||||
|
public String getElementAt(int i) { return values[i]; }
|
||||||
|
});
|
||||||
|
scrollPane2.setViewportView(list1);
|
||||||
|
}
|
||||||
|
splitPane1.setLeftComponent(scrollPane2);
|
||||||
|
|
||||||
|
//======== scrollPane3 ========
|
||||||
|
{
|
||||||
|
scrollPane3.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
||||||
|
scrollPane3.setPreferredSize(new Dimension(50, 50));
|
||||||
|
|
||||||
|
//---- tree1 ----
|
||||||
|
tree1.setModel(new DefaultTreeModel(
|
||||||
|
new DefaultMutableTreeNode("Item 1") {
|
||||||
|
{
|
||||||
|
add(new DefaultMutableTreeNode("Item 2"));
|
||||||
|
add(new DefaultMutableTreeNode("Item 3"));
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
scrollPane3.setViewportView(tree1);
|
||||||
|
}
|
||||||
|
splitPane1.setRightComponent(scrollPane3);
|
||||||
}
|
}
|
||||||
add(scrollPane2, "cell 1 24,width 50,height 50");
|
add(splitPane1, "cell 1 24,height 50");
|
||||||
|
|
||||||
//======== scrollPane3 ========
|
|
||||||
{
|
|
||||||
scrollPane3.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
|
||||||
|
|
||||||
//---- tree1 ----
|
|
||||||
tree1.setModel(new DefaultTreeModel(
|
|
||||||
new DefaultMutableTreeNode("Item 1") {
|
|
||||||
{
|
|
||||||
add(new DefaultMutableTreeNode("Item 2"));
|
|
||||||
add(new DefaultMutableTreeNode("Item 3"));
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
scrollPane3.setViewportView(tree1);
|
|
||||||
}
|
|
||||||
add(scrollPane3, "cell 1 24,width 50,height 50");
|
|
||||||
|
|
||||||
//---- tableLabel ----
|
//---- tableLabel ----
|
||||||
tableLabel.setText("JTable:");
|
tableLabel.setText("JTable:");
|
||||||
@@ -984,6 +1009,7 @@ class FlatThemePreview
|
|||||||
private JLabel tabbedPaneLabel;
|
private JLabel tabbedPaneLabel;
|
||||||
private FlatThemePreview.PreviewTabbedPane tabbedPane1;
|
private FlatThemePreview.PreviewTabbedPane tabbedPane1;
|
||||||
private JLabel listTreeLabel;
|
private JLabel listTreeLabel;
|
||||||
|
private JSplitPane splitPane1;
|
||||||
private JScrollPane scrollPane2;
|
private JScrollPane scrollPane2;
|
||||||
private JList<String> list1;
|
private JList<String> list1;
|
||||||
private JScrollPane scrollPane3;
|
private JScrollPane scrollPane3;
|
||||||
|
|||||||
@@ -510,40 +510,48 @@ new FormModel {
|
|||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
name: "listTreeLabel"
|
name: "listTreeLabel"
|
||||||
"text": "JList / JTree:"
|
"text": "<html>JList / JTree:<br>JSplitPane:</html>"
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 0 24"
|
"value": "cell 0 24,aligny top,growy 0"
|
||||||
} )
|
} )
|
||||||
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
|
add( new FormContainer( "javax.swing.JSplitPane", new FormLayoutManager( class javax.swing.JSplitPane ) ) {
|
||||||
name: "scrollPane2"
|
name: "splitPane1"
|
||||||
add( new FormComponent( "javax.swing.JList" ) {
|
"resizeWeight": 0.5
|
||||||
name: "list1"
|
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
|
||||||
"model": new javax.swing.DefaultListModel {
|
name: "scrollPane2"
|
||||||
addElement( "Item 1" )
|
"preferredSize": new java.awt.Dimension( 50, 50 )
|
||||||
addElement( "Item 2" )
|
add( new FormComponent( "javax.swing.JList" ) {
|
||||||
addElement( "Item 3" )
|
name: "list1"
|
||||||
}
|
"model": new javax.swing.DefaultListModel {
|
||||||
|
addElement( "Item 1" )
|
||||||
|
addElement( "Item 2" )
|
||||||
|
addElement( "Item 3" )
|
||||||
|
}
|
||||||
|
} )
|
||||||
|
}, new FormLayoutConstraints( class java.lang.String ) {
|
||||||
|
"value": "left"
|
||||||
} )
|
} )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
|
||||||
"value": "cell 1 24,width 50,height 50"
|
name: "scrollPane3"
|
||||||
} )
|
"horizontalScrollBarPolicy": 31
|
||||||
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
|
"preferredSize": new java.awt.Dimension( 50, 50 )
|
||||||
name: "scrollPane3"
|
add( new FormComponent( "javax.swing.JTree" ) {
|
||||||
"horizontalScrollBarPolicy": 31
|
name: "tree1"
|
||||||
add( new FormComponent( "javax.swing.JTree" ) {
|
"model": new javax.swing.tree.DefaultTreeModel( new javax.swing.tree.DefaultMutableTreeNode {
|
||||||
name: "tree1"
|
userObject: "Item 1"
|
||||||
"model": new javax.swing.tree.DefaultTreeModel( new javax.swing.tree.DefaultMutableTreeNode {
|
add( new javax.swing.tree.DefaultMutableTreeNode {
|
||||||
userObject: "Item 1"
|
userObject: "Item 2"
|
||||||
add( new javax.swing.tree.DefaultMutableTreeNode {
|
} )
|
||||||
userObject: "Item 2"
|
add( new javax.swing.tree.DefaultMutableTreeNode {
|
||||||
} )
|
userObject: "Item 3"
|
||||||
add( new javax.swing.tree.DefaultMutableTreeNode {
|
} )
|
||||||
userObject: "Item 3"
|
|
||||||
} )
|
} )
|
||||||
} )
|
} )
|
||||||
|
}, new FormLayoutConstraints( class java.lang.String ) {
|
||||||
|
"value": "right"
|
||||||
} )
|
} )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 1 24,width 50,height 50"
|
"value": "cell 1 24,height 50"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
name: "tableLabel"
|
name: "tableLabel"
|
||||||
|
|||||||
Reference in New Issue
Block a user