From f8b13f0b92d84b793e0047e30c69773fa53e8e91 Mon Sep 17 00:00:00 2001 From: Matthias Mohr Date: Sun, 3 Nov 2024 14:11:05 +0100 Subject: [PATCH] Minor textual updates, show error messages, v1.2.1 --- CHANGELOG | 4 ++ EasyFlickrBackup.jar | Bin 588143 -> 588995 bytes LICENSE | 2 +- README.md | 4 +- pom.xml | 2 +- .../de/lutana/easyflickrbackup/AboutDlg.form | 12 ++-- .../de/lutana/easyflickrbackup/AboutDlg.java | 15 ++--- .../java/de/lutana/easyflickrbackup/GUI.form | 28 +++++++-- .../java/de/lutana/easyflickrbackup/GUI.java | 54 ++++++++++++++---- .../lutana/easyflickrbackup/ImageSizes.java | 9 +-- .../de/lutana/easyflickrbackup/Settings.java | 4 +- .../easyflickrbackup/StringContainer.java | 16 ------ .../easyflickrbackup/StringContainerAuth.java | 40 +++++++++++++ 13 files changed, 134 insertions(+), 56 deletions(-) create mode 100644 src/main/java/de/lutana/easyflickrbackup/StringContainerAuth.java diff --git a/CHANGELOG b/CHANGELOG index 3e5ec06..6d93685 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +Version 1.2.1 +- Minor textual updates +- Show error messages + Version 1.2 - Support for latest Flickr API diff --git a/EasyFlickrBackup.jar b/EasyFlickrBackup.jar index 1fc9b92c870e0b77175a95f450ffd0df720cf192..f736ebd3b4ed0ff51c64ec4109ccda6492349ad7 100644 GIT binary patch delta 33088 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 delta 32174 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.0.0 de.lutana EasyFlickrBackup - 1.2 + 1.2.1 jar UTF-8 diff --git a/src/main/java/de/lutana/easyflickrbackup/AboutDlg.form b/src/main/java/de/lutana/easyflickrbackup/AboutDlg.form index 30b83f7..17a719c 100644 --- a/src/main/java/de/lutana/easyflickrbackup/AboutDlg.form +++ b/src/main/java/de/lutana/easyflickrbackup/AboutDlg.form @@ -89,7 +89,7 @@ - + @@ -112,7 +112,7 @@ - + @@ -135,8 +135,7 @@ - - + @@ -151,8 +150,11 @@ - + + + + diff --git a/src/main/java/de/lutana/easyflickrbackup/AboutDlg.java b/src/main/java/de/lutana/easyflickrbackup/AboutDlg.java index 35c93ad..d74ae61 100644 --- a/src/main/java/de/lutana/easyflickrbackup/AboutDlg.java +++ b/src/main/java/de/lutana/easyflickrbackup/AboutDlg.java @@ -61,7 +61,7 @@ private void initComponents() { setResizable(false); jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | java.awt.Font.BOLD)); - jLabel1.setText("EasyFlickrBackup 1.2"); + jLabel1.setText("EasyFlickrBackup 1.2.1"); jLabel2.setText("MIT License"); @@ -70,7 +70,7 @@ private void initComponents() { jLabel4.setText("Matthias Mohr"); jLabel5.setForeground(new java.awt.Color(0, 51, 255)); - jLabel5.setText("http://www.lutana.de"); + jLabel5.setText("https://mohr.ws"); jLabel5.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel5MouseClicked(evt); @@ -82,14 +82,13 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { jTextArea1.setEditable(false); jTextArea1.setColumns(20); jTextArea1.setRows(5); - jTextArea1.setText("Version 1.2\n- Support for latest Flickr API\n\nVersion 1.1.1\n- File names comply with flickr guidelines\n\nVersion 1.1\n- Download process about 10 times faster\n- Pause & Resume the download process at any time\n- Store files in a separate directory per user\n\nVersion 1.0\n- Initial release"); - jTextArea1.setCaretPosition(0); + jTextArea1.setText("Version 1.2.1\n- Minor textual updates\n- Show error messages\n\nVersion 1.2\n- Support for latest Flickr API\n\nVersion 1.1.1\n- File names comply with flickr guidelines\n\nVersion 1.1\n- Download process about 10 times faster\n- Pause & Resume the download process at any time\n- Store files in a separate directory per user\n\nVersion 1.0\n- Initial release"); jScrollPane1.setViewportView(jTextArea1); jLabel7.setText("License:"); jLabel8.setForeground(new java.awt.Color(0, 51, 255)); - jLabel8.setText("https://github.com/lutana-de/easyflickrbackup"); + jLabel8.setText("https://github.com/m-mohr/easyflickrbackup"); jLabel8.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel8MouseClicked(evt); @@ -147,19 +146,21 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { .addContainerGap()) ); + jLabel8.getAccessibleContext().setAccessibleDescription(""); + pack(); }// //GEN-END:initComponents private void jLabel5MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel5MouseClicked try { - Desktop.getDesktop().browse(new URI("http://www.lutana.de")); + Desktop.getDesktop().browse(new URI("https://mohr.ws")); } catch (URISyntaxException | IOException ex) { } }//GEN-LAST:event_jLabel5MouseClicked private void jLabel8MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel8MouseClicked try { - Desktop.getDesktop().browse(new URI("https://github.com/lutana-de/easyflickrbackup")); + Desktop.getDesktop().browse(new URI("https://github.com/m-mohr/easyflickrbackup")); } catch (URISyntaxException | IOException ex) { } }//GEN-LAST:event_jLabel8MouseClicked diff --git a/src/main/java/de/lutana/easyflickrbackup/GUI.form b/src/main/java/de/lutana/easyflickrbackup/GUI.form index 6f4004d..338de58 100644 --- a/src/main/java/de/lutana/easyflickrbackup/GUI.form +++ b/src/main/java/de/lutana/easyflickrbackup/GUI.form @@ -147,7 +147,7 @@ - + @@ -170,11 +170,12 @@ - + + @@ -192,9 +193,11 @@ - - - + + + + + @@ -225,6 +228,21 @@ + + + + + + + + + + + + + + + diff --git a/src/main/java/de/lutana/easyflickrbackup/GUI.java b/src/main/java/de/lutana/easyflickrbackup/GUI.java index 38308b8..5896117 100644 --- a/src/main/java/de/lutana/easyflickrbackup/GUI.java +++ b/src/main/java/de/lutana/easyflickrbackup/GUI.java @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright 2016 Lutana.de + * Copyright 2024 Matthias Mohr * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -88,6 +88,8 @@ private void initComponents() { statusLabel = new javax.swing.JLabel(); progressBar = new javax.swing.JProgressBar(); cancelBtn = new javax.swing.JButton(); + jScrollPane1 = new javax.swing.JScrollPane(); + messageArea = new javax.swing.JTextArea(); jPanel1 = new javax.swing.JPanel(); openFolderBtn = new javax.swing.JButton(); jButton1 = new javax.swing.JButton(); @@ -120,7 +122,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { Auth[] auths = this.flickrAuth.retrieveAll(); for (Auth auth : auths) { - userBox.addItem(new StringContainer.Auth(auth)); + userBox.addItem(new StringContainerAuth(auth)); } if (userBox.getItemCount() > 0) { userBox.setSelectedIndex(0); @@ -190,6 +192,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); + messageArea.setEditable(false); + messageArea.setColumns(20); + jScrollPane1.setViewportView(messageArea); + javax.swing.GroupLayout backupPanelLayout = new javax.swing.GroupLayout(backupPanel); backupPanel.setLayout(backupPanelLayout); backupPanelLayout.setHorizontalGroup( @@ -200,10 +206,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addComponent(startBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(backupSep) .addGroup(backupPanelLayout.createSequentialGroup() - .addComponent(statusLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(statusLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 459, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(cancelBtn)) - .addComponent(progressBar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(progressBar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING)) .addContainerGap()) ); backupPanelLayout.setVerticalGroup( @@ -218,7 +225,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addComponent(statusLabel) .addComponent(cancelBtn)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(progressBar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE) .addContainerGap()) ); @@ -309,7 +318,7 @@ private void updateComponents() { } public void updateAuth() { - StringContainer.Auth authContainer = (StringContainer.Auth) userBox.getSelectedItem(); + StringContainerAuth authContainer = (StringContainerAuth) userBox.getSelectedItem(); if (authContainer != null) { this.setAuth(authContainer.get()); } @@ -375,7 +384,7 @@ private void authBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST try { OAuth1Token requestToken = authInterface.getAccessToken(accessToken, tokenKey); Auth auth = authInterface.checkToken(requestToken); - StringContainer.Auth ac = new StringContainer.Auth(auth); + StringContainerAuth ac = new StringContainerAuth(auth); userBox.addItem(ac); userBox.setSelectedItem(ac); updateAuth(); @@ -479,21 +488,44 @@ public void run() { fos.flush(); fos.close(); bis.close(); + addMessage("Succeeded", current); + } + else { + addMessage("Exists -> Skipped", current); } } catch (Exception e) { + addMessage(e.getMessage(), current); error++; } progressBar.setValue(current); } page++; } while (page <= pages && isRunning); - statusLabel.setText(isRunning ? "Download of " + total + " photos finished. " + (error == 0 ? "No" : error) + " errors occured!" : "Stopped downloading process. You can resume it at any time."); + addMessage(isRunning ? "Download of " + total + " photos finished. " + (error == 0 ? "No" : error) + " errors occured!" : "Stopped downloading process. You can resume it at any time."); } catch (FlickrException ex) { - statusLabel.setText(ex.getMessage()); + addMessage(ex.getMessage()); } isRunning = false; updateComponents(); } + + public void addMessage(String message) { + this.addMessage(message, null); + } + + public void addMessage(String message, Integer count) { + if (count == null) { + statusLabel.setText(message); + } + if (messageArea.getDocument().getLength() > 0) { + messageArea.append(System.lineSeparator()); + messageArea.setCaretPosition(messageArea.getDocument().getLength()); + } + if (count != null) { + messageArea.append(count + ": "); + } + messageArea.append(message); + } /** * @param args the command line arguments @@ -501,7 +533,7 @@ public void run() { public static void main(String args[]) { /* Set the Nimbus look and feel */ // - /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { @@ -552,6 +584,8 @@ public void run() { private javax.swing.JLabel dirLabel; private javax.swing.JButton jButton1; private javax.swing.JPanel jPanel1; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JTextArea messageArea; private javax.swing.JButton openFolderBtn; private javax.swing.JProgressBar progressBar; private javax.swing.JPanel settingsPanel; diff --git a/src/main/java/de/lutana/easyflickrbackup/ImageSizes.java b/src/main/java/de/lutana/easyflickrbackup/ImageSizes.java index 55a9b91..7b5f197 100644 --- a/src/main/java/de/lutana/easyflickrbackup/ImageSizes.java +++ b/src/main/java/de/lutana/easyflickrbackup/ImageSizes.java @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright 2016 Matthias. + * Copyright 2016 Matthias Mohr. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -24,17 +24,12 @@ package de.lutana.easyflickrbackup; import com.flickr4java.flickr.photos.Size; -import java.util.AbstractMap; -import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; -import java.util.List; import java.util.Map; -import java.util.Map.Entry; public class ImageSizes { - private Map suffix; + private final Map suffix; public ImageSizes() { suffix = new HashMap<>(); diff --git a/src/main/java/de/lutana/easyflickrbackup/Settings.java b/src/main/java/de/lutana/easyflickrbackup/Settings.java index 74d5a76..7e270dd 100644 --- a/src/main/java/de/lutana/easyflickrbackup/Settings.java +++ b/src/main/java/de/lutana/easyflickrbackup/Settings.java @@ -1,7 +1,7 @@ /* * The MIT License * - * Copyright 2016 Lutana.de + * Copyright 2024 Matthias Mohr * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -28,7 +28,7 @@ public class Settings { - private static Preferences prefs = Preferences.userNodeForPackage(de.lutana.easyflickrbackup.Settings.class); + private static final Preferences prefs = Preferences.userNodeForPackage(Settings.class); public static void setBackupDirectory(File file) { if (file != null) { diff --git a/src/main/java/de/lutana/easyflickrbackup/StringContainer.java b/src/main/java/de/lutana/easyflickrbackup/StringContainer.java index 780a4b5..c80ae99 100644 --- a/src/main/java/de/lutana/easyflickrbackup/StringContainer.java +++ b/src/main/java/de/lutana/easyflickrbackup/StringContainer.java @@ -23,8 +23,6 @@ */ package de.lutana.easyflickrbackup; -import com.flickr4java.flickr.people.User; - public abstract class StringContainer { protected T obj; @@ -40,19 +38,5 @@ public T get() { @Override public abstract String toString(); { } - - public static class Auth extends StringContainer { - - public Auth(com.flickr4java.flickr.auth.Auth obj) { - super(obj); - } - - @Override - public String toString() { - User u = obj.getUser(); - return u.getUsername() + " (" + u.getId() + ")"; - } - - } } diff --git a/src/main/java/de/lutana/easyflickrbackup/StringContainerAuth.java b/src/main/java/de/lutana/easyflickrbackup/StringContainerAuth.java new file mode 100644 index 0000000..1528b0e --- /dev/null +++ b/src/main/java/de/lutana/easyflickrbackup/StringContainerAuth.java @@ -0,0 +1,40 @@ +/* + * The MIT License + * + * Copyright 2024 Matthias Mohr. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package de.lutana.easyflickrbackup; + +import com.flickr4java.flickr.people.User; + +public class StringContainerAuth extends StringContainer { + + public StringContainerAuth(com.flickr4java.flickr.auth.Auth obj) { + super(obj); + } + + @Override + public String toString() { + User u = obj.getUser(); + return u.getUsername() + " (" + u.getId() + ")"; + } + +} \ No newline at end of file