Bumped Version References One Version Up (v0.3-beta) #64
@@ -4,7 +4,6 @@ import javafx.event.EventHandler;
 | 
				
			|||||||
import javafx.scene.control.*;
 | 
					import javafx.scene.control.*;
 | 
				
			||||||
import javafx.scene.input.InputEvent;
 | 
					import javafx.scene.input.InputEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import envoy.client.util.IssueUtil;
 | 
					 | 
				
			||||||
import envoy.event.IssueProposal;
 | 
					import envoy.event.IssueProposal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -58,8 +57,10 @@ public final class BugReportPane extends OnlineOnlySettingsPane {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		// Displaying the submitReportButton
 | 
							// Displaying the submitReportButton
 | 
				
			||||||
		submitReportButton.setDisable(true);
 | 
							submitReportButton.setDisable(true);
 | 
				
			||||||
		submitReportButton.setOnAction(e -> client.send(new IssueProposal(titleTextField.getText(), IssueUtil
 | 
							submitReportButton.setOnAction(e -> {
 | 
				
			||||||
			.sanitizeIssueDescription(errorDetailArea.getText(), showUsernameInBugReport.isSelected() ? client.getSender().getName() : null), true)));
 | 
								String title = titleTextField.getText(), description = errorDetailArea.getText();
 | 
				
			||||||
 | 
								client.send(showUsernameInBugReport.isSelected() ? new IssueProposal(title, description, true) : new IssueProposal(title, description, client.getSender().getName(), true));
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
		getChildren().add(submitReportButton);
 | 
							getChildren().add(submitReportButton);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,35 +0,0 @@
 | 
				
			|||||||
package envoy.client.util;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Provides methods to handle outgoing issues.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * @author Leon Hofmeister
 | 
					 | 
				
			||||||
 * @author Kai S. K. Engelbart
 | 
					 | 
				
			||||||
 * @since Envoy Client v0.2-beta
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
public final class IssueUtil {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private IssueUtil() {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Normalizes line breaks and appends the user name to the issue description if
 | 
					 | 
				
			||||||
	 * requested.
 | 
					 | 
				
			||||||
	 *
 | 
					 | 
				
			||||||
	 * @param description the description to sanitize
 | 
					 | 
				
			||||||
	 * @param username    the user who submitted the issue. Should be
 | 
					 | 
				
			||||||
	 *                    {@code null} if he does not want to be named.
 | 
					 | 
				
			||||||
	 * @return the sanitized description
 | 
					 | 
				
			||||||
	 * @since Envoy Client v0.2-beta
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public static String sanitizeIssueDescription(String description, String username) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Trim and replace line breaks by <br> tags
 | 
					 | 
				
			||||||
		description = description.trim().replaceAll(System.getProperty("line.separator"), "<br>");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Append user name if requested
 | 
					 | 
				
			||||||
		if (username != null)
 | 
					 | 
				
			||||||
			description += String.format("<br>Submitted by user %s.", username);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		return description;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -23,11 +23,46 @@ public final class IssueProposal extends Event<String> {
 | 
				
			|||||||
	 * @since Envoy Common v0.2-beta
 | 
						 * @since Envoy Common v0.2-beta
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public IssueProposal(String title, String description, boolean isBug) {
 | 
						public IssueProposal(String title, String description, boolean isBug) {
 | 
				
			||||||
		super(title);
 | 
							super(escape(title));
 | 
				
			||||||
		this.description	= description;
 | 
							this.description	= sanitizeDescription(description);
 | 
				
			||||||
		bug					= isBug;
 | 
							bug					= isBug;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @param title       the title of the reported bug
 | 
				
			||||||
 | 
						 * @param description the description of this bug
 | 
				
			||||||
 | 
						 * @param user        the name of the user creating the issue
 | 
				
			||||||
 | 
						 * @param isBug       determines whether this {@code IssueProposal} is
 | 
				
			||||||
 | 
						 *                    supposed to be a
 | 
				
			||||||
 | 
						 *                    feature or a bug (true = bug, false = feature)
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-beta
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public IssueProposal(String title, String description, String user, boolean isBug) {
 | 
				
			||||||
 | 
							super(escape(title));
 | 
				
			||||||
 | 
							this.description	= sanitizeDescription(description) + String.format("<br>Submitted by user %s.", user);
 | 
				
			||||||
 | 
							bug					= isBug;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Escapes an issue description and normalizes its line breaks.
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param description the description to normalize
 | 
				
			||||||
 | 
						 * @return the normalized description
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-beta
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private static String sanitizeDescription(String description) {
 | 
				
			||||||
 | 
							return escape(description).replaceAll("\r?\n", "<br>");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Escapes quotes and backslashes from a string.
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param raw the string to escape
 | 
				
			||||||
 | 
						 * @return the escaped string
 | 
				
			||||||
 | 
						 * @since Envoy Client v0.2-beta
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private static String escape(String raw) { return raw.replace("\\", "\\\\").replace("\"", "\\\""); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @return the description
 | 
						 * @return the description
 | 
				
			||||||
	 * @since Envoy Common v0.2-beta
 | 
						 * @since Envoy Common v0.2-beta
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user