mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-12 23:07:15 -06:00
FlatInspector: limit parent level to real depth at mouse location (issue #169)
This commit is contained in:
@@ -158,10 +158,20 @@ public class FlatInspector
|
|||||||
} else if( id == KeyEvent.KEY_RELEASED && wasCtrlOrShiftKeyPressed ) {
|
} else if( id == KeyEvent.KEY_RELEASED && wasCtrlOrShiftKeyPressed ) {
|
||||||
if( keyCode == KeyEvent.VK_CONTROL ) {
|
if( keyCode == KeyEvent.VK_CONTROL ) {
|
||||||
inspectParentLevel++;
|
inspectParentLevel++;
|
||||||
inspect( lastX, lastY );
|
int parentLevel = inspect( lastX, lastY );
|
||||||
|
|
||||||
|
// limit level
|
||||||
|
if( inspectParentLevel > parentLevel )
|
||||||
|
inspectParentLevel = parentLevel;
|
||||||
} else if( keyCode == KeyEvent.VK_SHIFT && inspectParentLevel > 0 ) {
|
} else if( keyCode == KeyEvent.VK_SHIFT && inspectParentLevel > 0 ) {
|
||||||
inspectParentLevel--;
|
inspectParentLevel--;
|
||||||
inspect( lastX, lastY );
|
int parentLevel = inspect( lastX, lastY );
|
||||||
|
|
||||||
|
// decrease level
|
||||||
|
if( inspectParentLevel > parentLevel ) {
|
||||||
|
inspectParentLevel = Math.max( parentLevel - 1, 0 );
|
||||||
|
inspect( lastX, lastY );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,24 +258,28 @@ public class FlatInspector
|
|||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void inspect( int x, int y ) {
|
private int inspect( int x, int y ) {
|
||||||
Point pt = SwingUtilities.convertPoint( rootPane.getGlassPane(), x, y, rootPane );
|
Point pt = SwingUtilities.convertPoint( rootPane.getGlassPane(), x, y, rootPane );
|
||||||
Component c = getDeepestComponentAt( rootPane, pt.x, pt.y );
|
Component c = getDeepestComponentAt( rootPane, pt.x, pt.y );
|
||||||
|
int parentLevel = 0;
|
||||||
for( int i = 0; i < inspectParentLevel && c != null; i++ ) {
|
for( int i = 0; i < inspectParentLevel && c != null; i++ ) {
|
||||||
Container parent = c.getParent();
|
Container parent = c.getParent();
|
||||||
if( parent == null )
|
if( parent == null )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
c = parent;
|
c = parent;
|
||||||
|
parentLevel++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( c == lastComponent )
|
if( c == lastComponent )
|
||||||
return;
|
return parentLevel;
|
||||||
|
|
||||||
lastComponent = c;
|
lastComponent = c;
|
||||||
|
|
||||||
highlight( c );
|
highlight( c );
|
||||||
showToolTip( c, x, y );
|
showToolTip( c, x, y, parentLevel );
|
||||||
|
|
||||||
|
return parentLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Component getDeepestComponentAt( Component parent, int x, int y ) {
|
private Component getDeepestComponentAt( Component parent, int x, int y ) {
|
||||||
@@ -338,7 +352,7 @@ public class FlatInspector
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showToolTip( Component c, int x, int y ) {
|
private void showToolTip( Component c, int x, int y, int parentLevel ) {
|
||||||
if( c == null ) {
|
if( c == null ) {
|
||||||
if( tip != null )
|
if( tip != null )
|
||||||
tip.setVisible( false );
|
tip.setVisible( false );
|
||||||
@@ -356,7 +370,7 @@ public class FlatInspector
|
|||||||
} else
|
} else
|
||||||
tip.setVisible( true );
|
tip.setVisible( true );
|
||||||
|
|
||||||
tip.setTipText( buildToolTipText( c ) );
|
tip.setTipText( buildToolTipText( c, parentLevel ) );
|
||||||
|
|
||||||
int tx = x + UIScale.scale( 8 );
|
int tx = x + UIScale.scale( 8 );
|
||||||
int ty = y + UIScale.scale( 16 );
|
int ty = y + UIScale.scale( 16 );
|
||||||
@@ -377,7 +391,7 @@ public class FlatInspector
|
|||||||
tip.repaint();
|
tip.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildToolTipText( Component c ) {
|
private static String buildToolTipText( Component c, int parentLevel ) {
|
||||||
String name = c.getClass().getName();
|
String name = c.getClass().getName();
|
||||||
name = name.substring( name.lastIndexOf( '.' ) + 1 );
|
name = name.substring( name.lastIndexOf( '.' ) + 1 );
|
||||||
|
|
||||||
@@ -441,10 +455,10 @@ public class FlatInspector
|
|||||||
text += "Left-to-right: " + c.getComponentOrientation().isLeftToRight() + '\n';
|
text += "Left-to-right: " + c.getComponentOrientation().isLeftToRight() + '\n';
|
||||||
text += "Parent: " + (c.getParent() != null ? c.getParent().getClass().getName() : "null");
|
text += "Parent: " + (c.getParent() != null ? c.getParent().getClass().getName() : "null");
|
||||||
|
|
||||||
if( inspectParentLevel > 0 )
|
if( parentLevel > 0 )
|
||||||
text += "\n\nParent level: " + inspectParentLevel;
|
text += "\n\nParent level: " + parentLevel;
|
||||||
|
|
||||||
if( inspectParentLevel > 0 )
|
if( parentLevel > 0 )
|
||||||
text += "\n(press Ctrl/Shift to increase/decrease level)";
|
text += "\n(press Ctrl/Shift to increase/decrease level)";
|
||||||
else
|
else
|
||||||
text += "\n\n(press Ctrl key to inspect parent)";
|
text += "\n\n(press Ctrl key to inspect parent)";
|
||||||
|
|||||||
Reference in New Issue
Block a user