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 void setWindowToolbar( Window window );
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ class DemoFrame
|
||||
setTitle( null );
|
||||
|
||||
// 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+)
|
||||
@@ -903,6 +903,54 @@ class DemoFrame
|
||||
buttonGroup1.add(radioButtonMenuItem3);
|
||||
// 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
|
||||
FlatButton usersButton = new FlatButton();
|
||||
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.roboto.FlatRobotoFont;
|
||||
import com.formdev.flatlaf.fonts.roboto_mono.FlatRobotoMonoFont;
|
||||
import com.formdev.flatlaf.ui.FlatNativeMacLibrary;
|
||||
import com.formdev.flatlaf.util.SystemInfo;
|
||||
|
||||
/**
|
||||
@@ -117,6 +118,10 @@ public class FlatLafDemo
|
||||
// show frame
|
||||
frame.pack();
|
||||
frame.setLocationRelativeTo( null );
|
||||
if( SystemInfo.isMacOS && FlatNativeMacLibrary.isLoaded() ) {
|
||||
// TODO use client property
|
||||
FlatNativeMacLibrary.setWindowToolbar( frame );
|
||||
}
|
||||
frame.setVisible( true );
|
||||
} );
|
||||
}
|
||||
|
||||
@@ -15,6 +15,14 @@ extern "C" {
|
||||
JNIEXPORT jboolean JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_setWindowRoundedBorder
|
||||
(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
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -87,3 +87,27 @@ JNIEXPORT jboolean JNICALL Java_com_formdev_flatlaf_ui_FlatNativeMacLibrary_setW
|
||||
JNI_COCOA_EXIT()
|
||||
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