2011-01-14 4 views
0

改行(\ n、\ r)文字を使用してJFace ErrorDialogに詳細エラーメッセージを表示した人はいますか?JFaceでの改行の使用ErrorDialog

私は詳細メッセージとしてスタックトレース表示しようとしているが、それは唯一の1行に示されているが、オープンで

StringBuffer sbStackTrace = new StringBuffer(); 
for (StackTraceElement ste : throwable.getStackTrace()) { 
    sbStackTrace.append(ste.toString()).append('\n'); 
} 

final IStatus status = new Status(IStatus.ERROR, pluginId, statusMsg, new Throwable(sbStackTrace.toString(), throwable)); 
ErrorDialog dialog = new ErrorDialog(shell, "Error", customMessage, status, IStatus.OK | IStatus.INFO | IStatus.WARNING | IStatus.ERROR) 

ErrorDialogは、詳細メッセージが正しくフォーマットされていないことを除いて、私は、欲しいeveything示し。

アイデア?ダイアログが唯一の1行に1つのIStatusを含み、それIStatusに子がある場合、それは後続の行にそれらが含まれますようsource for ErrorDialog.javaErrorDialog.populateList(List, IStatus, int, boolean)方法を見てみると

答えて

1

、それが見えます。したがって、MultiStatusオブジェクトを作成するか、IStatusという独自の実装を作成する必要があります。

+0

これはそれです!すべての行に1つのステータスを使用すると効果的です。 MultiStatusにそれらをまとめると、StackTraceが正しく表示されます。 – voodoohoo

0

は、私はちょうど「\ n」をして、この作業を覚えているようだが、私も使っていた:

ExceptionUtils.getStackTrace(ex);

From Apache Commons-Lang.

0

はMultiStatusを構築することも可能である同じ達成するために。 MultiStatusは次のIStatusを子として持つことができ、詳細領域のErrorDialogは1行に1つのIStatusを表示しているので、同じ結果が得られます。

私の他の回答https://stackoverflow.com/a/9404081/915931

0

ラップメッセージとしてスタックトレースを含む新しいと例外ではアクションでトリックを参照してください。

コードはここにありますhttps://stackoverflow.com/a/19703255/2064294