essential-actions

Clone or download

[Play Audio Clip Action] Updated to use new Action API, cleanup and refactoring

Modified Files

<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<modelVersion>4.0.0</modelVersion>
<groupId>com.stream-pi</groupId>
<groupId>com.stream-pi</groupId>
<artifactId>playaudioclipaction</artifactId>
<artifactId>playaudioclipaction</artifactId>
<version>2.0.0</version>
<version>2.0.1</version>
<build>
<build>
<plugins>
<plugins>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<version>3.1.0</version>
<executions>
<executions>
<execution>
<execution>
<id>test-jar</id>
<id>test-jar</id>
<phase>package</phase>
<phase>package</phase>
<goals>
<goals>
<goal>test-jar</goal>
<goal>test-jar</goal>
</goals>
</goals>
</execution>
</execution>
</executions>
</executions>
</plugin>
</plugin>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.8.1</version>
<configuration>
<configuration>
<release>11</release>
<release>11</release>
</configuration>
</configuration>
</plugin>
</plugin>
</plugins>
</plugins>
</build>
</build>
<properties>
<properties>
<ActionAPIVersion>1.0.0-SNAPSHOT</ActionAPIVersion>
<ActionAPIVersion>1.0.0-SNAPSHOT</ActionAPIVersion>
<UtilVersion>1.0.0-SNAPSHOT</UtilVersion>
<UtilVersion>1.0.0-SNAPSHOT</UtilVersion>
<JavaFXVersion>16</JavaFXVersion>
<JavaFXVersion>16</JavaFXVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.target>11</maven.compiler.target>
<IkonliVersion>11.5.0</IkonliVersion>
<IkonliFA5PackVersion>11.5.0</IkonliFA5PackVersion>
</properties>
</properties>
<dependencies>
<dependencies>
<dependency>
<dependency>
<groupId>com.stream-pi</groupId>
<groupId>com.stream-pi</groupId>
<artifactId>util</artifactId>
<artifactId>util</artifactId>
<version>${UtilVersion}</version>
<version>${UtilVersion}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>com.stream-pi</groupId>
<groupId>com.stream-pi</groupId>
<artifactId>action-api</artifactId>
<artifactId>action-api</artifactId>
<version>${ActionAPIVersion}</version>
<version>${ActionAPIVersion}</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>org.openjfx</groupId>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
<artifactId>javafx-media</artifactId>
<version>${JavaFXVersion}</version>
<version>${JavaFXVersion}</version>
</dependency>
</dependency>
<dependency>
<groupId>org.kordamp.ikonli</groupId>
<artifactId>ikonli-fontawesome5-pack</artifactId>
<version>${IkonliFA5PackVersion}</version>
</dependency>
<dependency>
<groupId>org.kordamp.ikonli</groupId>
<artifactId>ikonli-javafx</artifactId>
<version>${IkonliVersion}</version>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
package com.stream_pi.playaudioclipaction;
package com.stream_pi.playaudioclipaction;
import com.stream_pi.action_api.actionproperty.property.ControlType;
import com.stream_pi.action_api.actionproperty.property.ControlType;
import com.stream_pi.action_api.actionproperty.property.FileExtensionFilter;
import com.stream_pi.action_api.actionproperty.property.FileExtensionFilter;
import com.stream_pi.action_api.actionproperty.property.Property;
import com.stream_pi.action_api.actionproperty.property.Property;
import com.stream_pi.action_api.actionproperty.property.Type;
import com.stream_pi.action_api.actionproperty.property.Type;
import com.stream_pi.action_api.externalplugin.NormalAction;
import com.stream_pi.action_api.externalplugin.NormalAction;
import com.stream_pi.util.alert.StreamPiAlert;
import com.stream_pi.util.alert.StreamPiAlert;
import com.stream_pi.util.alert.StreamPiAlertType;
import com.stream_pi.util.alert.StreamPiAlertType;
import com.stream_pi.util.exception.MinorException;
import com.stream_pi.util.version.Version;
import com.stream_pi.util.version.Version;
import javafx.application.Platform;
import javafx.application.Platform;
import javafx.scene.media.AudioClip;
import javafx.scene.media.AudioClip;
import java.io.File;
import java.io.File;
public class PlayAudioClipAction extends NormalAction {
public class PlayAudioClipAction extends NormalAction
{
public PlayAudioClipAction()
public PlayAudioClipAction()
{
{
setName("Play Audio Clip");
setName("Play Audio Clip");
setCategory("Essentials");
setCategory("Essentials");
setAuthor("rnayabed");
setAuthor("rnayabed");
setServerButtonGraphic("fas-volume-up");
setServerButtonGraphic("fas-volume-up");
setHelpLink("https://github.com/Stream-Pi/EssentialActions");
setHelpLink("https://github.com/Stream-Pi/EssentialActions");
setVersion(new Version(2,0,0));
setVersion(new Version(2,0,1));
}
}
@Override
@Override
public void initProperties() throws Exception
public void initProperties() throws MinorException
{
{
Property audioFileLocationProperty = new Property("audio_location", Type.STRING);
Property audioFileLocationProperty = new Property("audio_location", Type.STRING);
audioFileLocationProperty.setControlType(ControlType.FILE_PATH);
audioFileLocationProperty.setControlType(ControlType.FILE_PATH);
audioFileLocationProperty.setDisplayName("Audio File Location");
audioFileLocationProperty.setDisplayName("Audio File Location");
audioFileLocationProperty.setExtensionFilters(
audioFileLocationProperty.setExtensionFilters(
new FileExtensionFilter("MP3","*.mp3"),
new FileExtensionFilter("MP3","*.mp3"),
new FileExtensionFilter("MP4","*.mp4", "*.m4a", "*.m4v"),
new FileExtensionFilter("MP4","*.mp4", "*.m4a", "*.m4v"),
new FileExtensionFilter("WAV","*.wav"),
new FileExtensionFilter("WAV","*.wav"),
new FileExtensionFilter("AIFF","*.aif", "*.aiff"),
new FileExtensionFilter("AIFF","*.aif", "*.aiff"),
new FileExtensionFilter("FXM","*.fxm"),
new FileExtensionFilter("FXM","*.fxm"),
new FileExtensionFilter("FLV","*.flv"),
new FileExtensionFilter("FLV","*.flv"),
new FileExtensionFilter("HLS","*.m3u8")
new FileExtensionFilter("HLS","*.m3u8")
);
);
addClientProperties(audioFileLocationProperty);
addClientProperties(audioFileLocationProperty);
}
}
public AudioClip mediaPlayer = null;
public AudioClip mediaPlayer = null;
public String path = null;
public String path = null;
@Override
@Override
public void onActionClicked() throws Exception
public void onActionClicked() throws MinorException
{
{
Property audioFileLocationProperty = getClientProperties().getSingleProperty("audio_location");
Property audioFileLocationProperty = getClientProperties().getSingleProperty("audio_location");
if (audioFileLocationProperty.getStringValue().isBlank())
if (audioFileLocationProperty.getStringValue().isBlank())
{
{
new StreamPiAlert("Media Action", "No file specified", StreamPiAlertType.ERROR).show();
new StreamPiAlert("Media Action", "No file specified", StreamPiAlertType.ERROR).show();
return;
return;
}
}
if(mediaPlayer != null)
if(mediaPlayer != null)
{
{
if(mediaPlayer.isPlaying())
if(mediaPlayer.isPlaying())
{
{
Platform.runLater(mediaPlayer::stop);
Platform.runLater(mediaPlayer::stop);
return;
return;
}
}
}
}
if(!audioFileLocationProperty.getStringValue().equals(path))
if(!audioFileLocationProperty.getStringValue().equals(path))
{
{
path = audioFileLocationProperty.getStringValue();
path = audioFileLocationProperty.getStringValue();
mediaPlayer = new AudioClip(new File(path).toURI().toString());
mediaPlayer = new AudioClip(new File(path).toURI().toString());
}
}
Platform.runLater(mediaPlayer::play);
Platform.runLater(mediaPlayer::play);
}
}
@Override
@Override
public void onShutDown()
public void onShutDown()
{
{
shutDown();
shutDown();
}
}
@Override
@Override
public void onActionDeleted()
public void onActionDeleted()
{
{
shutDown();
shutDown();
}
}
@Override
@Override
public void onClientDisconnected()
public void onClientDisconnected()
{
{
shutDown();
shutDown();
}
}
private void shutDown()
private void shutDown()
{
{
if(mediaPlayer != null)
if(mediaPlayer != null)
{
{
if(mediaPlayer.isPlaying())
if(mediaPlayer.isPlaying())
{
Platform.runLater(mediaPlayer::stop);
Platform.runLater(mediaPlayer::stop);
}
}
}
}
}
}
}