mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-07 14:30:56 +03:00
Table: allow disabling swapped behavior of Home/End and Ctrl+Home/End with Table.consistentHomeEndKeyBehavior=false (issue #95)
This commit is contained in:
@@ -22,9 +22,11 @@ import javax.swing.KeyStroke;
|
|||||||
import javax.swing.LookAndFeel;
|
import javax.swing.LookAndFeel;
|
||||||
import javax.swing.UIDefaults;
|
import javax.swing.UIDefaults;
|
||||||
import javax.swing.UIDefaults.LazyValue;
|
import javax.swing.UIDefaults.LazyValue;
|
||||||
|
import javax.swing.UIManager;
|
||||||
import javax.swing.plaf.InputMapUIResource;
|
import javax.swing.plaf.InputMapUIResource;
|
||||||
import com.formdev.flatlaf.util.SystemInfo;
|
import com.formdev.flatlaf.util.SystemInfo;
|
||||||
import static javax.swing.text.DefaultEditorKit.*;
|
import static javax.swing.text.DefaultEditorKit.*;
|
||||||
|
import java.util.function.BooleanSupplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
@@ -81,8 +83,11 @@ class FlatInputMaps
|
|||||||
"shift ctrl TAB", "navigatePrevious"
|
"shift ctrl TAB", "navigatePrevious"
|
||||||
);
|
);
|
||||||
|
|
||||||
modifyInputMap( defaults, "Table.ancestorInputMap",
|
// swap Home/End with Ctrl+Home/End to make it consistent with List and Tree
|
||||||
// swap to make it consistent with List and Tree
|
modifyInputMap( () -> {
|
||||||
|
return UIManager.getBoolean( "Table.consistentHomeEndKeyBehavior" );
|
||||||
|
},
|
||||||
|
defaults, "Table.ancestorInputMap",
|
||||||
"HOME", "selectFirstRow",
|
"HOME", "selectFirstRow",
|
||||||
"END", "selectLastRow",
|
"END", "selectLastRow",
|
||||||
"shift HOME", "selectFirstRowExtendSelection",
|
"shift HOME", "selectFirstRowExtendSelection",
|
||||||
@@ -574,8 +579,12 @@ class FlatInputMaps
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void modifyInputMap( UIDefaults defaults, String key, Object... bindings ) {
|
private static void modifyInputMap( UIDefaults defaults, String key, Object... bindings ) {
|
||||||
// Note: not using `defaults.get(key)` here because this would resolve the lazy value
|
modifyInputMap( null, defaults, key, bindings );
|
||||||
defaults.put( key, new LazyModifyInputMap( defaults.remove( key ), bindings ) );
|
}
|
||||||
|
|
||||||
|
private static void modifyInputMap( BooleanSupplier condition, UIDefaults defaults, String key, Object... bindings ) {
|
||||||
|
// Note: not using `defaults.get(key)` here because this would resolve a lazy value
|
||||||
|
defaults.put( key, new LazyModifyInputMap( condition, defaults.remove( key ), bindings ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <T> T mac( T value, T macValue ) {
|
private static <T> T mac( T value, T macValue ) {
|
||||||
@@ -614,10 +623,12 @@ class FlatInputMaps
|
|||||||
private static class LazyModifyInputMap
|
private static class LazyModifyInputMap
|
||||||
implements LazyValue
|
implements LazyValue
|
||||||
{
|
{
|
||||||
|
private final BooleanSupplier condition;
|
||||||
private final Object baseInputMap;
|
private final Object baseInputMap;
|
||||||
private final Object[] bindings;
|
private final Object[] bindings;
|
||||||
|
|
||||||
LazyModifyInputMap( Object baseInputMap, Object[] bindings ) {
|
LazyModifyInputMap( BooleanSupplier condition, Object baseInputMap, Object[] bindings ) {
|
||||||
|
this.condition = condition;
|
||||||
this.baseInputMap = baseInputMap;
|
this.baseInputMap = baseInputMap;
|
||||||
this.bindings = bindings;
|
this.bindings = bindings;
|
||||||
}
|
}
|
||||||
@@ -629,6 +640,9 @@ class FlatInputMaps
|
|||||||
? (InputMap) ((LazyValue)baseInputMap).createValue( table )
|
? (InputMap) ((LazyValue)baseInputMap).createValue( table )
|
||||||
: (InputMap) baseInputMap;
|
: (InputMap) baseInputMap;
|
||||||
|
|
||||||
|
if( condition != null && !condition.getAsBoolean() )
|
||||||
|
return inputMap;
|
||||||
|
|
||||||
// modify input map (replace or remove)
|
// modify input map (replace or remove)
|
||||||
for( int i = 0; i < bindings.length; i += 2 ) {
|
for( int i = 0; i < bindings.length; i += 2 ) {
|
||||||
KeyStroke keyStroke = KeyStroke.getKeyStroke( (String) bindings[i] );
|
KeyStroke keyStroke = KeyStroke.getKeyStroke( (String) bindings[i] );
|
||||||
|
|||||||
@@ -71,6 +71,10 @@ import com.formdev.flatlaf.util.UIScale;
|
|||||||
* @uiDefault Table.cellFocusColor Color
|
* @uiDefault Table.cellFocusColor Color
|
||||||
* @uiDefault Table.showCellFocusIndicator boolean
|
* @uiDefault Table.showCellFocusIndicator boolean
|
||||||
*
|
*
|
||||||
|
* <!-- FlatInputMaps -->
|
||||||
|
*
|
||||||
|
* @uiDefault Table.consistentHomeEndKeyBehavior boolean
|
||||||
|
*
|
||||||
* @author Karl Tauber
|
* @author Karl Tauber
|
||||||
*/
|
*/
|
||||||
public class FlatTableUI
|
public class FlatTableUI
|
||||||
@@ -93,16 +97,6 @@ public class FlatTableUI
|
|||||||
return new FlatTableUI();
|
return new FlatTableUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void installUI( JComponent c ) {
|
|
||||||
super.installUI( c );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void uninstallUI( JComponent c ) {
|
|
||||||
super.uninstallUI( c );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void installDefaults() {
|
protected void installDefaults() {
|
||||||
super.installDefaults();
|
super.installDefaults();
|
||||||
|
|||||||
@@ -530,6 +530,7 @@ TabbedPane.contentBorderInsets=null
|
|||||||
Table.rowHeight=20
|
Table.rowHeight=20
|
||||||
Table.showHorizontalLines=false
|
Table.showHorizontalLines=false
|
||||||
Table.showVerticalLines=false
|
Table.showVerticalLines=false
|
||||||
|
Table.consistentHomeEndKeyBehavior=true
|
||||||
Table.intercellSpacing={dimension}0,0
|
Table.intercellSpacing={dimension}0,0
|
||||||
Table.scrollPaneBorder=com.formdev.flatlaf.ui.FlatBorder
|
Table.scrollPaneBorder=com.formdev.flatlaf.ui.FlatBorder
|
||||||
Table.ascendingSortIcon=com.formdev.flatlaf.icons.FlatAscendingSortIcon
|
Table.ascendingSortIcon=com.formdev.flatlaf.icons.FlatAscendingSortIcon
|
||||||
|
|||||||
@@ -937,6 +937,7 @@ Table.background #45494a javax.swing.plaf.ColorUIResource [UI]
|
|||||||
Table.cellFocusColor #000000 javax.swing.plaf.ColorUIResource [UI]
|
Table.cellFocusColor #000000 javax.swing.plaf.ColorUIResource [UI]
|
||||||
Table.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI]
|
Table.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI]
|
||||||
Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Default [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000
|
Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Default [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000
|
||||||
|
Table.consistentHomeEndKeyBehavior true
|
||||||
Table.descendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatDescendingSortIcon [UI]
|
Table.descendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatDescendingSortIcon [UI]
|
||||||
Table.dropCellBackground [lazy] #3c588b javax.swing.plaf.ColorUIResource [UI]
|
Table.dropCellBackground [lazy] #3c588b javax.swing.plaf.ColorUIResource [UI]
|
||||||
Table.dropCellForeground [lazy] #bbbbbb javax.swing.plaf.ColorUIResource [UI]
|
Table.dropCellForeground [lazy] #bbbbbb javax.swing.plaf.ColorUIResource [UI]
|
||||||
|
|||||||
@@ -942,6 +942,7 @@ Table.background #ffffff javax.swing.plaf.ColorUIResource [UI]
|
|||||||
Table.cellFocusColor #000000 javax.swing.plaf.ColorUIResource [UI]
|
Table.cellFocusColor #000000 javax.swing.plaf.ColorUIResource [UI]
|
||||||
Table.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI]
|
Table.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI]
|
||||||
Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Default [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000
|
Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Default [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000
|
||||||
|
Table.consistentHomeEndKeyBehavior true
|
||||||
Table.descendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatDescendingSortIcon [UI]
|
Table.descendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatDescendingSortIcon [UI]
|
||||||
Table.dropCellBackground [lazy] #3f8fd9 javax.swing.plaf.ColorUIResource [UI]
|
Table.dropCellBackground [lazy] #3f8fd9 javax.swing.plaf.ColorUIResource [UI]
|
||||||
Table.dropCellForeground [lazy] #ffffff javax.swing.plaf.ColorUIResource [UI]
|
Table.dropCellForeground [lazy] #ffffff javax.swing.plaf.ColorUIResource [UI]
|
||||||
|
|||||||
@@ -665,6 +665,7 @@ Table.background
|
|||||||
Table.cellFocusColor
|
Table.cellFocusColor
|
||||||
Table.cellMargins
|
Table.cellMargins
|
||||||
Table.cellNoFocusBorder
|
Table.cellNoFocusBorder
|
||||||
|
Table.consistentHomeEndKeyBehavior
|
||||||
Table.descendingSortIcon
|
Table.descendingSortIcon
|
||||||
Table.dropCellBackground
|
Table.dropCellBackground
|
||||||
Table.dropCellForeground
|
Table.dropCellForeground
|
||||||
|
|||||||
Reference in New Issue
Block a user