Changeset 17238 in josm for trunk/src/org/openstreetmap
- Timestamp:
- 2020-10-19T00:54:46+02:00 (4 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
r16696 r17238 93 93 hcbUploadComment.setToolTipText(tr("Enter an upload comment")); 94 94 hcbUploadComment.setMaxTextLength(Changeset.MAX_CHANGESET_TAG_LENGTH); 95 populateHistoryComboBox(hcbUploadComment, HISTORY_KEY, new LinkedList< String>());95 populateHistoryComboBox(hcbUploadComment, HISTORY_KEY, new LinkedList<>()); 96 96 CommentModelListener commentModelListener = new CommentModelListener(hcbUploadComment, changesetCommentModel); 97 97 hcbUploadComment.getEditor().addActionListener(commentModelListener); … … 172 172 */ 173 173 protected void refreshHistoryComboBoxes() { 174 populateHistoryComboBox(hcbUploadComment, HISTORY_KEY, new LinkedList< String>());174 populateHistoryComboBox(hcbUploadComment, HISTORY_KEY, new LinkedList<>()); 175 175 populateHistoryComboBox(hcbUploadSource, SOURCE_HISTORY_KEY, getDefaultSources()); 176 176 } … … 195 195 public static List<String> getDefaultSources() { 196 196 return Arrays.asList("knowledge", "survey", "Bing"); 197 } 198 199 /** 200 * Returns the list of {@link UploadTextComponentValidator} defined by this panel. 201 * @return the list of {@code UploadTextComponentValidator} defined by this panel. 202 * @since 17238 203 */ 204 protected List<UploadTextComponentValidator> getUploadTextValidators() { 205 return Arrays.asList(areaValidator, uploadCommentValidator, uploadSourceValidator); 197 206 } 198 207 -
trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
r16673 r17238 233 233 pnlBasicUploadSettings.setUploadTagDownFocusTraversalHandlers(e -> btnUpload.requestFocusInWindow()); 234 234 235 // Enable/disable the upload button if at least an upload validator rejects upload 236 pnlBasicUploadSettings.getUploadTextValidators().forEach(v -> v.addChangeListener(e -> btnUpload.setEnabled( 237 pnlBasicUploadSettings.getUploadTextValidators().stream().noneMatch(UploadTextComponentValidator::isUploadRejected)))); 238 235 239 setMinimumSize(new Dimension(600, 350)); 236 240 -
trunk/src/org/openstreetmap/josm/gui/io/UploadTextComponentValidator.java
r16697 r17238 22 22 abstract class UploadTextComponentValidator extends AbstractTextComponentValidator { 23 23 private final JLabel feedback; 24 protected boolean uploadRejected; 24 25 25 26 UploadTextComponentValidator(JTextComponent tc, JLabel feedback) { … … 60 61 61 62 /** 63 * Determines if the input validator considers the violation bad enough to reject upload. 64 * @return {@code true} if the input validator considers the violation bad enough to reject upload 65 * @since 17238 66 */ 67 public final boolean isUploadRejected() { 68 return uploadRejected; 69 } 70 71 /** 62 72 * Validator for the changeset {@code comment} tag 63 73 */ … … 85 95 String rejection = UploadDialog.UploadAction.validateUploadTag(uploadComment, "upload.comment", 86 96 Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); 87 if (rejection != null) { 97 uploadRejected = rejection != null; 98 if (uploadRejected) { 88 99 feedbackWarning(tr("Your upload comment is <i>rejected</i>.") + "<br />" + rejection); 89 100 } else { … … 120 131 final String rejection = UploadDialog.UploadAction.validateUploadTag( 121 132 uploadSource, "upload.source", Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); 122 if (rejection != null) { 133 uploadRejected = rejection != null; 134 if (uploadRejected) { 123 135 feedbackWarning(tr("Your changeset source is <i>rejected</i>.") + "<br />" + rejection); 124 136 } else { -
trunk/src/org/openstreetmap/josm/gui/widgets/AbstractTextComponentValidator.java
r17078 r17238 21 21 22 22 import org.openstreetmap.josm.data.preferences.NamedColorProperty; 23 import org.openstreetmap.josm.gui.util.ChangeNotifier; 23 24 import org.openstreetmap.josm.tools.CheckParameterUtil; 24 25 … … 35 36 * @since 2688 36 37 */ 37 public abstract class AbstractTextComponentValidator implements ActionListener, FocusListener, DocumentListener, PropertyChangeListener { 38 public abstract class AbstractTextComponentValidator extends ChangeNotifier 39 implements ActionListener, FocusListener, DocumentListener, PropertyChangeListener { 38 40 39 41 protected static final Color ERROR_COLOR = new NamedColorProperty(marktr("Input validation: error"), Color.RED).get(); … … 63 65 if (hasChanged(msg, Status.INVALID)) { 64 66 // only provide feedback if the validity has changed. This avoids unnecessary UI updates. 65 tc.setBorder(ERROR_BORDER); 66 tc.setBackground(ERROR_BACKGROUND); 67 tc.setToolTipText(msg); 68 this.status = Status.INVALID; 69 this.msg = msg; 67 feedback(ERROR_BORDER, ERROR_BACKGROUND, msg, Status.INVALID, msg); 70 68 } 71 69 } … … 74 72 if (hasChanged(msg, Status.WARNING)) { 75 73 // only provide feedback if the validity has changed. This avoids unnecessary UI updates. 76 tc.setBorder(WARNING_BORDER); 77 tc.setBackground(WARNING_BACKGROUND); 78 tc.setToolTipText(msg); 79 this.status = Status.WARNING; 80 this.msg = msg; 74 feedback(WARNING_BORDER, WARNING_BACKGROUND, msg, Status.WARNING, msg); 81 75 } 82 76 } … … 89 83 if (hasChanged(msg, Status.VALID)) { 90 84 // only provide feedback if the validity has changed. This avoids unnecessary UI updates. 91 tc.setBorder(msg == null ? UIManager.getBorder("TextField.border") : VALID_BORDER);92 tc.setBackground(UIManager.getColor("TextField.background"));93 tc.setToolTipText(msg == null ? "" : msg);94 this.status =Status.VALID;95 this.msg = msg;85 feedback(msg == null ? UIManager.getBorder("TextField.border") : VALID_BORDER, 86 UIManager.getColor("TextField.background"), 87 msg == null ? "" : msg, 88 Status.VALID, 89 msg); 96 90 } 97 91 } … … 99 93 private boolean hasChanged(String msg, Status status) { 100 94 return !(Objects.equals(status, this.status) && Objects.equals(msg, this.msg)); 95 } 96 97 private void feedback(Border border, Color background, String tooltip, Status status, String msg) { 98 tc.setBorder(border); 99 tc.setBackground(background); 100 tc.setToolTipText(tooltip); 101 this.status = status; 102 this.msg = msg; 103 fireStateChanged(); 101 104 } 102 105 … … 171 174 /* -------------------------------------------------------------------------------- */ 172 175 @Override 173 public void focusGained(FocusEvent arg0) {}174 175 @Override 176 public void focusLost(FocusEvent arg0) {176 public void focusGained(FocusEvent e) {} 177 178 @Override 179 public void focusLost(FocusEvent e) { 177 180 validate(); 178 181 } … … 182 185 /* -------------------------------------------------------------------------------- */ 183 186 @Override 184 public void actionPerformed(ActionEvent arg0) {187 public void actionPerformed(ActionEvent e) { 185 188 validate(); 186 189 } … … 190 193 /* -------------------------------------------------------------------------------- */ 191 194 @Override 192 public void changedUpdate(DocumentEvent arg0) {193 validate(); 194 } 195 196 @Override 197 public void insertUpdate(DocumentEvent arg0) {198 validate(); 199 } 200 201 @Override 202 public void removeUpdate(DocumentEvent arg0) {195 public void changedUpdate(DocumentEvent e) { 196 validate(); 197 } 198 199 @Override 200 public void insertUpdate(DocumentEvent e) { 201 validate(); 202 } 203 204 @Override 205 public void removeUpdate(DocumentEvent e) { 203 206 validate(); 204 207 }
Note:
See TracChangeset
for help on using the changeset viewer.