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 }