private final ChangesetCommentModel changesetSourceModel;
protected JPanel buildUploadCommentPanel() {
JPanel pnl = new JPanel(new GridBagLayout());
final JEditorPane commentLabel = new JMultilineLabel("<html><b>" + tr("Provide a brief comment for the changes you are uploading:"));
pnl.add(commentLabel, GBC.eol().insets(0, 5, 10, 3).fill(GBC.HORIZONTAL));
hcbUploadComment.setToolTipText(tr("Enter an upload comment"));
hcbUploadComment.setMaxTextLength(Changeset.MAX_COMMENT_LENGTH);
List<String> cmtHistory = new LinkedList<>(Main.pref.getCollection(HISTORY_KEY, new LinkedList<String>()));
Collections.reverse(cmtHistory); // we have to reverse the history, because ComboBoxHistory will reverse it again in addElement()
hcbUploadComment.setPossibleItems(cmtHistory);
final CommentModelListener commentModelListener = new CommentModelListener(hcbUploadComment, changesetCommentModel);
hcbUploadComment.getEditor().addActionListener(commentModelListener);
hcbUploadComment.getEditor().getEditorComponent().addFocusListener(commentModelListener);
pnl.add(hcbUploadComment, GBC.eol().fill(GBC.HORIZONTAL));
final JEditorPane sourceLabel = new JMultilineLabel("<html><b>" + tr("Specify the data source for the changes")
+ "</b> (<a href=\"urn:changeset-source\">" + tr("obtain from current layers") + "</a>)<b>:</b>");
sourceLabel.addHyperlinkListener(new HyperlinkListener() {
@Override
public void hyperlinkUpdate(HyperlinkEvent e) {
if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) {
hcbUploadSource.setText(Main.map.mapView.getLayerInformationForSourceTag());
// Fix #9965