package tk.amberide.ide.gui.dialogs;
import tk.amberide.Settings;
import tk.amberide.ide.swing.UIUtil;
import java.awt.Font;
import java.util.HashMap;
import java.util.Map;
import javax.swing.DefaultComboBoxModel;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
/**
*
* @author Tudor
*/
public class SettingsDialog extends javax.swing.JDialog {
private static final HashMap<String, String> substanceLaF = new HashMap<String, String>();
static {
substanceLaF.put("Substance Nebula", "org.pushingpixels.substance.api.skin.SubstanceNebulaLookAndFeel");
substanceLaF.put("Substance Sahara", "org.pushingpixels.substance.api.skin.SubstanceSaharaLookAndFeel");
substanceLaF.put("Substance Business Black Steel", "org.pushingpixels.substance.api.skin.SubstanceBusinessBlackSteelLookAndFeel");
substanceLaF.put("Substance Office Silver 2007", "org.pushingpixels.substance.api.skin.SubstanceOfficeSilver2007LookAndFeel");
substanceLaF.put("Substance Autumn", "org.pushingpixels.substance.api.skin.SubstanceAutumnLookAndFeel");
substanceLaF.put("Substance Business", "org.pushingpixels.substance.api.skin.SubstanceBusinessLookAndFeel");
substanceLaF.put("Substance Creme", "org.pushingpixels.substance.api.skin.SubstanceCremeLookAndFeel");
substanceLaF.put("Substance Mariner", "org.pushingpixels.substance.api.skin.SubstanceMarinerLookAndFeel");
substanceLaF.put("Substance Dust Coffee", "org.pushingpixels.substance.api.skin.SubstanceDustCoffeeLookAndFeel");
substanceLaF.put("Substance Dust", "org.pushingpixels.substance.api.skin.SubstanceDustLookAndFeel");
substanceLaF.put("Substance Graphite Aqua", "org.pushingpixels.substance.api.skin.SubstanceGraphiteAquaLookAndFeel");
substanceLaF.put("Substance Business Blue Steel", "org.pushingpixels.substance.api.skin.SubstanceBusinessBlueSteelLookAndFeel");
substanceLaF.put("Substance Moderate", "org.pushingpixels.substance.api.skin.SubstanceModerateLookAndFeel");
substanceLaF.put("Substance Emerald Dusk", "org.pushingpixels.substance.api.skin.SubstanceEmeraldDuskLookAndFeel");
substanceLaF.put("Substance Creme Coffee", "org.pushingpixels.substance.api.skin.SubstanceCremeCoffeeLookAndFeel");
substanceLaF.put("Substance Gemini", "org.pushingpixels.substance.api.skin.SubstanceGeminiLookAndFeel");
substanceLaF.put("Substance Office Blue 2007", "org.pushingpixels.substance.api.skin.SubstanceOfficeBlue2007LookAndFeel");
substanceLaF.put("Substance Raven", "org.pushingpixels.substance.api.skin.SubstanceRavenLookAndFeel");
substanceLaF.put("Substance Office Black 2007", "org.pushingpixels.substance.api.skin.SubstanceOfficeBlack2007LookAndFeel");
substanceLaF.put("Substance Magellan", "org.pushingpixels.substance.api.skin.SubstanceMagellanLookAndFeel");
substanceLaF.put("Substance Graphite Glass", "org.pushingpixels.substance.api.skin.SubstanceGraphiteGlassLookAndFeel");
substanceLaF.put("Substance Challenger Deep", "org.pushingpixels.substance.api.skin.SubstanceChallengerDeepLookAndFeel");
substanceLaF.put("Substance Nebula Brick Wall", "org.pushingpixels.substance.api.skin.SubstanceNebulaBrickWallLookAndFeel");
substanceLaF.put("Substance Graphite", "org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel");
}
/**
* Creates new form SettingsDialog
*/
public SettingsDialog(java.awt.Frame parent) {
super(parent);
initComponents();
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
((DefaultComboBoxModel) lafCombobox.getModel()).addElement(info.getName());
}
for (String laf : new java.util.TreeSet<String>(substanceLaF.keySet())) {
((DefaultComboBoxModel) lafCombobox.getModel()).addElement(laf);
}
System.out.println(UIManager.getLookAndFeel().getName());
lafCombobox.setSelectedItem(UIManager.getLookAndFeel().getName());
Font def = Settings.getUIFont();
fontChooser.setSelectedFont(def);
fontChooser.setSelectedFontSize(def.getSize());
}
/**
* 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() {
jTabbedPane2 = new javax.swing.JTabbedPane();
jPanel2 = new javax.swing.JPanel();
fontChooser = new tk.amberide.ide.swing.misc.JFontChooser();
jPanel3 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
lafCombobox = new javax.swing.JComboBox();
applyButton = new javax.swing.JButton();
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Settings");
setModal(true);
jTabbedPane2.setTabPlacement(javax.swing.JTabbedPane.LEFT);
jTabbedPane2.setFocusable(false);
fontChooser.setBorder(javax.swing.BorderFactory.createTitledBorder("Font"));
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Theme"));
jLabel1.setText("Theme:");
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lafCombobox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(lafCombobox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(fontChooser, javax.swing.GroupLayout.DEFAULT_SIZE, 635, Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(fontChooser, javax.swing.GroupLayout.DEFAULT_SIZE, 322, Short.MAX_VALUE)
.addContainerGap())
);
jTabbedPane2.addTab("Appearance", jPanel2);
applyButton.setText("Apply");
applyButton.setMaximumSize(null);
applyButton.setPreferredSize(null);
applyButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
applyButtonActionPerformed(evt);
}
});
okButton.setText("OK");
okButton.setMaximumSize(null);
okButton.setPreferredSize(null);
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
cancelButton.setText("Cancel");
cancelButton.setMaximumSize(null);
cancelButton.setPreferredSize(null);
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jTabbedPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 734, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(applyButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cancelButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jTabbedPane2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cancelButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(applyButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
pack();
setLocationRelativeTo(null);
}// </editor-fold>//GEN-END:initComponents
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
dispose();
}//GEN-LAST:event_cancelButtonActionPerformed
private void applyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_applyButtonActionPerformed
// Appearance tab
if (!lafCombobox.getSelectedItem().equals(UIManager.getLookAndFeel().getName())) {
for (final LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if (lafCombobox.getSelectedItem().equals(info.getName())) {
Settings.setLaFClassName(info.getClassName());
Settings.updateLaF();
}
}
for (Map.Entry<String, String> substance : substanceLaF.entrySet()) {
if (lafCombobox.getSelectedItem().equals(substance.getKey())) {
Settings.setLaFClassName(substance.getValue());
Settings.updateLaF();
}
}
}
if (!fontChooser.getSelectedFont().equals(Settings.getUIFont())) {
Settings.setUIFont(fontChooser.getSelectedFont());
Settings.updateFont();
}
}//GEN-LAST:event_applyButtonActionPerformed
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
applyButtonActionPerformed(evt);
dispose();
}//GEN-LAST:event_okButtonActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
UIUtil.makeNative();
/* Create and display the dialog */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
SettingsDialog dialog = new SettingsDialog(new javax.swing.JFrame());
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton applyButton;
private javax.swing.JButton cancelButton;
private tk.amberide.ide.swing.misc.JFontChooser fontChooser;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JTabbedPane jTabbedPane2;
private javax.swing.JComboBox lafCombobox;
private javax.swing.JButton okButton;
// End of variables declaration//GEN-END:variables
}