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..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 @@ -3,7 +3,7 @@ - + @@ -18,7 +18,7 @@ - + @@ -60,25 +60,77 @@ - + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -107,7 +159,7 @@ - + @@ -137,6 +189,25 @@ + + + + + + + + + + + + + + + + + + + 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..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 @@ -2,15 +2,19 @@ package com.anas.intellij.plugins.ayah.dialogs; import com.anas.alqurancloudapi.Ayah; import com.anas.alqurancloudapi.consts.Constants; +import com.anas.alqurancloudapi.edition.Edition; +import com.anas.alqurancloudapi.edition.EditionFormat; import com.anas.intellij.plugins.ayah.audio.AudioPlayer; import com.anas.intellij.plugins.ayah.audio.PlayerListener; -import javazoom.jl.player.advanced.PlaybackEvent; +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,6 +32,9 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { private JButton previousButton; private JButton nextButton; private JCheckBox autoPlayCheckBox; + private JTextArea tafseerTextArea; + private JComboBox tafseerAndTranslationComboBox; + private JComboBox editionComboBox; private boolean isPlaying; private AudioPlayer audioPlayer; private Ayah ayah; @@ -37,21 +44,55 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { setContentPane(contentPane); setModal(true); - setSize(500, 300); + setSize(520, 320); 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 updateAhaDetails() { + private void setupTheUI() throws IOException { + 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.getFormat() == EditionFormat.AUDIO) { + editionComboBoxModel.addElement(new ReadableEdition(edition)); + } else { + tafserAndTranslationComboBoxModel.addElement(new ReadableEdition(edition)); + } + }); + + tafseerAndTranslationComboBox.setModel(tafserAndTranslationComboBoxModel); + editionComboBox.setModel(editionComboBoxModel); + + // Set the default selected item for the editionComboBox + editionComboBoxModel.setSelectedItem(new ReadableEdition(ayah.getEdition())); + // Set the actual information about the ayah in the UI + updateAyahDetails(); + } + + private void updateAyahDetails() { + // 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 tafseer or translation + updateTheTauseerTextArea(); } private void addListeners() { @@ -92,6 +133,24 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { } }); + tafseerAndTranslationComboBox.addActionListener(e -> { + updateTheTauseerTextArea(); + }); + + editionComboBox.addActionListener(e -> { + final var selectedEdition = ((ReadableEdition) Objects.requireNonNull( + editionComboBox.getSelectedItem())).getEdition(); + try { + ayah = Ayah.getAyah(ayah.getNumber(), selectedEdition); + updateAyahDetails(); + } 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 @@ -108,6 +167,19 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); } + private void updateTheTauseerTextArea() { + final var selectedEdition = ((ReadableEdition) Objects.requireNonNull( + tafseerAndTranslationComboBox.getSelectedItem())).getEdition(); + try { + tafseerTextArea.setText(Ayah.getAyah(ayah.getNumber(), selectedEdition).getText()); + } catch (final IOException ioException) { + ioException.printStackTrace(); + JOptionPane.showMessageDialog(this, + "Error while loading the tafseer - check your internet connection", + "Error", JOptionPane.ERROR_MESSAGE); + } + } + private void close() { if (audioPlayer != null) { audioPlayer.stop(); @@ -132,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,