diff --git a/.idea/jpa-buddy.xml b/.idea/jpa-buddy.xml new file mode 100644 index 0000000..966d5f5 --- /dev/null +++ b/.idea/jpa-buddy.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index cf03873..5d1a913 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -7,4 +7,7 @@ + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 47cbd5b..d4c5ad2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("java") - id("org.jetbrains.intellij") version "1.8.0" + id("org.jetbrains.intellij") version "1.9.0" } group = "com.anas.intellij.plugins.ayah" @@ -12,10 +12,16 @@ repositories { } dependencies { - implementation("com.github.anas-elgarhy:alquran-cloud-api:0.4.0-v1") + implementation("com.github.anas-elgarhy:alquran-cloud-api:0.4.0-v1") // TODO: fix this implementation("com.miglayout:miglayout-swing:11.0") // implementation("com.github.goxr3plus:java-stream-player:10.0.2") implementation("com.googlecode.soundlibs:jlayer:1.0.1.4") + + compileOnly("org.projectlombok:lombok:1.18.24") + annotationProcessor("org.projectlombok:lombok:1.18.24") + + testImplementation("org.projectlombok:lombok:1.18.24") + testAnnotationProcessor("org.projectlombok:lombok:1.18.24") } java { sourceCompatibility = JavaVersion.VERSION_11 @@ -42,7 +48,7 @@ tasks { patchPluginXml { sinceBuild.set("213") - untilBuild.set("222.*") + untilBuild.set("223.*") } signPlugin { diff --git a/src/main/java/com/anas/intellij/plugins/ayah/AyahStartupActivity.java b/src/main/java/com/anas/intellij/plugins/ayah/AyahStartupActivity.java index a69c0a7..6566ebf 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/AyahStartupActivity.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/AyahStartupActivity.java @@ -7,22 +7,23 @@ import com.intellij.notification.NotificationGroupManager; import com.intellij.notification.NotificationType; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupActivity; +import lombok.val; import org.jetbrains.annotations.NotNull; import java.io.IOException; /** - * @author: Anas Elgarhy - * @date: 8/18/22 + * @author Anas Elgarhy + * @since 8/18/22 */ public class AyahStartupActivity implements StartupActivity { @Override public void runActivity(@NotNull final Project project) { - final var basmalhOnStartSettingsState = AyahSettingsState.getInstance().getBasmalhOnStart(); + val basmalhOnStartSettingsState = AyahSettingsState.getInstance().getBasmalhOnStart(); // Basmalh on start if (basmalhOnStartSettingsState.isActive()) { try { - final var bassmalh = Ayah.getAyah(1, + val bassmalh = Ayah.getAyah(1, basmalhOnStartSettingsState.getEdition().getEditionIdentifier()); NotificationGroupManager.getInstance() .getNotificationGroup("Basmalh on Start") diff --git a/src/main/java/com/anas/intellij/plugins/ayah/NotificationTimer.java b/src/main/java/com/anas/intellij/plugins/ayah/NotificationTimer.java index adec670..0a22b24 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/NotificationTimer.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/NotificationTimer.java @@ -7,8 +7,8 @@ import org.jetbrains.annotations.NotNull; import java.util.Timer; /** - * @author: Anas Elgarhy - * @date: 8/19/22 + * @author Anas Elgarhy + * @since 8/19/22 */ public enum NotificationTimer { INSTANCE @@ -16,14 +16,21 @@ public enum NotificationTimer { private final Timer timer; private final NotificationTimerTask notificationTimerTask; + private boolean isRunning; NotificationTimer() { timer = new Timer(); notificationTimerTask = new NotificationTimerTask(); + isRunning = false; } public void start(@NotNull Project project) { + if (isRunning) { + return; + } notificationTimerTask.setProject(project); schedule(AyahSettingsState.getInstance().getIntervalTimeBetweenNotifications()); + isRunning = true; + } public void updateIntervalTimeBetweenNotifications(final int intervalTimeBetweenNotifications) { diff --git a/src/main/java/com/anas/intellij/plugins/ayah/NotificationTimerTask.java b/src/main/java/com/anas/intellij/plugins/ayah/NotificationTimerTask.java index 1ff6f53..fdd7c48 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/NotificationTimerTask.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/NotificationTimerTask.java @@ -22,8 +22,8 @@ import java.util.TimerTask; import java.util.logging.Logger; /** - * @author: Anas Elgarhy - * @date: 8/19/22 + * @author Anas Elgarhy + * @since 8/19/22 */ public class NotificationTimerTask extends TimerTask implements PlayerListener { private Project project; @@ -124,12 +124,12 @@ public class NotificationTimerTask extends TimerTask implements PlayerListener { // Player listener methods. @Override - public void onStarted(final PlaybackEvent event) { + public void onStarted() { isPlaying = true; } @Override - public void onFinished(PlaybackEvent event) { + public void onFinished() { isPlaying = false; new Thread(() -> { try { diff --git a/src/main/java/com/anas/intellij/plugins/ayah/audio/AudioPlayer.java b/src/main/java/com/anas/intellij/plugins/ayah/audio/AudioPlayer.java index 2f78291..b64c124 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/audio/AudioPlayer.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/audio/AudioPlayer.java @@ -15,8 +15,8 @@ import java.net.URL; import java.util.logging.Logger; /** - * @author: Anas Elgarhy - * @date: 8/19/22 + * @author Anas Elgarhy + * @since 8/19/22 */ public class AudioPlayer { private final String audioUrl; @@ -56,12 +56,12 @@ public class AudioPlayer { player.setPlayBackListener(new PlaybackListener() { @Override public void playbackStarted(final PlaybackEvent evt) { - listener.onStarted(evt); + listener.onStarted(); } @Override public void playbackFinished(final PlaybackEvent evt) { - listener.onFinished(evt); + listener.onFinished(); } }); } diff --git a/src/main/java/com/anas/intellij/plugins/ayah/audio/PlayerListener.java b/src/main/java/com/anas/intellij/plugins/ayah/audio/PlayerListener.java index 40d45eb..696cfac 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/audio/PlayerListener.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/audio/PlayerListener.java @@ -3,10 +3,10 @@ package com.anas.intellij.plugins.ayah.audio; import javazoom.jl.player.advanced.PlaybackEvent; /** - * @author: Anas Elgarhy - * @date: 8/22/22 + * @author Anas Elgarhy + * @since 8/22/22 */ public interface PlayerListener { - void onStarted(final PlaybackEvent event); - void onFinished(final PlaybackEvent event); + void onStarted(); + void onFinished(); } 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 3f242c4..a0f8a1b 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 @@ -12,6 +12,11 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; +/** + * @author Anas Elgarhy + * @since 8/19/22 + */ + public class AyahDetailsDialog extends JDialog implements PlayerListener { private JPanel contentPane; private JButton playButton; @@ -138,13 +143,13 @@ public class AyahDetailsDialog extends JDialog implements PlayerListener { } @Override - public void onStarted(final PlaybackEvent event) { + public void onStarted() { playButton.setText("Stop"); isPlaying = true; } @Override - public void onFinished(final PlaybackEvent event) { + public void onFinished() { if (autoPlayCheckBox.isSelected() && ayah.getNumber() <= Constants.AYAHS_COUNT) { if (loadTheAyah(ayah.getNumber() + 1)) { audioPlayer = new AudioPlayer(ayah.getAudioUrl()).setListener(this); diff --git a/src/main/java/com/anas/intellij/plugins/ayah/settings/AyahSettingsConfigurable.java b/src/main/java/com/anas/intellij/plugins/ayah/settings/AyahSettingsConfigurable.java index 1ce211f..f7094d3 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/settings/AyahSettingsConfigurable.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/settings/AyahSettingsConfigurable.java @@ -1,6 +1,7 @@ package com.anas.intellij.plugins.ayah.settings; import com.anas.intellij.plugins.ayah.NotificationTimer; +import com.anas.intellij.plugins.ayah.settings.userinterface.SettingsComponent; import com.intellij.openapi.options.Configurable; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.Nullable; @@ -8,8 +9,8 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; /** - * @author: Anas Elgarhy - * @date: 8/19/22 + * @author Anas Elgarhy + * @since 8/19/22 */ public class AyahSettingsConfigurable implements Configurable { diff --git a/src/main/java/com/anas/intellij/plugins/ayah/settings/AyahSettingsState.java b/src/main/java/com/anas/intellij/plugins/ayah/settings/AyahSettingsState.java index 25da5f4..64c8505 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/settings/AyahSettingsState.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/settings/AyahSettingsState.java @@ -7,15 +7,18 @@ import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; import com.intellij.util.xmlb.XmlSerializerUtil; +import lombok.Getter; +import lombok.Setter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.io.IOException; /** - * @author: Anas Elgarhy - * @date: 8/19/22 + * @author Anas Elgarhy + * @since 8/19/22 */ +@Getter +@Setter @State( name = "com.anas.intellij.plugins.ayah.settings.AyahSettingsState", storages = @Storage("ayah.xml") @@ -47,36 +50,4 @@ public class AyahSettingsState implements PersistentStateComponentAnas Elgarhy - * @date: 8/19/22 + * @author Anas Elgarhy + * @since 8/19/22 */ +@Getter +@Setter public class BasmalhOnStart { private boolean isActive; private boolean isSoundActive; + @NonNull private SelectedEdition edition; public BasmalhOnStart() { @@ -19,28 +21,4 @@ public class BasmalhOnStart { isSoundActive = false; edition = new SelectedEdition(); } - - public boolean isActive() { - return isActive; - } - - public void setActive(final boolean active) { - isActive = active; - } - - public boolean isSoundActive() { - return isSoundActive; - } - - public void setSoundActive(final boolean soundActive) { - isSoundActive = soundActive; - } - - public SelectedEdition getEdition() { - return edition; - } - - public void setEdition(final SelectedEdition edition) { - this.edition = edition; - } } diff --git a/src/main/java/com/anas/intellij/plugins/ayah/settings/SelectedEdition.java b/src/main/java/com/anas/intellij/plugins/ayah/settings/SelectedEdition.java index 09f7631..7dd3e3b 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/settings/SelectedEdition.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/settings/SelectedEdition.java @@ -2,13 +2,19 @@ package com.anas.intellij.plugins.ayah.settings; import com.anas.alqurancloudapi.edition.Edition; import com.anas.alqurancloudapi.edition.EditionFormat; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; import java.io.IOException; /** - * @author: Anas Elgarhy - * @date: 8/21/22 + * @author Anas Elgarhy + * @since 8/21/22 */ +@AllArgsConstructor +@Getter +@Setter public class SelectedEdition { private String editionIdentifier; private int index; @@ -22,27 +28,4 @@ public class SelectedEdition { } index = 0; } - - public SelectedEdition(final String editionIdentifier, final int index) { - this.editionIdentifier = editionIdentifier; - this.index = index; - } - - public String getEditionIdentifier() { - return editionIdentifier; - } - - // For XML serialization - public void setEditionIdentifier(final String editionIdentifier) { - this.editionIdentifier = editionIdentifier; - } - - public int getIndex() { - return index; - } - - // For XML serialization - public void setIndex(final int index) { - this.index = index; - } } diff --git a/src/main/java/com/anas/intellij/plugins/ayah/settings/PanelBuilder.java b/src/main/java/com/anas/intellij/plugins/ayah/settings/userinterface/PanelBuilder.java similarity index 84% rename from src/main/java/com/anas/intellij/plugins/ayah/settings/PanelBuilder.java rename to src/main/java/com/anas/intellij/plugins/ayah/settings/userinterface/PanelBuilder.java index a437722..ce6e393 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/settings/PanelBuilder.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/settings/userinterface/PanelBuilder.java @@ -1,12 +1,12 @@ -package com.anas.intellij.plugins.ayah.settings; +package com.anas.intellij.plugins.ayah.settings.userinterface; import javax.swing.*; import javax.swing.border.Border; import java.awt.*; /** - * @author: Anas Elgarhy - * @date: 8/19/22 + * @author Anas Elgarhy + * @since 8/19/22 */ public class PanelBuilder { private final JPanel panel; diff --git a/src/main/java/com/anas/intellij/plugins/ayah/settings/ReadableEdition.java b/src/main/java/com/anas/intellij/plugins/ayah/settings/userinterface/ReadableEdition.java similarity index 50% rename from src/main/java/com/anas/intellij/plugins/ayah/settings/ReadableEdition.java rename to src/main/java/com/anas/intellij/plugins/ayah/settings/userinterface/ReadableEdition.java index f8d0cf5..de3ff6b 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/settings/ReadableEdition.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/settings/userinterface/ReadableEdition.java @@ -1,26 +1,22 @@ -package com.anas.intellij.plugins.ayah.settings; +package com.anas.intellij.plugins.ayah.settings.userinterface; import com.anas.alqurancloudapi.edition.Edition; +import lombok.Getter; +import lombok.RequiredArgsConstructor; /** - * @author: Anas Elgarhy - * @date: 8/20/22 + * @author Anas Elgarhy + * @since 8/20/22 */ +@RequiredArgsConstructor +@Getter public class ReadableEdition { - private Edition edition; - - public ReadableEdition(final Edition edition) { - this.edition = edition; - } + private final Edition edition; public ReadableEdition(final String identifier) { this.edition = new Edition(identifier); } - public Edition getEdition() { - return edition; - } - @Override public String toString() { return edition.getName() + " (" + edition.getLanguage() + ")"; diff --git a/src/main/java/com/anas/intellij/plugins/ayah/settings/SettingsComponent.java b/src/main/java/com/anas/intellij/plugins/ayah/settings/userinterface/SettingsComponent.java similarity index 95% rename from src/main/java/com/anas/intellij/plugins/ayah/settings/SettingsComponent.java rename to src/main/java/com/anas/intellij/plugins/ayah/settings/userinterface/SettingsComponent.java index a9adbe4..ced1c85 100644 --- a/src/main/java/com/anas/intellij/plugins/ayah/settings/SettingsComponent.java +++ b/src/main/java/com/anas/intellij/plugins/ayah/settings/userinterface/SettingsComponent.java @@ -1,8 +1,11 @@ -package com.anas.intellij.plugins.ayah.settings; +package com.anas.intellij.plugins.ayah.settings.userinterface; import com.anas.alqurancloudapi.edition.Edition; import com.anas.alqurancloudapi.edition.EditionFormat; +import com.anas.intellij.plugins.ayah.settings.AyahSettingsState; +import com.anas.intellij.plugins.ayah.settings.BasmalhOnStart; +import com.anas.intellij.plugins.ayah.settings.SelectedEdition; import com.intellij.ui.components.JBCheckBox; import com.intellij.ui.components.JBLabel; import com.intellij.util.ui.FormBuilder; @@ -16,8 +19,8 @@ import java.util.logging.Logger; /** * The settings UI. * - * @author: Anas Elgarhy - * @date: 8/19/22 + * @author Anas Elgarhy + * @since 8/19/22 */ public class SettingsComponent { private final JPanel panel; diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 926ac83..776f0e3 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -3,6 +3,8 @@ com.anas.intellij.plugins.ayah + com.intellij.modules.platform + Ayah @@ -39,6 +41,7 @@ Read more: https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html --> com.intellij.modules.platform + @@ -55,4 +58,4 @@ - \ No newline at end of file +