You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ge...@apache.org on 2021/03/29 20:06:59 UTC
[netbeans] branch master updated: Update FlatLaf from 1.0 to 1.1.1
and added "FlatLaf" options panel under "Appearance" category
This is an automated email from the ASF dual-hosted git repository.
geertjan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new f9a147f Update FlatLaf from 1.0 to 1.1.1 and added "FlatLaf" options panel under "Appearance" category
new dfab059 Merge pull request #2839 from DevCharly/flatlaf-1.1-and-options
f9a147f is described below
commit f9a147f7e7058881fd9bf87cd1c6596c9f78e5b0
Author: Karl Tauber <ka...@jformdesigner.com>
AuthorDate: Mon Mar 29 19:09:14 2021 +0200
Update FlatLaf from 1.0 to 1.1.1 and added "FlatLaf" options panel under "Appearance" category
---
platform/libs.flatlaf/external/binaries-list | 2 +-
...f-1.0-license.txt => flatlaf-1.1.1-license.txt} | 4 +-
platform/libs.flatlaf/nbproject/project.properties | 2 +-
platform/libs.flatlaf/nbproject/project.xml | 4 +-
.../o.n.swing.laf.flatlaf/nbproject/project.xml | 17 ++
.../netbeans/swing/laf/flatlaf/Bundle.properties | 10 +
.../netbeans/swing/laf/flatlaf/FlatLFCustoms.java | 7 +
.../swing/laf/flatlaf/FlatLafOptionsPanel.form | 121 ++++++++++++
.../swing/laf/flatlaf/FlatLafOptionsPanel.java | 209 +++++++++++++++++++++
.../laf/flatlaf/FlatLafOptionsPanelController.java | 141 ++++++++++++++
.../netbeans/swing/laf/flatlaf/FlatLafPrefs.java | 85 +++++++++
11 files changed, 596 insertions(+), 6 deletions(-)
diff --git a/platform/libs.flatlaf/external/binaries-list b/platform/libs.flatlaf/external/binaries-list
index cb336c4..059194f 100644
--- a/platform/libs.flatlaf/external/binaries-list
+++ b/platform/libs.flatlaf/external/binaries-list
@@ -15,4 +15,4 @@
# specific language governing permissions and limitations
# under the License.
-A807C984F00B683C65503803720821F12E136E93 com.formdev:flatlaf:1.0
+21EF33DBED3B07C5A9E2BB67118BBDF0E930ACCC com.formdev:flatlaf:1.1.1
diff --git a/platform/libs.flatlaf/external/flatlaf-1.0-license.txt b/platform/libs.flatlaf/external/flatlaf-1.1.1-license.txt
similarity index 99%
rename from platform/libs.flatlaf/external/flatlaf-1.0-license.txt
rename to platform/libs.flatlaf/external/flatlaf-1.1.1-license.txt
index c2b9305..dd9f5f4 100644
--- a/platform/libs.flatlaf/external/flatlaf-1.0-license.txt
+++ b/platform/libs.flatlaf/external/flatlaf-1.1.1-license.txt
@@ -1,7 +1,7 @@
Name: FlatLaf Look and Feel
Description: FlatLaf Look and Feel
-Version: 1.0
-Files: flatlaf-1.0.jar
+Version: 1.1.1
+Files: flatlaf-1.1.1.jar
License: Apache-2.0
Origin: FormDev Software GmbH.
URL: https://www.formdev.com/flatlaf/
diff --git a/platform/libs.flatlaf/nbproject/project.properties b/platform/libs.flatlaf/nbproject/project.properties
index f0135fe..9018fcb 100644
--- a/platform/libs.flatlaf/nbproject/project.properties
+++ b/platform/libs.flatlaf/nbproject/project.properties
@@ -20,4 +20,4 @@ javac.compilerargs=-Xlint:unchecked
javac.source=1.8
nbm.target.cluster=platform
-release.external/flatlaf-1.0.jar=modules/ext/flatlaf-1.0.jar
+release.external/flatlaf-1.1.1.jar=modules/ext/flatlaf-1.1.1.jar
diff --git a/platform/libs.flatlaf/nbproject/project.xml b/platform/libs.flatlaf/nbproject/project.xml
index 88ba2c3..79f5476 100644
--- a/platform/libs.flatlaf/nbproject/project.xml
+++ b/platform/libs.flatlaf/nbproject/project.xml
@@ -30,8 +30,8 @@
<package>com.formdev.flatlaf.util</package>
</public-packages>
<class-path-extension>
- <runtime-relative-path>ext/flatlaf-1.0.jar</runtime-relative-path>
- <binary-origin>external/flatlaf-1.0.jar</binary-origin>
+ <runtime-relative-path>ext/flatlaf-1.1.1.jar</runtime-relative-path>
+ <binary-origin>external/flatlaf-1.1.1.jar</binary-origin>
</class-path-extension>
</data>
</configuration>
diff --git a/platform/o.n.swing.laf.flatlaf/nbproject/project.xml b/platform/o.n.swing.laf.flatlaf/nbproject/project.xml
index 06ad263..08b6834 100644
--- a/platform/o.n.swing.laf.flatlaf/nbproject/project.xml
+++ b/platform/o.n.swing.laf.flatlaf/nbproject/project.xml
@@ -82,6 +82,23 @@
<specification-version>7.75</specification-version>
</run-dependency>
</dependency>
+ <dependency>
+ <code-name-base>org.netbeans.modules.options.api</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>1</release-version>
+ <specification-version>1.57</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.util.lookup</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>8.46</specification-version>
+ </run-dependency>
+ </dependency>
</module-dependencies>
<public-packages/>
</data>
diff --git a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/Bundle.properties b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/Bundle.properties
index d6a62f7..5cf37b6 100644
--- a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/Bundle.properties
+++ b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/Bundle.properties
@@ -23,3 +23,13 @@ OpenIDE-Module-Short-Description=FlatLaf Look and Feels
Editors/FontsColors/FlatLafDark=FlatLaf Dark
Editors/FontsColors/FlatLafLight=FlatLaf Light
+
+FlatLaf_DisplayName=FlatLaf
+KW_FlatLafOptions=FlatLaf, Look and Feel, Window decorations, Unified title bar, Embedded menu bar, underline menu, mnemonics
+
+FlatLafOptionsPanel.useWindowDecorationsCheckBox.text=&Window decorations
+FlatLafOptionsPanel.restartLabel.text=(needs restart)
+FlatLafOptionsPanel.unifiedTitleBarCheckBox.text=&Unified title bar background
+FlatLafOptionsPanel.menuBarEmbeddedCheckBox.text=&Embedded menu bar
+FlatLafOptionsPanel.underlineMenuSelectionCheckBox.text=Use underline menu &selection
+FlatLafOptionsPanel.alwaysShowMnemonicsCheckBox.text=Always show &mnemonics
diff --git a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLFCustoms.java b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLFCustoms.java
index 0e198b8..cecbfa4 100644
--- a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLFCustoms.java
+++ b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLFCustoms.java
@@ -50,6 +50,13 @@ public class FlatLFCustoms extends LFCustoms {
};
return new Object[] {
+ // options
+ "TitlePane.useWindowDecorations", FlatLafPrefs.isUseWindowDecorations(),
+ "TitlePane.unifiedBackground", FlatLafPrefs.isUnifiedTitleBar(),
+ "TitlePane.menuBarEmbedded", FlatLafPrefs.isMenuBarEmbedded(),
+ "MenuItem.selectionType", FlatLafPrefs.isUnderlineMenuSelection() ? "underline" : null,
+ "Component.hideMnemonics", !FlatLafPrefs.isAlwaysShowMnemonics(),
+
// necessary for org.openide.explorer.propertysheet.PropertySheet and others
CONTROLFONT, UIManager.getFont("Label.font"), // NOI18N
diff --git a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafOptionsPanel.form b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafOptionsPanel.form
new file mode 100644
index 0000000..90aeab6
--- /dev/null
+++ b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafOptionsPanel.form
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+ <Properties>
+ <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+ <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
+ <EmptyBorder bottom="10" left="10" right="10" top="10"/>
+ </Border>
+ </Property>
+ </Properties>
+ <AuxValues>
+ <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
+ <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+ <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
+ <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
+ <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+ <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+ </AuxValues>
+
+ <Layout>
+ <DimensionLayout dim="0">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" attributes="0">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" attributes="0">
+ <Component id="useWindowDecorationsCheckBox" min="-2" max="-2" attributes="0"/>
+ <EmptySpace type="separate" max="-2" attributes="0"/>
+ <Component id="restartLabel" min="-2" max="-2" attributes="0"/>
+ </Group>
+ <Component id="unifiedTitleBarCheckBox" min="-2" max="-2" attributes="0"/>
+ <Component id="menuBarEmbeddedCheckBox" min="-2" max="-2" attributes="0"/>
+ <Component id="underlineMenuSelectionCheckBox" min="-2" max="-2" attributes="0"/>
+ <Component id="alwaysShowMnemonicsCheckBox" min="-2" max="-2" attributes="0"/>
+ </Group>
+ <EmptySpace pref="155" max="32767" attributes="0"/>
+ </Group>
+ </Group>
+ </DimensionLayout>
+ <DimensionLayout dim="1">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" alignment="0" attributes="0">
+ <Group type="103" groupAlignment="3" attributes="0">
+ <Component id="useWindowDecorationsCheckBox" alignment="3" min="-2" max="-2" attributes="0"/>
+ <Component id="restartLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+ </Group>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="unifiedTitleBarCheckBox" min="-2" max="-2" attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="menuBarEmbeddedCheckBox" min="-2" max="-2" attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="underlineMenuSelectionCheckBox" min="-2" max="-2" attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="alwaysShowMnemonicsCheckBox" min="-2" max="-2" attributes="0"/>
+ <EmptySpace pref="156" max="32767" attributes="0"/>
+ </Group>
+ </Group>
+ </DimensionLayout>
+ </Layout>
+ <SubComponents>
+ <Component class="javax.swing.JCheckBox" name="useWindowDecorationsCheckBox">
+ <Properties>
+ <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString bundle="org/netbeans/swing/laf/flatlaf/Bundle.properties" key="FlatLafOptionsPanel.useWindowDecorationsCheckBox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="useWindowDecorationsCheckBoxActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JCheckBox" name="menuBarEmbeddedCheckBox">
+ <Properties>
+ <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString bundle="org/netbeans/swing/laf/flatlaf/Bundle.properties" key="FlatLafOptionsPanel.menuBarEmbeddedCheckBox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="menuBarEmbeddedCheckBoxActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JCheckBox" name="unifiedTitleBarCheckBox">
+ <Properties>
+ <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString bundle="org/netbeans/swing/laf/flatlaf/Bundle.properties" key="FlatLafOptionsPanel.unifiedTitleBarCheckBox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="unifiedTitleBarCheckBoxActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JCheckBox" name="underlineMenuSelectionCheckBox">
+ <Properties>
+ <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString bundle="org/netbeans/swing/laf/flatlaf/Bundle.properties" key="FlatLafOptionsPanel.underlineMenuSelectionCheckBox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="underlineMenuSelectionCheckBoxActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JCheckBox" name="alwaysShowMnemonicsCheckBox">
+ <Properties>
+ <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString bundle="org/netbeans/swing/laf/flatlaf/Bundle.properties" key="FlatLafOptionsPanel.alwaysShowMnemonicsCheckBox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="alwaysShowMnemonicsCheckBoxActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JLabel" name="restartLabel">
+ <Properties>
+ <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString bundle="org/netbeans/swing/laf/flatlaf/Bundle.properties" key="FlatLafOptionsPanel.restartLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
+ </Property>
+ </Properties>
+ </Component>
+ </SubComponents>
+</Form>
diff --git a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafOptionsPanel.java b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafOptionsPanel.java
new file mode 100644
index 0000000..d347e5d
--- /dev/null
+++ b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafOptionsPanel.java
@@ -0,0 +1,209 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.swing.laf.flatlaf;
+
+import com.formdev.flatlaf.util.SystemInfo;
+import org.netbeans.spi.options.OptionsPanelController;
+
+/**
+ * @author Karl Tauber
+ */
+@OptionsPanelController.Keywords(
+ keywords={"#KW_FlatLafOptions"},
+ location="Appearance",
+ tabTitle="#FlatLaf_DisplayName"
+)
+public class FlatLafOptionsPanel extends javax.swing.JPanel {
+
+ private final FlatLafOptionsPanelController controller;
+
+ /**
+ * Creates new form FlatLafOptionsPanel
+ */
+ public FlatLafOptionsPanel(FlatLafOptionsPanelController controller) {
+ this.controller = controller;
+ initComponents();
+ updateEnabled();
+ }
+
+ private void updateEnabled() {
+ boolean supportsWindowDecorations = SystemInfo.isWindows_10_orLater;
+ useWindowDecorationsCheckBox.setEnabled(supportsWindowDecorations);
+ restartLabel.setEnabled(supportsWindowDecorations);
+ unifiedTitleBarCheckBox.setEnabled(supportsWindowDecorations && useWindowDecorationsCheckBox.isSelected());
+ menuBarEmbeddedCheckBox.setEnabled(supportsWindowDecorations && useWindowDecorationsCheckBox.isSelected());
+
+ restartLabel.setVisible(supportsWindowDecorations && FlatLafPrefs.isUseWindowDecorations() && !useWindowDecorationsCheckBox.isSelected());
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ useWindowDecorationsCheckBox = new javax.swing.JCheckBox();
+ menuBarEmbeddedCheckBox = new javax.swing.JCheckBox();
+ unifiedTitleBarCheckBox = new javax.swing.JCheckBox();
+ underlineMenuSelectionCheckBox = new javax.swing.JCheckBox();
+ alwaysShowMnemonicsCheckBox = new javax.swing.JCheckBox();
+ restartLabel = new javax.swing.JLabel();
+
+ setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10));
+
+ org.openide.awt.Mnemonics.setLocalizedText(useWindowDecorationsCheckBox, org.openide.util.NbBundle.getMessage(FlatLafOptionsPanel.class, "FlatLafOptionsPanel.useWindowDecorationsCheckBox.text")); // NOI18N
+ useWindowDecorationsCheckBox.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ useWindowDecorationsCheckBoxActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(menuBarEmbeddedCheckBox, org.openide.util.NbBundle.getMessage(FlatLafOptionsPanel.class, "FlatLafOptionsPanel.menuBarEmbeddedCheckBox.text")); // NOI18N
+ menuBarEmbeddedCheckBox.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ menuBarEmbeddedCheckBoxActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(unifiedTitleBarCheckBox, org.openide.util.NbBundle.getMessage(FlatLafOptionsPanel.class, "FlatLafOptionsPanel.unifiedTitleBarCheckBox.text")); // NOI18N
+ unifiedTitleBarCheckBox.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ unifiedTitleBarCheckBoxActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(underlineMenuSelectionCheckBox, org.openide.util.NbBundle.getMessage(FlatLafOptionsPanel.class, "FlatLafOptionsPanel.underlineMenuSelectionCheckBox.text")); // NOI18N
+ underlineMenuSelectionCheckBox.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ underlineMenuSelectionCheckBoxActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(alwaysShowMnemonicsCheckBox, org.openide.util.NbBundle.getMessage(FlatLafOptionsPanel.class, "FlatLafOptionsPanel.alwaysShowMnemonicsCheckBox.text")); // NOI18N
+ alwaysShowMnemonicsCheckBox.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ alwaysShowMnemonicsCheckBoxActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(restartLabel, org.openide.util.NbBundle.getMessage(FlatLafOptionsPanel.class, "FlatLafOptionsPanel.restartLabel.text")); // NOI18N
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(useWindowDecorationsCheckBox)
+ .addGap(18, 18, 18)
+ .addComponent(restartLabel))
+ .addComponent(unifiedTitleBarCheckBox)
+ .addComponent(menuBarEmbeddedCheckBox)
+ .addComponent(underlineMenuSelectionCheckBox)
+ .addComponent(alwaysShowMnemonicsCheckBox))
+ .addContainerGap(155, Short.MAX_VALUE))
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(useWindowDecorationsCheckBox)
+ .addComponent(restartLabel))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(unifiedTitleBarCheckBox)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(menuBarEmbeddedCheckBox)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(underlineMenuSelectionCheckBox)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(alwaysShowMnemonicsCheckBox)
+ .addContainerGap(156, Short.MAX_VALUE))
+ );
+ }// </editor-fold>//GEN-END:initComponents
+
+ private void useWindowDecorationsCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useWindowDecorationsCheckBoxActionPerformed
+ updateEnabled();
+ fireChanged();
+ }//GEN-LAST:event_useWindowDecorationsCheckBoxActionPerformed
+
+ private void unifiedTitleBarCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_unifiedTitleBarCheckBoxActionPerformed
+ fireChanged();
+ }//GEN-LAST:event_unifiedTitleBarCheckBoxActionPerformed
+
+ private void menuBarEmbeddedCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuBarEmbeddedCheckBoxActionPerformed
+ fireChanged();
+ }//GEN-LAST:event_menuBarEmbeddedCheckBoxActionPerformed
+
+ private void underlineMenuSelectionCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_underlineMenuSelectionCheckBoxActionPerformed
+ fireChanged();
+ }//GEN-LAST:event_underlineMenuSelectionCheckBoxActionPerformed
+
+ private void alwaysShowMnemonicsCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_alwaysShowMnemonicsCheckBoxActionPerformed
+ fireChanged();
+ }//GEN-LAST:event_alwaysShowMnemonicsCheckBoxActionPerformed
+
+ private void fireChanged() {
+ boolean isChanged = false;
+ if(useWindowDecorationsCheckBox.isSelected() != FlatLafPrefs.isUseWindowDecorations()
+ || unifiedTitleBarCheckBox.isSelected() != FlatLafPrefs.isUnifiedTitleBar()
+ || menuBarEmbeddedCheckBox.isSelected() != FlatLafPrefs.isMenuBarEmbedded()
+ || underlineMenuSelectionCheckBox.isSelected() != FlatLafPrefs.isUnderlineMenuSelection()
+ || alwaysShowMnemonicsCheckBox.isSelected() != FlatLafPrefs.isAlwaysShowMnemonics()) {
+ isChanged = true;
+ }
+ controller.changed(isChanged);
+ }
+
+ protected void load() {
+ useWindowDecorationsCheckBox.setSelected(FlatLafPrefs.isUseWindowDecorations());
+ unifiedTitleBarCheckBox.setSelected(FlatLafPrefs.isUnifiedTitleBar());
+ menuBarEmbeddedCheckBox.setSelected(FlatLafPrefs.isMenuBarEmbedded());
+ underlineMenuSelectionCheckBox.setSelected(FlatLafPrefs.isUnderlineMenuSelection());
+ alwaysShowMnemonicsCheckBox.setSelected(FlatLafPrefs.isAlwaysShowMnemonics());
+
+ updateEnabled();
+ }
+
+ protected boolean store() {
+ FlatLafPrefs.setUseWindowDecorations(useWindowDecorationsCheckBox.isSelected());
+ FlatLafPrefs.setUnifiedTitleBar(unifiedTitleBarCheckBox.isSelected());
+ FlatLafPrefs.setMenuBarEmbedded(menuBarEmbeddedCheckBox.isSelected());
+ FlatLafPrefs.setUnderlineMenuSelection(underlineMenuSelectionCheckBox.isSelected());
+ FlatLafPrefs.setAlwaysShowMnemonics(alwaysShowMnemonicsCheckBox.isSelected());
+ return false;
+ }
+
+ boolean valid() {
+ // TODO check whether form is consistent and complete
+ return true;
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JCheckBox alwaysShowMnemonicsCheckBox;
+ private javax.swing.JCheckBox menuBarEmbeddedCheckBox;
+ private javax.swing.JLabel restartLabel;
+ private javax.swing.JCheckBox underlineMenuSelectionCheckBox;
+ private javax.swing.JCheckBox unifiedTitleBarCheckBox;
+ private javax.swing.JCheckBox useWindowDecorationsCheckBox;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafOptionsPanelController.java b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafOptionsPanelController.java
new file mode 100644
index 0000000..1114aab
--- /dev/null
+++ b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafOptionsPanelController.java
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.swing.laf.flatlaf;
+
+import com.formdev.flatlaf.FlatLaf;
+import java.awt.Window;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import javax.swing.JComponent;
+import javax.swing.SwingUtilities;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import org.netbeans.spi.options.OptionsPanelController;
+import org.openide.util.HelpCtx;
+import org.openide.util.Lookup;
+
+/**
+ *
+ * @author charly
+ */
+@OptionsPanelController.SubRegistration(
+ displayName="#FlatLaf_DisplayName",
+ keywords="#KW_FlatLafOptions",
+ keywordsCategory="Appearance/FlatLaf",
+ location = "Appearance"
+)
+public class FlatLafOptionsPanelController extends OptionsPanelController {
+
+ private FlatLafOptionsPanel panel;
+ private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
+ private boolean changed;
+
+ @Override
+ public void update() {
+ getPanel().load();
+ changed = false;
+ }
+
+ @Override
+ public void applyChanges() {
+ if (!changed) {
+ return;
+ }
+
+ SwingUtilities.invokeLater(() -> {
+ boolean oldUseWindowDecorations = FlatLafPrefs.isUseWindowDecorations();
+ boolean oldUnifiedTitleBar = FlatLafPrefs.isUnifiedTitleBar();
+ boolean oldMenuBarEmbedded = FlatLafPrefs.isMenuBarEmbedded();
+ boolean oldUnderlineMenuSelection = FlatLafPrefs.isUnderlineMenuSelection();
+ boolean oldAlwaysShowMnemonics = FlatLafPrefs.isAlwaysShowMnemonics();
+
+ getPanel().store();
+ changed = false;
+
+ UIDefaults defaults = UIManager.getDefaults();
+ defaults.put("TitlePane.useWindowDecorations", FlatLafPrefs.isUseWindowDecorations());
+ defaults.put("TitlePane.unifiedBackground", FlatLafPrefs.isUnifiedTitleBar());
+ defaults.put("TitlePane.menuBarEmbedded", FlatLafPrefs.isMenuBarEmbedded());
+ defaults.put("MenuItem.selectionType", FlatLafPrefs.isUnderlineMenuSelection() ? "underline" : null);
+ defaults.put("Component.hideMnemonics", !FlatLafPrefs.isAlwaysShowMnemonics());
+
+ if (oldUseWindowDecorations != FlatLafPrefs.isUseWindowDecorations()
+ || oldUnifiedTitleBar != FlatLafPrefs.isUnifiedTitleBar()) {
+ FlatLaf.updateUI();
+ } else if (oldMenuBarEmbedded != FlatLafPrefs.isMenuBarEmbedded()
+ || oldUnderlineMenuSelection != FlatLafPrefs.isUnderlineMenuSelection()
+ || oldAlwaysShowMnemonics != FlatLafPrefs.isAlwaysShowMnemonics()) {
+ for (Window w : Window.getWindows()) {
+ w.revalidate();
+ w.repaint();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void cancel() {
+ // need not do anything special, if no changes have been persisted yet
+ }
+
+ @Override
+ public boolean isValid() {
+ return getPanel().valid();
+ }
+
+ @Override
+ public boolean isChanged() {
+ return changed;
+ }
+
+ @Override
+ public HelpCtx getHelpCtx() {
+ return null;
+ }
+
+ @Override
+ public JComponent getComponent(Lookup masterLookup) {
+ return getPanel();
+ }
+
+ @Override
+ public void addPropertyChangeListener(PropertyChangeListener l) {
+ pcs.addPropertyChangeListener(l);
+ }
+
+ @Override
+ public void removePropertyChangeListener(PropertyChangeListener l) {
+ pcs.removePropertyChangeListener(l);
+ }
+
+ protected FlatLafOptionsPanel getPanel() {
+ if (panel == null) {
+ panel = new FlatLafOptionsPanel(this);
+ }
+ return panel;
+ }
+
+ protected void changed(boolean isChanged) {
+ if (!changed) {
+ pcs.firePropertyChange(OptionsPanelController.PROP_CHANGED, false, true);
+ }
+ changed = isChanged;
+ pcs.firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
+ }
+}
diff --git a/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafPrefs.java b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafPrefs.java
new file mode 100644
index 0000000..403a8e7
--- /dev/null
+++ b/platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafPrefs.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.swing.laf.flatlaf;
+
+import java.util.prefs.Preferences;
+import org.openide.util.NbPreferences;
+
+/**
+ *
+ * @author Karl Tauber
+ */
+class FlatLafPrefs {
+
+ private static final String USE_WINDOW_DECORATIONS = "useWindowDecorations";
+ private static final String UNIFIED_TITLE_BAR = "unifiedTitleBar";
+ private static final String MENU_BAR_EMBEDDED = "menuBarEmbedded";
+ private static final String UNDERLINE_MENU_SELECTION = "underlineMenuSelection";
+ private static final String ALWAYS_SHOW_MNEMONICS = "alwaysShowMnemonics";
+
+ private static final Preferences prefs = NbPreferences.forModule(FlatLafPrefs.class);
+
+ static boolean isUseWindowDecorations() {
+ return prefs.getBoolean(USE_WINDOW_DECORATIONS, true);
+ }
+
+ static void setUseWindowDecorations(boolean value) {
+ putBoolean(USE_WINDOW_DECORATIONS, value, true);
+ }
+
+ static boolean isUnifiedTitleBar() {
+ return prefs.getBoolean(UNIFIED_TITLE_BAR, false);
+ }
+
+ static void setUnifiedTitleBar(boolean value) {
+ putBoolean(UNIFIED_TITLE_BAR, value, false);
+ }
+
+ static boolean isMenuBarEmbedded() {
+ return prefs.getBoolean(MENU_BAR_EMBEDDED, true);
+ }
+
+ static void setMenuBarEmbedded(boolean value) {
+ putBoolean(MENU_BAR_EMBEDDED, value, true);
+ }
+
+ static boolean isUnderlineMenuSelection() {
+ return prefs.getBoolean(UNDERLINE_MENU_SELECTION, false);
+ }
+
+ static void setUnderlineMenuSelection(boolean value) {
+ putBoolean(UNDERLINE_MENU_SELECTION, value, false);
+ }
+
+ static boolean isAlwaysShowMnemonics() {
+ return prefs.getBoolean(ALWAYS_SHOW_MNEMONICS, false);
+ }
+
+ static void setAlwaysShowMnemonics(boolean value) {
+ putBoolean(ALWAYS_SHOW_MNEMONICS, value, false);
+ }
+
+ private static void putBoolean(String key, boolean value, boolean def) {
+ if (value != def) {
+ prefs.putBoolean(key, value);
+ } else {
+ prefs.remove(key);
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists