mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-06 22:10:54 +03:00
macOS large title bar: add NSToolbar to NSWindow
This commit is contained in:
@@ -53,4 +53,6 @@ public class FlatNativeMacLibrary
|
|||||||
}
|
}
|
||||||
|
|
||||||
public native static boolean setWindowRoundedBorder( Window window, float radius, float borderWidth, int borderColor );
|
public native static boolean setWindowRoundedBorder( Window window, float radius, float borderWidth, int borderColor );
|
||||||
|
|
||||||
|
public native static void setWindowToolbar( Window window );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ class DemoFrame
|
|||||||
setTitle( null );
|
setTitle( null );
|
||||||
|
|
||||||
// add gap to left side of toolbar
|
// add gap to left side of toolbar
|
||||||
toolBar.add( Box.createHorizontalStrut( 70 ), 0 );
|
toolBar.add( Box.createHorizontalStrut( 80 ), 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// enable full screen mode for this window (for Java 8 - 10; not necessary for Java 11+)
|
// enable full screen mode for this window (for Java 8 - 10; not necessary for Java 11+)
|
||||||
@@ -903,6 +903,54 @@ class DemoFrame
|
|||||||
buttonGroup1.add(radioButtonMenuItem3);
|
buttonGroup1.add(radioButtonMenuItem3);
|
||||||
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||||
|
|
||||||
|
backButton.addActionListener( e -> System.out.println( e ) );
|
||||||
|
backButton.addMouseListener( new MouseListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseReleased( MouseEvent e ) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
System.out.println( "m release" );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mousePressed( MouseEvent e ) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
System.out.println( "m press" );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseExited( MouseEvent e ) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
System.out.println( "m exit" );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseEntered( MouseEvent e ) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
System.out.println( "m ent" );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseClicked( MouseEvent e ) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
System.out.println( "m click" );
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
backButton.addMouseMotionListener( new MouseMotionListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseMoved( MouseEvent e ) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
System.out.println( "m moved" );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseDragged( MouseEvent e ) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
System.out.println( "m drag" );
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
|
||||||
// add "Users" button to menubar
|
// add "Users" button to menubar
|
||||||
FlatButton usersButton = new FlatButton();
|
FlatButton usersButton = new FlatButton();
|
||||||
usersButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/users.svg" ) );
|
usersButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/demo/icons/users.svg" ) );
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import com.formdev.flatlaf.fonts.inter.FlatInterFont;
|
|||||||
import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont;
|
import com.formdev.flatlaf.fonts.jetbrains_mono.FlatJetBrainsMonoFont;
|
||||||
import com.formdev.flatlaf.fonts.roboto.FlatRobotoFont;
|
import com.formdev.flatlaf.fonts.roboto.FlatRobotoFont;
|
||||||
import com.formdev.flatlaf.fonts.roboto_mono.FlatRobotoMonoFont;
|
import com.formdev.flatlaf.fonts.roboto_mono.FlatRobotoMonoFont;
|
||||||
|
import com.formdev.flatlaf.ui.FlatNativeMacLibrary;
|
||||||
import com.formdev.flatlaf.util.SystemInfo;
|
import com.formdev.flatlaf.util.SystemInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -117,6 +118,10 @@ public class FlatLafDemo
|
|||||||
// show frame
|
// show frame
|
||||||
frame.pack();
|
frame.pack();
|
||||||
frame.setLocationRelativeTo( null );
|
frame.setLocationRelativeTo( null );
|
||||||
|
if( SystemInfo.isMacOS && FlatNativeMacLibrary.isLoaded() ) {
|
||||||
|
// TODO use client property
|
||||||
|
FlatNativeMacLibrary.setWindowToolbar( frame );
|
||||||
|
}
|
||||||
frame.setVisible( true );
|
frame.setVisible( true );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,14 @@ extern "C" {
|
|||||||
JNIEXPORT jboolean JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_setWindowRoundedBorder
|
JNIEXPORT jboolean JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_setWindowRoundedBorder
|
||||||
(JNIEnv *, jclass, jobject, jfloat, jfloat, jint);
|
(JNIEnv *, jclass, jobject, jfloat, jfloat, jint);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_formdev_flatlaf_ui_FlatNativeMacLibrary
|
||||||
|
* Method: setWindowToolbar
|
||||||
|
* Signature: (Ljava/awt/Window;)V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_setWindowToolbar
|
||||||
|
(JNIEnv *, jclass, jobject);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -87,3 +87,27 @@ JNIEXPORT jboolean JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_setW
|
|||||||
JNI_COCOA_EXIT()
|
JNI_COCOA_EXIT()
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
JNIEXPORT void JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_setWindowToolbar
|
||||||
|
( JNIEnv* env, jclass cls, jobject window )
|
||||||
|
{
|
||||||
|
JNI_COCOA_ENTER()
|
||||||
|
|
||||||
|
NSWindow* nsWindow = getNSWindow( env, cls, window );
|
||||||
|
if( nsWindow == NULL )
|
||||||
|
return;
|
||||||
|
|
||||||
|
[FlatJNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||||
|
NSLog( @"\n%@\n\n", [nsWindow.contentView.superview _subtreeDescription] );
|
||||||
|
|
||||||
|
NSToolbar* toolbar = [NSToolbar new];
|
||||||
|
nsWindow.toolbar = toolbar;
|
||||||
|
|
||||||
|
// TODO handle fullscreen
|
||||||
|
|
||||||
|
NSLog( @"\n%@\n\n", [nsWindow.contentView.superview _subtreeDescription] );
|
||||||
|
}];
|
||||||
|
|
||||||
|
JNI_COCOA_EXIT()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user