001    package nl.cwi.sen1.tide.tool.prefeditor;
002    
003    //{{{ imports
004    
005    import java.awt.BorderLayout;
006    import java.awt.GridLayout;
007    import java.awt.event.ActionEvent;
008    import java.awt.event.ActionListener;
009    
010    import javax.swing.JButton;
011    import javax.swing.JPanel;
012    import javax.swing.JTabbedPane;
013    
014    import nl.cwi.sen1.tide.PreferenceListener;
015    import nl.cwi.sen1.tide.PreferenceSet;
016    import nl.cwi.sen1.tide.tool.TideTool;
017    import nl.cwi.sen1.tide.tool.ToolManager;
018    
019    //}}}
020    
021    public class PreferencesEditor extends TideTool implements PreferenceListener,
022                    ActionListener {
023            private PreferenceSet preferences;
024            private FontPreferenceEditor fontPrefs;
025    
026            private JButton buttonUpdate;
027            private JButton buttonRevert;
028    
029            // {{{ public PreferencesEditor(ToolManager manager)
030    
031            public PreferencesEditor(ToolManager manager) {
032                    super(manager);
033    
034                    preferences = manager.getPreferences();
035                    preferences.addPreferenceListener(this);
036    
037                    JTabbedPane pane = new JTabbedPane();
038                    fontPrefs = new FontPreferenceEditor(this, preferences);
039                    pane.addTab("Fonts", null, fontPrefs, "Edit font preferences");
040    
041                    setLayout(new BorderLayout());
042                    add("Center", pane);
043    
044                    JPanel buttons = new JPanel();
045                    buttons.setLayout(new GridLayout(1, 5));
046    
047                    buttonUpdate = new JButton("Update");
048                    buttonRevert = new JButton("Revert");
049    
050                    buttonUpdate.setEnabled(false);
051                    buttonRevert.setEnabled(false);
052    
053                    buttonUpdate.addActionListener(this);
054                    buttonRevert.addActionListener(this);
055    
056                    buttons.add(new JPanel());
057                    buttons.add(buttonUpdate);
058                    buttons.add(new JPanel());
059                    buttons.add(buttonRevert);
060                    buttons.add(new JPanel());
061    
062                    add("South", buttons);
063            }
064    
065            public void preferenceChanged(PreferenceSet prefs, String name,String oldValue, String newValue) {}
066    
067            public void preferencesChanged(PreferenceSet prefs) {}
068    
069            // }}}
070            // {{{ public void preferencesStatusChanged(boolean clean)
071    
072            public void preferencesStatusChanged(PreferenceSet set, boolean clean) {}
073    
074            // }}}
075    
076            // {{{ void changePending()
077    
078            void changePending() {
079                    buttonUpdate.setEnabled(true);
080                    buttonRevert.setEnabled(true);
081            }
082    
083            // }}}
084            // {{{ public void actionPerformed(ActionEvent event)
085    
086            public void actionPerformed(ActionEvent event) {
087                    if (event.getSource() == buttonUpdate) {
088                            fontPrefs.doUpdate();
089                            buttonUpdate.setEnabled(false);
090                            buttonRevert.setEnabled(false);
091                    } else if (event.getSource() == buttonRevert) {
092                            fontPrefs.doRevert();
093                            buttonUpdate.setEnabled(false);
094                            buttonRevert.setEnabled(false);
095                    }
096            }
097    }