Ignore:
Timestamp:
14.03.2010 12:38:09 (2 years ago)
Author:
Gubaer
Message:

fixed #4371: Changeset comment reverts to previous when switching options

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/io/TagSettingsPanel.java

    r3083 r3133  
    33 
    44import java.awt.BorderLayout; 
    5 import java.beans.PropertyChangeEvent; 
    6 import java.beans.PropertyChangeListener; 
    75import java.util.Map; 
     6import java.util.Observable; 
     7import java.util.Observer; 
    88 
    99import javax.swing.JPanel; 
     
    1515import org.openstreetmap.josm.gui.tagging.TagEditorPanel; 
    1616import org.openstreetmap.josm.gui.tagging.TagModel; 
     17import org.openstreetmap.josm.tools.CheckParameterUtil; 
    1718 
    18 public class TagSettingsPanel extends JPanel implements PropertyChangeListener, TableModelListener { 
    19     static public final String UPLOAD_COMMENT_PROP = TagSettingsPanel.class.getName() + ".uploadComment"; 
     19public class TagSettingsPanel extends JPanel implements TableModelListener { 
    2020 
    2121    /** checkbox for selecting whether an atomic upload is to be used  */ 
    2222    private TagEditorPanel pnlTagEditor; 
     23    /** the model for the changeset comment */ 
     24    private ChangesetCommentModel changesetCommentModel; 
     25 
    2326 
    2427    protected void build() { 
     
    2730    } 
    2831 
    29     public TagSettingsPanel() { 
     32    /** 
     33     * Creates a new panel 
     34     *  
     35     * @param changesetCommentModel the changeset comment model. Must not be null. 
     36     * @throws IllegalArgumentException thrown if {@code changesetCommentModel} is null 
     37     */ 
     38    public TagSettingsPanel(ChangesetCommentModel changesetCommentModel) throws IllegalArgumentException{ 
     39        CheckParameterUtil.ensureParameterNotNull(changesetCommentModel, "changesetCommentModel"); 
     40        this.changesetCommentModel = changesetCommentModel; 
     41        this.changesetCommentModel.addObserver(new ChangesetCommentObserver()); 
    3042        build(); 
    3143        pnlTagEditor.getModel().addTableModelListener(this); 
     
    4254    } 
    4355 
    44     public void setUploadComment(String comment) { 
     56    protected void setUploadComment(String comment) { 
    4557        if (comment == null) { 
    4658            comment = ""; 
     
    111123 
    112124    /* -------------------------------------------------------------------------- */ 
    113     /* Interface PropertyChangeListener                                           */ 
    114     /* -------------------------------------------------------------------------- */ 
    115     public void propertyChange(PropertyChangeEvent evt) { 
    116         if (evt.getPropertyName().equals(ChangesetManagementPanel.SELECTED_CHANGESET_PROP)) { 
    117             Changeset cs = (Changeset)evt.getNewValue(); 
    118             initFromChangeset(cs); 
    119         } else if (evt.getPropertyName().equals(BasicUploadSettingsPanel.UPLOAD_COMMENT_PROP)) { 
    120             String comment = (String)evt.getNewValue(); 
    121             setUploadComment(comment); 
    122         } 
    123     } 
    124  
    125     /* -------------------------------------------------------------------------- */ 
    126125    /* Interface TableChangeListener                                              */ 
    127126    /* -------------------------------------------------------------------------- */ 
    128127    public void tableChanged(TableModelEvent e) { 
    129128        String uploadComment = getUploadComment(); 
    130         firePropertyChange(UPLOAD_COMMENT_PROP, null, uploadComment); 
     129        changesetCommentModel.setComment(uploadComment); 
     130    } 
     131 
     132    /** 
     133     * Observes the changeset comment model and keeps the tag editor in sync 
     134     * with the current changeset comment 
     135     * 
     136     */ 
     137    class ChangesetCommentObserver implements Observer { 
     138        public void update(Observable o, Object arg) { 
     139            if (!(o instanceof ChangesetCommentModel)) return; 
     140            String newValue = (String)arg; 
     141            String oldValue = getUploadComment(); 
     142            if (oldValue == null) { 
     143                oldValue = ""; 
     144            } 
     145            if (!oldValue.equals(newValue)) { 
     146                setUploadComment((String)arg); 
     147            } 
     148        } 
    131149    } 
    132150} 
Note: See TracChangeset for help on using the changeset viewer.