- Issue 120: Improve version and build ID in Crash Reports.

* forge.error.ErrorViewer now uses BuildInfo.toPrettyString() to display the version.
* Fixed some CheckStyle violations in ErrorViewer.
* Added forge.model.BuildInfo.toPrettyString method.
* Removed obsolete VERSION field from forge.properties.NewConstants. (Java)
* Removed obsolete property "program/version" from res/main.properties.

Bug: 120
This commit is contained in:
Braids
2011-08-12 17:11:47 +00:00
parent 6f0ec6b9d2
commit a25cc1b0c7
4 changed files with 42 additions and 10 deletions

View File

@@ -1,5 +1,4 @@
program/howToReportBugsURL=http://tinyurl.com/3zzrnyb program/howToReportBugsURL=http://tinyurl.com/3zzrnyb
program/version=Forge -- official beta: $Date$, SVN revision: $Revision$
showdeck/2color=false showdeck/2color=false
showdeck/3color=false showdeck/3color=false

View File

@@ -30,6 +30,7 @@ import javax.swing.JScrollPane;
import javax.swing.JTextArea; import javax.swing.JTextArea;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import forge.Singletons;
import forge.properties.NewConstants; import forge.properties.NewConstants;
@@ -153,7 +154,9 @@ public class ErrorViewer implements NewConstants, NewConstants.LANG.ErrorViewer
//Button is not modified, String gets the automatic listener to hide the dialog //Button is not modified, String gets the automatic listener to hide the dialog
Object[] options = { Object[] options = {
new JButton(new BugzAction(area)), new JButton(new SaveAction(area)), getLocalized(BUTTON_CLOSE), new JButton(new ExitAction())}; new JButton(new BugzAction(area)), new JButton(new SaveAction(area)), getLocalized(BUTTON_CLOSE),
new JButton(new ExitAction())};
JOptionPane pane = new JOptionPane(new JScrollPane(area), ERROR_MESSAGE, DEFAULT_OPTION, null, options, JOptionPane pane = new JOptionPane(new JScrollPane(area), ERROR_MESSAGE, DEFAULT_OPTION, null, options,
options[1]); options[1]);
dlg = pane.createDialog(null, getLocalized(TITLE)); dlg = pane.createDialog(null, getLocalized(TITLE));
@@ -176,7 +179,8 @@ public class ErrorViewer implements NewConstants, NewConstants.LANG.ErrorViewer
ex.printStackTrace(); ex.printStackTrace();
pw.printf(getLocalized(MESSAGE), getProperty(HOW_TO_REPORT_BUGS_URL), pw.printf(getLocalized(MESSAGE), getProperty(HOW_TO_REPORT_BUGS_URL),
message != null ? message : ex.getMessage(), getProperty(VERSION), message != null ? message : ex.getMessage(),
Singletons.getModel().getBuildInfo().toPrettyString(),
System.getProperty(NAME_OS), System.getProperty(VERSION_OS), System.getProperty(ARCHITECTURE_OS), System.getProperty(NAME_OS), System.getProperty(VERSION_OS), System.getProperty(ARCHITECTURE_OS),
System.getProperty(VERSION_JAVA), System.getProperty(VENDOR_JAVA)); System.getProperty(VERSION_JAVA), System.getProperty(VENDOR_JAVA));
ex.printStackTrace(pw); ex.printStackTrace(pw);
@@ -191,7 +195,8 @@ public class ErrorViewer implements NewConstants, NewConstants.LANG.ErrorViewer
private static void printError(final PrintWriter pw, final String message) { private static void printError(final PrintWriter pw, final String message) {
System.err.println(message); System.err.println(message);
pw.printf(getLocalized(MESSAGE), getProperty(HOW_TO_REPORT_BUGS_URL), message, getProperty(VERSION), pw.printf(getLocalized(MESSAGE), getProperty(HOW_TO_REPORT_BUGS_URL), message,
Singletons.getModel().getBuildInfo().toPrettyString(),
System.getProperty(NAME_OS), System.getProperty(VERSION_OS), System.getProperty(ARCHITECTURE_OS), System.getProperty(NAME_OS), System.getProperty(VERSION_OS), System.getProperty(ARCHITECTURE_OS),
System.getProperty(VERSION_JAVA), System.getProperty(VENDOR_JAVA)); System.getProperty(VERSION_JAVA), System.getProperty(VENDOR_JAVA));
Map<Thread, StackTraceElement[]> traces = Thread.getAllStackTraces(); Map<Thread, StackTraceElement[]> traces = Thread.getAllStackTraces();
@@ -244,20 +249,20 @@ public class ErrorViewer implements NewConstants, NewConstants.LANG.ErrorViewer
} }
} }
} }
private static class BugzAction extends AbstractAction { private static class BugzAction extends AbstractAction {
private static final long serialVersionUID = 914634661273525959L; private static final long serialVersionUID = 914634661273525959L;
private JTextArea area; private JTextArea area;
public BugzAction(JTextArea area) { public BugzAction(final JTextArea neoArea) {
putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(VK_B, CTRL_DOWN_MASK)); putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(VK_B, CTRL_DOWN_MASK));
putValue(NAME, "Report Bug"); putValue(NAME, "Report Bug");
this.area = area; this.area = neoArea;
} }
public void actionPerformed(ActionEvent e) { public void actionPerformed(final ActionEvent e) {
BugzReporter br = new BugzReporter(); BugzReporter br = new BugzReporter();
br.setDumpText(area.getText()); br.setDumpText(area.getText());
br.setVisible(true); br.setVisible(true);

View File

@@ -231,4 +231,34 @@ public class BuildInfo {
return atts.getValue(manifestAttrName); return atts.getValue(manifestAttrName);
} }
/**
* Generate a user-friendly string describing the version and build ID.
*
* This replaces the old system property program/version.
*
* @return a user-friendly string describing the version and build ID
*/
public final String toPrettyString() {
final String rawVersion = getVersion();
final String rawBuildID = getBuildID();
String version;
if (rawVersion == null) {
version = "Unknown";
}
else {
version = rawVersion;
}
String buildID;
if (rawBuildID == null) {
buildID = "Unknown";
}
else {
buildID = rawBuildID;
}
return "Forge version " + version + ", build ID " + buildID;
}
} }

View File

@@ -17,8 +17,6 @@ public interface NewConstants {
//General properties //General properties
/** Constant <code>HOW_TO_REPORT_BUGS_URL = "program/howToReportBugsURL"</code>. */ /** Constant <code>HOW_TO_REPORT_BUGS_URL = "program/howToReportBugsURL"</code>. */
String HOW_TO_REPORT_BUGS_URL = "program/howToReportBugsURL"; String HOW_TO_REPORT_BUGS_URL = "program/howToReportBugsURL";
/** Constant <code>VERSION="program/version"</code>. */
String VERSION = "program/version";
/** Constant <code>SHOW2CDECK="showdeck/2color"</code>. */ /** Constant <code>SHOW2CDECK="showdeck/2color"</code>. */
String SHOW2CDECK = "showdeck/2color"; String SHOW2CDECK = "showdeck/2color";