From f183a2d5e372ac2e409916650418dc387977ed80 Mon Sep 17 00:00:00 2001 From: Anas Elgarhy Date: Thu, 25 May 2023 20:30:01 +0300 Subject: [PATCH 1/8] [new/ui] Add the Tafser text area in the details dialog --- .../ayah/dialogs/AyahDetailsDialog.form | 65 +++++++++++++++++-- .../ayah/dialogs/AyahDetailsDialog.java | 4 +- 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form index 8d28764..8b4018b 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form @@ -1,9 +1,9 @@
- + - + @@ -13,7 +13,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -137,6 +137,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java index a0f8a1b..1196010 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java @@ -4,7 +4,6 @@ import com.anas.alqurancloudapi.Ayah; import com.anas.alqurancloudapi.consts.Constants; import com.anas.intellij.plugins.ayah.audio.AudioPlayer; import com.anas.intellij.plugins.ayah.audio.PlayerListener; -import javazoom.jl.player.advanced.PlaybackEvent; import javax.swing.*; import java.awt.event.KeyEvent; @@ -28,6 +27,9 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { private JButton previousButton; private JButton nextButton; private JCheckBox autoPlayCheckBox; + private JTextArea tafserTextArea; + private JComboBox comboBox1; + private JComboBox comboBox2; private boolean isPlaying; private AudioPlayer audioPlayer; private Ayah ayah; From 48de07687210fcfc49a94e4345bf57dbb1669f98 Mon Sep 17 00:00:00 2001 From: Anas Elgarhy Date: Thu, 25 May 2023 22:52:35 +0300 Subject: [PATCH 2/8] [new] Implement the tafser and translation functonalty --- .../ayah/dialogs/AyahDetailsDialog.form | 123 ++++++++++-------- .../ayah/dialogs/AyahDetailsDialog.java | 78 ++++++++++- 2 files changed, 141 insertions(+), 60 deletions(-) diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form index 8b4018b..80fefb3 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form @@ -1,6 +1,6 @@ - + @@ -13,12 +13,12 @@ - + - + @@ -60,25 +60,74 @@ - + + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -158,44 +207,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java index 1196010..910903a 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java @@ -2,14 +2,20 @@ package com.anas.intellij.plugins.ayah.dialogs; import com.anas.alqurancloudapi.Ayah; import com.anas.alqurancloudapi.consts.Constants; +import com.anas.alqurancloudapi.consts.Surahs; +import com.anas.alqurancloudapi.edition.Edition; +import com.anas.alqurancloudapi.edition.EditionType; import com.anas.intellij.plugins.ayah.audio.AudioPlayer; import com.anas.intellij.plugins.ayah.audio.PlayerListener; +import com.anas.intellij.plugins.ayah.settings.userinterface.ReadableEdition; import javax.swing.*; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; +import java.util.Arrays; +import java.util.Objects; /** * @author Anas Elgarhy @@ -28,8 +34,8 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { private JButton nextButton; private JCheckBox autoPlayCheckBox; private JTextArea tafserTextArea; - private JComboBox comboBox1; - private JComboBox comboBox2; + private JComboBox tafserAndTranslationComboBox; + private JComboBox editionComboBox; private boolean isPlaying; private AudioPlayer audioPlayer; private Ayah ayah; @@ -40,20 +46,53 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { setContentPane(contentPane); setModal(true); setSize(500, 300); - setResizable(false); +// setResizable(false); setLocationRelativeTo(null); getRootPane().setDefaultButton(playButton); - updateAhaDetails(); + try { + setupTheUI(); + } catch (final IOException e) { + e.printStackTrace(); + JOptionPane.showMessageDialog(this, "Error while loading the ayah details", + "Error", JOptionPane.ERROR_MESSAGE); + } addListeners(); } + private void setupTheUI() throws IOException { + updateAhaDetails(); + previousButton.setEnabled(ayah.getNumber() != 1 && ayah.getSurah().getNumber() != 1); + nextButton.setEnabled(ayah.getNumber() != Constants.AYAHS_COUNT && ayah.getSurah().getNumber() != Constants.SURAS_COUNT); + + + final var tafserAndTranslationComboBoxModel = new DefaultComboBoxModel(); + final var editionComboBoxModel = new DefaultComboBoxModel(); + + Arrays.stream(Edition.getEditions()).forEach(edition -> { + if (edition.getType() == EditionType.TAFSIR || edition.getType() == EditionType.TRANSLATION) { + tafserAndTranslationComboBoxModel.addElement(new ReadableEdition(edition)); + } else { + editionComboBoxModel.addElement(new ReadableEdition(edition)); + } + }); + + tafserAndTranslationComboBox.setModel(tafserAndTranslationComboBoxModel); + editionComboBox.setModel(editionComboBoxModel); + + // Set the default selected item for the editionComboBox + editionComboBoxModel.setSelectedItem(new ReadableEdition(ayah.getEdition())); + } + private void updateAhaDetails() { + // Update the ayah details ayahTextArea.setText(ayah.getText()); surahNameLabel.setText(ayah.getSurah().getName()); numberOfAyahInSuarhLabel.setText("آية رقم: " + ayah.getNumberInSurah()); ayahRevelationType.setText(ayah.getSurah().getRevelationType().getArabicName()); + // Update the tafser or translation + updateTheTauserTextArea(); } private void addListeners() { @@ -94,6 +133,24 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { } }); + tafserAndTranslationComboBox.addActionListener(e -> { + updateTheTauserTextArea(); + }); + + editionComboBox.addActionListener(e -> { + final var selectedEdition = ((ReadableEdition) Objects.requireNonNull( + editionComboBox.getSelectedItem())).getEdition(); + try { + ayah = Ayah.getAyah(ayah.getNumber(), selectedEdition); + updateAhaDetails(); + } catch (final IOException ioException) { + ioException.printStackTrace(); + JOptionPane.showMessageDialog(this, + "Error while loading the ayah - check your internet connection", + "Error", JOptionPane.ERROR_MESSAGE); + } + }); + buttonCancel.addActionListener(l -> close()); // call onCancel() when cross is clicked @@ -110,6 +167,19 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); } + private void updateTheTauserTextArea() { + final var selectedEdition = ((ReadableEdition) Objects.requireNonNull( + tafserAndTranslationComboBox.getSelectedItem())).getEdition(); + try { + tafserTextArea.setText(Ayah.getAyah(ayah.getNumber(), selectedEdition).getText()); + } catch (final IOException ioException) { + ioException.printStackTrace(); + JOptionPane.showMessageDialog(this, + "Error while loading the tafser - check your internet connection", + "Error", JOptionPane.ERROR_MESSAGE); + } + } + private void close() { if (audioPlayer != null) { audioPlayer.stop(); From c91af211deee1c8b675f18c27334db0d581bc071 Mon Sep 17 00:00:00 2001 From: Anas Elgarhy Date: Thu, 25 May 2023 23:02:55 +0300 Subject: [PATCH 3/8] [fix] Fix the initialization issue --- .../anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java index 910903a..dace520 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java @@ -62,7 +62,6 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { } private void setupTheUI() throws IOException { - updateAhaDetails(); previousButton.setEnabled(ayah.getNumber() != 1 && ayah.getSurah().getNumber() != 1); nextButton.setEnabled(ayah.getNumber() != Constants.AYAHS_COUNT && ayah.getSurah().getNumber() != Constants.SURAS_COUNT); @@ -83,6 +82,8 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { // Set the default selected item for the editionComboBox editionComboBoxModel.setSelectedItem(new ReadableEdition(ayah.getEdition())); + // Set the actual information about the ayah in the UI + updateAhaDetails(); } private void updateAhaDetails() { From c213150c49315502e500bd0fec1bd7fc1393a804 Mon Sep 17 00:00:00 2001 From: Anas Elgarhy Date: Thu, 25 May 2023 23:04:41 +0300 Subject: [PATCH 4/8] [fix/ui] Fix the combo boxes size --- .../intellij/plugins/ayah/dialogs/AyahDetailsDialog.form | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form index 80fefb3..e67e2e2 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form @@ -60,8 +60,7 @@ - - + @@ -71,6 +70,7 @@ + @@ -80,12 +80,14 @@ + + @@ -94,6 +96,7 @@ + From 5cf3890c02dc5f3e25fbf16aef4a82c03cb57b1c Mon Sep 17 00:00:00 2001 From: Anas Elgarhy Date: Thu, 25 May 2023 23:15:15 +0300 Subject: [PATCH 5/8] [update/ui] Update the details dialog size and return it to be unresizable --- .../anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java index dace520..aabbfb3 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java @@ -45,8 +45,8 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { setContentPane(contentPane); setModal(true); - setSize(500, 300); -// setResizable(false); + setSize(520, 320); + setResizable(false); setLocationRelativeTo(null); getRootPane().setDefaultButton(playButton); From 39c5978d0fb605d1b8976412f446149d97ec4e8a Mon Sep 17 00:00:00 2001 From: Anas Elgarhy Date: Thu, 25 May 2023 23:31:19 +0300 Subject: [PATCH 6/8] [fix] Fix the editions sel method for combo boxes models setup --- .../intellij/plugins/ayah/dialogs/AyahDetailsDialog.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java index aabbfb3..17eed7b 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java @@ -2,9 +2,8 @@ package com.anas.intellij.plugins.ayah.dialogs; import com.anas.alqurancloudapi.Ayah; import com.anas.alqurancloudapi.consts.Constants; -import com.anas.alqurancloudapi.consts.Surahs; import com.anas.alqurancloudapi.edition.Edition; -import com.anas.alqurancloudapi.edition.EditionType; +import com.anas.alqurancloudapi.edition.EditionFormat; import com.anas.intellij.plugins.ayah.audio.AudioPlayer; import com.anas.intellij.plugins.ayah.audio.PlayerListener; import com.anas.intellij.plugins.ayah.settings.userinterface.ReadableEdition; @@ -70,10 +69,10 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { final var editionComboBoxModel = new DefaultComboBoxModel(); Arrays.stream(Edition.getEditions()).forEach(edition -> { - if (edition.getType() == EditionType.TAFSIR || edition.getType() == EditionType.TRANSLATION) { - tafserAndTranslationComboBoxModel.addElement(new ReadableEdition(edition)); - } else { + if (edition.getFormat() == EditionFormat.AUDIO) { editionComboBoxModel.addElement(new ReadableEdition(edition)); + } else { + tafserAndTranslationComboBoxModel.addElement(new ReadableEdition(edition)); } }); From e8a0dd8ed63a241bbc1d4313ea637ecfbd72e367 Mon Sep 17 00:00:00 2001 From: Anas Elgarhy Date: Thu, 25 May 2023 23:33:33 +0300 Subject: [PATCH 7/8] [fix/typo] Fix the `updateAyahDetails` method name --- .../intellij/plugins/ayah/dialogs/AyahDetailsDialog.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java index 17eed7b..31ff0b6 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java @@ -82,10 +82,10 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { // Set the default selected item for the editionComboBox editionComboBoxModel.setSelectedItem(new ReadableEdition(ayah.getEdition())); // Set the actual information about the ayah in the UI - updateAhaDetails(); + updateAyahDetails(); } - private void updateAhaDetails() { + private void updateAyahDetails() { // Update the ayah details ayahTextArea.setText(ayah.getText()); surahNameLabel.setText(ayah.getSurah().getName()); @@ -142,7 +142,7 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { editionComboBox.getSelectedItem())).getEdition(); try { ayah = Ayah.getAyah(ayah.getNumber(), selectedEdition); - updateAhaDetails(); + updateAyahDetails(); } catch (final IOException ioException) { ioException.printStackTrace(); JOptionPane.showMessageDialog(this, @@ -204,7 +204,7 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { try { ayah = Ayah.getAyah(ayhNumber, ayah.getEdition().getIdentifier()); - updateAhaDetails(); + updateAyahDetails(); return true; } catch (final IOException ex) { JOptionPane.showMessageDialog(this, From 5920e1bc08e0044cb500844d9a5c181c98b928ca Mon Sep 17 00:00:00 2001 From: Anas Elgarhy Date: Thu, 25 May 2023 23:54:58 +0300 Subject: [PATCH 8/8] [fix/typo] Fix the `tafseer` word typos --- .../ayah/dialogs/AyahDetailsDialog.form | 6 ++--- .../ayah/dialogs/AyahDetailsDialog.java | 22 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form index e67e2e2..ce5d260 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.form @@ -73,11 +73,11 @@ - + - + @@ -196,7 +196,7 @@ - + diff --git a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java index 31ff0b6..c1d08f4 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/dialogs/AyahDetailsDialog.java @@ -32,8 +32,8 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { private JButton previousButton; private JButton nextButton; private JCheckBox autoPlayCheckBox; - private JTextArea tafserTextArea; - private JComboBox tafserAndTranslationComboBox; + private JTextArea tafseerTextArea; + private JComboBox tafseerAndTranslationComboBox; private JComboBox editionComboBox; private boolean isPlaying; private AudioPlayer audioPlayer; @@ -76,7 +76,7 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { } }); - tafserAndTranslationComboBox.setModel(tafserAndTranslationComboBoxModel); + tafseerAndTranslationComboBox.setModel(tafserAndTranslationComboBoxModel); editionComboBox.setModel(editionComboBoxModel); // Set the default selected item for the editionComboBox @@ -91,8 +91,8 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { surahNameLabel.setText(ayah.getSurah().getName()); numberOfAyahInSuarhLabel.setText("آية رقم: " + ayah.getNumberInSurah()); ayahRevelationType.setText(ayah.getSurah().getRevelationType().getArabicName()); - // Update the tafser or translation - updateTheTauserTextArea(); + // Update the tafseer or translation + updateTheTauseerTextArea(); } private void addListeners() { @@ -133,8 +133,8 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { } }); - tafserAndTranslationComboBox.addActionListener(e -> { - updateTheTauserTextArea(); + tafseerAndTranslationComboBox.addActionListener(e -> { + updateTheTauseerTextArea(); }); editionComboBox.addActionListener(e -> { @@ -167,15 +167,15 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); } - private void updateTheTauserTextArea() { + private void updateTheTauseerTextArea() { final var selectedEdition = ((ReadableEdition) Objects.requireNonNull( - tafserAndTranslationComboBox.getSelectedItem())).getEdition(); + tafseerAndTranslationComboBox.getSelectedItem())).getEdition(); try { - tafserTextArea.setText(Ayah.getAyah(ayah.getNumber(), selectedEdition).getText()); + tafseerTextArea.setText(Ayah.getAyah(ayah.getNumber(), selectedEdition).getText()); } catch (final IOException ioException) { ioException.printStackTrace(); JOptionPane.showMessageDialog(this, - "Error while loading the tafser - check your internet connection", + "Error while loading the tafseer - check your internet connection", "Error", JOptionPane.ERROR_MESSAGE); } }