blob: a14ad03798c7f7932a15b20708c302cc90b2748b [file] [log] [blame]
/*
* 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 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 = FlatLaf.supportsNativeWindowDecorations();
useWindowDecorationsCheckBox.setEnabled(supportsWindowDecorations);
unifiedTitleBarCheckBox.setEnabled(supportsWindowDecorations && useWindowDecorationsCheckBox.isSelected());
menuBarEmbeddedCheckBox.setEnabled(supportsWindowDecorations && useWindowDecorationsCheckBox.isSelected());
underlineMenuSelectionCheckBox.setEnabled(!SystemInfo.isMacOS);
}
/**
* 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();
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);
}
});
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)
.addComponent(useWindowDecorationsCheckBox)
.addComponent(unifiedTitleBarCheckBox)
.addComponent(menuBarEmbeddedCheckBox)
.addComponent(underlineMenuSelectionCheckBox)
.addComponent(alwaysShowMnemonicsCheckBox))
.addContainerGap(73, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(useWindowDecorationsCheckBox)
.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(25, 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.JCheckBox underlineMenuSelectionCheckBox;
private javax.swing.JCheckBox unifiedTitleBarCheckBox;
private javax.swing.JCheckBox useWindowDecorationsCheckBox;
// End of variables declaration//GEN-END:variables
}