From 7df40e17e5286b62364d56d89f3339c05039c687 Mon Sep 17 00:00:00 2001 From: Skyost Date: Fri, 7 Aug 2015 16:29:26 +0200 Subject: [PATCH] Donate button and ErrorDialog will now print the throwable. --- src/fr/skyost/algo/desktop/AlgogoDesktop.java | 1 - .../algo/desktop/dialogs/AboutDialog.java | 29 ++++++++++++++++--- .../algo/desktop/dialogs/ErrorDialog.java | 19 +++++++++++- .../algo/desktop/frames/ConsoleFrame.java | 2 -- .../algo/desktop/frames/EditorFrame.java | 8 ----- src/fr/skyost/algo/desktop/res/lang/en.lang | 1 + src/fr/skyost/algo/desktop/res/lang/fr.lang | 1 + .../skyost/algo/desktop/utils/JLabelLink.java | 1 - .../algo/desktop/utils/LanguageManager.java | 1 - 9 files changed, 45 insertions(+), 18 deletions(-) diff --git a/src/fr/skyost/algo/desktop/AlgogoDesktop.java b/src/fr/skyost/algo/desktop/AlgogoDesktop.java index be0922b..be080d9 100644 --- a/src/fr/skyost/algo/desktop/AlgogoDesktop.java +++ b/src/fr/skyost/algo/desktop/AlgogoDesktop.java @@ -62,7 +62,6 @@ public final void run() { }); } catch(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(null, ex); } } diff --git a/src/fr/skyost/algo/desktop/dialogs/AboutDialog.java b/src/fr/skyost/algo/desktop/dialogs/AboutDialog.java index f847e55..4a2ed57 100644 --- a/src/fr/skyost/algo/desktop/dialogs/AboutDialog.java +++ b/src/fr/skyost/algo/desktop/dialogs/AboutDialog.java @@ -10,7 +10,10 @@ import java.awt.Color; import java.awt.Container; +import java.awt.Desktop; import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.net.URL; import javax.swing.BorderFactory; @@ -21,6 +24,7 @@ import javax.swing.GroupLayout; import javax.swing.GroupLayout.Alignment; import javax.swing.LayoutStyle.ComponentPlacement; +import javax.swing.JButton; public class AboutDialog extends JDialog { @@ -30,7 +34,7 @@ public AboutDialog() { try { final String authors = Utils.join(' ', AlgogoDesktop.APP_AUTHORS); this.setTitle(String.format(LanguageManager.getString("about.title"), AlgogoDesktop.APP_NAME, AlgogoDesktop.APP_VERSION, authors)); - this.setSize(430, 406); + this.setSize(430, 460); this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); this.setModalityType(ModalityType.APPLICATION_MODAL); this.setModal(true); @@ -53,14 +57,31 @@ public AboutDialog() { final JLabel lblBuiltUsing = new JLabel(String.format(LanguageManager.getString("about.builtusing"), "minimal-json v0.9.2", "Heartbeat v0.1", "JTattoo v1.6.11")); lblBuiltUsing.setHorizontalAlignment(SwingConstants.CENTER); final Container content = this.getContentPane(); + final JButton btnDonate = new JButton(LanguageManager.getString("about.donate")); + btnDonate.setFont(btnDonate.getFont().deriveFont(Font.BOLD)); + btnDonate.setIcon(new ImageIcon(AlgogoDesktop.class.getResource("/fr/skyost/algo/desktop/res/icons/btn_donate.png"))); + btnDonate.addActionListener(new ActionListener() { + + @Override + public final void actionPerformed(final ActionEvent event) { + if(Desktop.isDesktopSupported()) { + try { + Desktop.getDesktop().browse(new URL("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4KYYXZTK4HQME").toURI()); + } + catch(final Exception ex) { + ErrorDialog.errorMessage(AboutDialog.this, ex); + } + } + } + + }); final GroupLayout groupLayout = new GroupLayout(content); - groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(lblAppDesktopInfos, GroupLayout.DEFAULT_SIZE, 352, Short.MAX_VALUE).addContainerGap()).addGroup(groupLayout.createSequentialGroup().addComponent(lblAppName, GroupLayout.DEFAULT_SIZE, 372, Short.MAX_VALUE).addGap(0)).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(lblAppCoreInfos, GroupLayout.DEFAULT_SIZE, 352, Short.MAX_VALUE).addContainerGap()).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(panel, GroupLayout.DEFAULT_SIZE, 352, Short.MAX_VALUE).addContainerGap()).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(lblBuiltUsing, GroupLayout.DEFAULT_SIZE, 352, Short.MAX_VALUE).addContainerGap())); - groupLayout.setVerticalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(lblAppName).addPreferredGap(ComponentPlacement.UNRELATED).addComponent(lblAppDesktopInfos).addPreferredGap(ComponentPlacement.RELATED).addComponent(lblAppCoreInfos).addPreferredGap(ComponentPlacement.UNRELATED).addComponent(panel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addPreferredGap(ComponentPlacement.RELATED).addComponent(lblBuiltUsing).addContainerGap(34, Short.MAX_VALUE))); + groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(lblAppDesktopInfos, GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE).addContainerGap()).addGroup(groupLayout.createSequentialGroup().addComponent(lblAppName, GroupLayout.DEFAULT_SIZE, 424, Short.MAX_VALUE).addGap(0)).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(lblAppCoreInfos, GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE).addContainerGap()).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(panel, GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE).addContainerGap()).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(lblBuiltUsing, GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE).addContainerGap()).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(btnDonate, GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE).addContainerGap())); + groupLayout.setVerticalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGroup(groupLayout.createSequentialGroup().addContainerGap().addComponent(lblAppName).addPreferredGap(ComponentPlacement.UNRELATED).addComponent(lblAppDesktopInfos, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addPreferredGap(ComponentPlacement.RELATED).addComponent(lblAppCoreInfos, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addPreferredGap(ComponentPlacement.UNRELATED).addComponent(panel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addPreferredGap(ComponentPlacement.RELATED).addComponent(lblBuiltUsing).addGap(18).addComponent(btnDonate, GroupLayout.DEFAULT_SIZE, 55, Short.MAX_VALUE).addContainerGap())); content.setLayout(groupLayout); } catch(final Exception ex) { ErrorDialog.errorMessage(this, ex); - ex.printStackTrace(); } } diff --git a/src/fr/skyost/algo/desktop/dialogs/ErrorDialog.java b/src/fr/skyost/algo/desktop/dialogs/ErrorDialog.java index a8a0e2d..b7b204f 100644 --- a/src/fr/skyost/algo/desktop/dialogs/ErrorDialog.java +++ b/src/fr/skyost/algo/desktop/dialogs/ErrorDialog.java @@ -85,13 +85,30 @@ public final void actionPerformed(final ActionEvent event) { * Shows an error message (no translation because it can be risky). * * @param component The parent component. - * @param throwable The error. + * @param throwable The error. Will be printed. * * @return The dialog. */ public static ErrorDialog errorMessage(final Component component, final Throwable throwable) { + return errorMessage(component, throwable, true); + } + + /** + * Shows an error message (no translation because it can be risky). + * + * @param component The parent component. + * @param throwable The error. + * @param printStackTrace If the error should be printed. + * + * @return The dialog. + */ + + public static ErrorDialog errorMessage(final Component component, final Throwable throwable, final boolean printStackTrace) { try { + if(printStackTrace) { + throwable.printStackTrace(); + } final ErrorDialog dialog = new ErrorDialog(component, throwable); dialog.setVisible(true); return dialog; diff --git a/src/fr/skyost/algo/desktop/frames/ConsoleFrame.java b/src/fr/skyost/algo/desktop/frames/ConsoleFrame.java index b60ab8b..a97441a 100644 --- a/src/fr/skyost/algo/desktop/frames/ConsoleFrame.java +++ b/src/fr/skyost/algo/desktop/frames/ConsoleFrame.java @@ -146,7 +146,6 @@ public void actionPerformed(final ActionEvent event) { } } catch(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(ConsoleFrame.this, ex); } } @@ -209,7 +208,6 @@ public final void threadInterrupted(final AlgoRunnable thread, final Exception e currentThread = null; if(ex != null) { output.append("Exception occurred :\"" + ex.getClass().getName() + "\", please check the error log." + LINE_SEPARATOR); - ex.printStackTrace(); ErrorDialog.errorMessage(this, ex); } } diff --git a/src/fr/skyost/algo/desktop/frames/EditorFrame.java b/src/fr/skyost/algo/desktop/frames/EditorFrame.java index 4410d25..213a6f8 100644 --- a/src/fr/skyost/algo/desktop/frames/EditorFrame.java +++ b/src/fr/skyost/algo/desktop/frames/EditorFrame.java @@ -296,7 +296,6 @@ public final void updaterStarted() {} @Override public final void updaterException(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(this, ex); } @@ -316,7 +315,6 @@ public final void updaterUpdateAvailable(final String localVersion, final String } } catch(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(this, ex); } } @@ -365,7 +363,6 @@ public final void actionPerformed(final ActionEvent event) { } catch(final Exception ex) { ErrorDialog.errorMessage(EditorFrame.this, ex); - ex.printStackTrace(); } } @@ -427,7 +424,6 @@ public final void actionPerformed(final ActionEvent event) { } } catch(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(EditorFrame.this, ex); } } @@ -454,7 +450,6 @@ public final void actionPerformed(final ActionEvent event) { } } catch(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(EditorFrame.this, ex); } } @@ -567,7 +562,6 @@ public final void updaterStarted() {} @Override public final void updaterException(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(EditorFrame.this, ex); } @@ -862,7 +856,6 @@ else if(extension.equalsIgnoreCase(".aggc")) { EditorFrame.this.setTitle(buildTitle()); } catch(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(this, ex); } } @@ -886,7 +879,6 @@ public final void saveAs() { } } catch(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(EditorFrame.this, ex); } } diff --git a/src/fr/skyost/algo/desktop/res/lang/en.lang b/src/fr/skyost/algo/desktop/res/lang/en.lang index c41ae1c..6f26a5f 100644 --- a/src/fr/skyost/algo/desktop/res/lang/en.lang +++ b/src/fr/skyost/algo/desktop/res/lang/en.lang @@ -77,6 +77,7 @@ about.title=%s v%s - By %s about.desktopinfos=%s v%s - By %s about.coreinfos=%s v%s - By %s about.builtusing=Built using %s, %s and %s. +about.donate=Buy me a coffee ! addline.title=Add line... diff --git a/src/fr/skyost/algo/desktop/res/lang/fr.lang b/src/fr/skyost/algo/desktop/res/lang/fr.lang index eead271..d69d7e7 100644 --- a/src/fr/skyost/algo/desktop/res/lang/fr.lang +++ b/src/fr/skyost/algo/desktop/res/lang/fr.lang @@ -77,6 +77,7 @@ about.title=%s v%s - Par %s about.desktopinfos=%s v%s - Par %s about.coreinfos=%s v%s - Par %s about.builtusing=Fait avec %s, %s et %s. +about.donate=Payez moi un café ! addline.title=Ajouter une ligne... diff --git a/src/fr/skyost/algo/desktop/utils/JLabelLink.java b/src/fr/skyost/algo/desktop/utils/JLabelLink.java index 12af435..5f6d579 100644 --- a/src/fr/skyost/algo/desktop/utils/JLabelLink.java +++ b/src/fr/skyost/algo/desktop/utils/JLabelLink.java @@ -84,7 +84,6 @@ public final void mouseClicked(final MouseEvent event) { } } catch(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(null, ex); } } diff --git a/src/fr/skyost/algo/desktop/utils/LanguageManager.java b/src/fr/skyost/algo/desktop/utils/LanguageManager.java index 274bef6..3f48174 100644 --- a/src/fr/skyost/algo/desktop/utils/LanguageManager.java +++ b/src/fr/skyost/algo/desktop/utils/LanguageManager.java @@ -34,7 +34,6 @@ public class LanguageManager { } } catch(final Exception ex) { - ex.printStackTrace(); ErrorDialog.errorMessage(null, ex); } }