psmith 2003/12/11 18:25:53 Modified: src/java/org/apache/log4j/chainsaw ChainsawToolBarAndMenus.java LogUI.java ApplicationPreferenceModel.java ApplicationPreferenceModelPanel.java Log: Fixed previous bug of a checkbox being out of state with the pref model. moved the responiveness property into tho Pref model, and removed it from the View menu and placed it in the Preference panel. Responsiveness is now a value from 1-4, older style values in Milliseconds are automatically converted. (This change seems to look nicer, a bit friendlier) Other View menu options will be moved into the pref Model, but some will still be changable via the view menu directly as well as the Pref panel. Revision Changes Path 1.22 +50 -52 jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java Index: ChainsawToolBarAndMenus.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- ChainsawToolBarAndMenus.java 11 Dec 2003 22:31:28 -0000 1.21 +++ ChainsawToolBarAndMenus.java 12 Dec 2003 02:25:53 -0000 1.22 @@ -522,8 +522,6 @@ new JMenu(ChainsawToolBarAndMenus.SETTING_RESPONSIVENESS); responsiveNess.setMnemonic('R'); - responsiveNess.add(createResponsivenessSlider()); - final JMenu lookAndFeelMenu = new JMenu("Look & Feel"); lookAndFeelMenu.setMnemonic('L'); @@ -649,56 +647,56 @@ return pauseAction; } - private JComponent createResponsivenessSlider() { - JPanel responsiveNessPanel = new JPanel(); - BoxLayout layout = new BoxLayout(responsiveNessPanel, BoxLayout.Y_AXIS); - - responsiveNessPanel.setLayout(layout); - - responsiveSlider.setAlignmentY(JComponent.CENTER_ALIGNMENT); - responsiveSlider.setAlignmentX(JComponent.CENTER_ALIGNMENT); - - responsiveSlider.setMinorTickSpacing(250); - responsiveSlider.setMajorTickSpacing(1000); - responsiveSlider.setToolTipText( - "Adjust to set the responsiveness of the app. How often the view is updated."); - responsiveSlider.setSnapToTicks(true); - responsiveSlider.setPaintTicks(true); - - responsiveSlider.setPaintLabels(true); - responsiveSlider.setPaintTrack(true); - responsiveSlider.setInverted(true); - responsiveSlider.getModel().addChangeListener( - new ChangeListener() { - public void stateChanged(ChangeEvent e) { - if (responsiveSlider.getValueIsAdjusting()) { - /** - * We'll wait until it stops. - */ - } else { - int value = responsiveSlider.getValue(); - - if (value == 0) { - value = 100; - } - - System.out.println("Adjust responsiveness to " + value + "ms"); - logui.handler.setQueueInterval(value); - } - } - }); - - JLabel l1 = new JLabel("Update frequently (100ms)"); - JLabel l2 = new JLabel("Update infrequently (5 seconds)"); - responsiveNessPanel.add(l1); - - JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER)); - panel.add(responsiveSlider); - responsiveNessPanel.add(panel); - responsiveNessPanel.add(l2); - - return responsiveNessPanel; - } +// private JComponent createResponsivenessSlider() { +// JPanel responsiveNessPanel = new JPanel(); +// BoxLayout layout = new BoxLayout(responsiveNessPanel, BoxLayout.Y_AXIS); +// +// responsiveNessPanel.setLayout(layout); +// +// responsiveSlider.setAlignmentY(JComponent.CENTER_ALIGNMENT); +// responsiveSlider.setAlignmentX(JComponent.CENTER_ALIGNMENT); +// +// responsiveSlider.setMinorTickSpacing(250); +// responsiveSlider.setMajorTickSpacing(1000); +// responsiveSlider.setToolTipText( +// "Adjust to set the responsiveness of the app. How often the view is updated."); +// responsiveSlider.setSnapToTicks(true); +// responsiveSlider.setPaintTicks(true); +// +// responsiveSlider.setPaintLabels(true); +// responsiveSlider.setPaintTrack(true); +// responsiveSlider.setInverted(true); +// responsiveSlider.getModel().addChangeListener( +// new ChangeListener() { +// public void stateChanged(ChangeEvent e) { +// if (responsiveSlider.getValueIsAdjusting()) { +// /** +// * We'll wait until it stops. +// */ +// } else { +// int value = responsiveSlider.getValue(); +// +// if (value == 0) { +// value = 100; +// } +// +// System.out.println("Adjust responsiveness to " + value + "ms"); +// logui.handler.setQueueInterval(value); +// } +// } +// }); +// +// JLabel l1 = new JLabel("Update frequently (100ms)"); +// JLabel l2 = new JLabel("Update infrequently (5 seconds)"); +// responsiveNessPanel.add(l1); +// +// JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER)); +// panel.add(responsiveSlider); +// responsiveNessPanel.add(panel); +// responsiveNessPanel.add(l2); +// +// return responsiveNessPanel; +// } private Action createShowPreferencesAction() { Action showPreferences = 1.50 +7 -0 jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java Index: LogUI.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java,v retrieving revision 1.49 retrieving revision 1.50 diff -u -r1.49 -r1.50 --- LogUI.java 11 Dec 2003 22:31:29 -0000 1.49 +++ LogUI.java 12 Dec 2003 02:25:53 -0000 1.50 @@ -397,6 +397,13 @@ handler.setIdentifierExpression(evt.getNewValue().toString()); } } ); + applicationPreferenceModel.addPropertyChangeListener("responsiveness", new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent evt) { + int value = ((Integer)evt.getNewValue()).intValue(); + handler.setQueueInterval((value*1000)-750); + } + } ); + final SocketNodeEventListener socketListener = new SocketNodeEventListener() { 1.4 +23 -2 jakarta-log4j/src/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java Index: ApplicationPreferenceModel.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ApplicationPreferenceModel.java 11 Dec 2003 22:31:29 -0000 1.3 +++ ApplicationPreferenceModel.java 12 Dec 2003 02:25:53 -0000 1.4 @@ -66,7 +66,9 @@ */ class ApplicationPreferenceModel implements SettingsListener { - private boolean showNoReceiverWarning = true; + private boolean showNoReceiverWarning ; + private int responsiveness; + private String identifierExpression = Constants.HOSTNAME_KEY + " - " + Constants.APPLICATION_KEY; private final PropertyChangeSupport propertySupport = @@ -190,6 +192,8 @@ public void loadSettings(LoadSettingsEvent event) { setShowNoReceiverWarning(event.asBoolean("showNoReceiverWarning")); setIdentifierExpression(event.getSetting("identifierExpression")); + setResponsiveness(event.asInt("Responsiveness")); + } /* (non-Javadoc) @@ -198,6 +202,7 @@ public void saveSettings(SaveSettingsEvent event) { event.saveSetting("showNoReceiverWarning", isShowNoReceiverWarning()); event.saveSetting("identifierExpression", getIdentifierExpression()); + event.saveSetting("Responsiveness", getResponsiveness()); } /** @@ -208,6 +213,22 @@ { setIdentifierExpression(model.getIdentifierExpression()); setShowNoReceiverWarning(model.isShowNoReceiverWarning()); - + setResponsiveness(model.getResponsiveness()); + } + /** + * @return Returns the responsiveness. + */ + public final int getResponsiveness() + { + return responsiveness; + } + /** + * @param responsiveness The responsiveness to set. + */ + public final void setResponsiveness(int responsiveness) + { + int oldvalue = this.responsiveness; + this.responsiveness = responsiveness; + firePropertyChange("responsiveness", oldvalue, responsiveness); } } 1.2 +120 -7 jakarta-log4j/src/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java Index: ApplicationPreferenceModelPanel.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ApplicationPreferenceModelPanel.java 11 Dec 2003 22:31:29 -0000 1.1 +++ ApplicationPreferenceModelPanel.java 12 Dec 2003 02:25:53 -0000 1.2 @@ -45,19 +45,33 @@ * on behalf of the Apache Software Foundation. For more information on the * Apache Software Foundation, please see <http://www.apache.org/>. * - */package org.apache.log4j.chainsaw; + */ +package org.apache.log4j.chainsaw; import org.apache.log4j.helpers.LogLog; +import java.awt.Color; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.Dictionary; +import java.util.Hashtable; + +import javax.swing.BorderFactory; +import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JCheckBox; import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSlider; +import javax.swing.SwingConstants; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeModel; @@ -65,7 +79,7 @@ /** * A panel used by the user to modify any application-wide preferences. - * + * * @author Paul Smith <[EMAIL PROTECTED]> * */ @@ -116,15 +130,16 @@ f.setSize(640, 480); f.show(); } + /** * Ensures this panels DISPLAYED model is in sync with * the model initially passed to the constructor. * */ public void updateModel() { - this.uncommittedPreferenceModel.apply(committedPreferenceModel); + this.uncommittedPreferenceModel.apply(committedPreferenceModel); } - + /* (non-Javadoc) * @see org.apache.log4j.chainsaw.AbstractPreferencePanel#createTreeModel() */ @@ -152,20 +167,86 @@ private final JCheckBox showNoReceiverWarning = new JCheckBox( "Prompt me on startup if there are no Receivers defined"); + private final JSlider responsiveSlider = new JSlider(JSlider.HORIZONTAL, + 1, 4, 2); + + Dictionary sliderLabelMap = new Hashtable(); /** * @param title */ public GeneralAllPrefPanel() { super("General"); + GeneralAllPrefPanel.this.initComponents(); + } private void initComponents() { setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); - showNoReceiverWarning.setSelected( - uncommittedPreferenceModel.isShowNoReceiverWarning()); + + Box p = new Box(BoxLayout.X_AXIS); + + p.add(showNoReceiverWarning); + p.add(Box.createHorizontalGlue()); + + setupInitialValues(); + setupListeners(); + + initSliderComponent(); + + add(responsiveSlider); + add(p); + add(Box.createVerticalGlue()); + + + } + + private void initSliderComponent() { + responsiveSlider.setToolTipText( + "Adjust to set the responsiveness of the app. How often the view is updated."); + responsiveSlider.setSnapToTicks(true); + responsiveSlider.setLabelTable(sliderLabelMap); + responsiveSlider.setPaintLabels(true); + responsiveSlider.setPaintTrack(true); + + responsiveSlider.setBorder(BorderFactory.createTitledBorder( + BorderFactory.createEtchedBorder(), "Responsiveness")); + +// responsiveSlider.setAlignmentY(0); +// responsiveSlider.setAlignmentX(0); + } + + private void setupListeners() { + uncommittedPreferenceModel.addPropertyChangeListener( + "showNoReceiverWarning", new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + showNoReceiverWarning.setSelected( + ((Boolean) evt.getNewValue()).booleanValue()); + + } + }); + uncommittedPreferenceModel.addPropertyChangeListener( + "responsiveness", new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + + int value = ((Integer) evt.getNewValue()).intValue(); + + if (value >= 1000) { + + int newValue = (value - 750) / 1000; + LogLog.debug( + "Adjusting old Responsiveness value from " + + value + " to " + newValue); + value = newValue; + } + + responsiveSlider.setValue(value); + } + }); showNoReceiverWarning.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -174,8 +255,40 @@ } }); - add(showNoReceiverWarning); + responsiveSlider.getModel().addChangeListener( + new ChangeListener() { + public void stateChanged(ChangeEvent e) { + + if (responsiveSlider.getValueIsAdjusting()) { + + /** + * We'll wait until it stops. + */ + } else { + + int value = responsiveSlider.getValue(); + + if (value == 0) { + value = 1; + } + + LogLog.debug("Adjust responsiveness to " + value); + uncommittedPreferenceModel.setResponsiveness( + value); + } + } + }); + } + + private void setupInitialValues() { + sliderLabelMap.put(new Integer(1), new JLabel("Fastest")); + sliderLabelMap.put(new Integer(2), new JLabel("Fast")); + sliderLabelMap.put(new Integer(3), new JLabel("Medium")); + sliderLabelMap.put(new Integer(4), new JLabel("Slow")); +// + showNoReceiverWarning.setSelected( + uncommittedPreferenceModel.isShowNoReceiverWarning()); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]