Moves some modules and files, adds save subtitles

This commit is contained in:
Guillaume Tâche
2024-08-06 20:03:19 +02:00
parent 5efdaa6f63
commit c2efb71195
117 changed files with 989 additions and 353 deletions
@@ -0,0 +1,35 @@
package com.github.gtache.autosubtitle.gui.impl;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;
/**
* Combines multiple resource bundles
*/
public class CombinedResourceBundle extends ResourceBundle {
private final Map<String, String> resources;
public CombinedResourceBundle(final ResourceBundle... bundles) {
this(Arrays.asList(bundles));
}
public CombinedResourceBundle(final Iterable<ResourceBundle> bundles) {
this.resources = new HashMap<>();
bundles.forEach(rb -> rb.getKeys().asIterator().forEachRemaining(key -> resources.put(key, rb.getString(key))));
}
@Override
protected Object handleGetObject(final String key) {
return resources.get(key);
}
@Override
public Enumeration<String> getKeys() {
return Collections.enumeration(resources.keySet());
}
}
@@ -0,0 +1,9 @@
package com.github.gtache.autosubtitle.gui.impl.spi;
import java.util.spi.ResourceBundleProvider;
/**
* Provider for MainBundle
*/
public interface MainBundleProvider extends ResourceBundleProvider {
}
@@ -0,0 +1,9 @@
package com.github.gtache.autosubtitle.gui.impl.spi;
import java.util.spi.AbstractResourceBundleProvider;
/**
* Implementation of {@link MainBundleProvider}
*/
public class MainBundleProviderImpl extends AbstractResourceBundleProvider implements MainBundleProvider {
}
@@ -0,0 +1,9 @@
package com.github.gtache.autosubtitle.gui.impl.spi;
import java.util.spi.ResourceBundleProvider;
/**
* Provider for ParametersBundle
*/
public interface ParametersBundleProvider extends ResourceBundleProvider {
}
@@ -0,0 +1,9 @@
package com.github.gtache.autosubtitle.gui.impl.spi;
import java.util.spi.AbstractResourceBundleProvider;
/**
* Implementation of {@link ParametersBundleProvider}
*/
public class ParametersBundleProviderImpl extends AbstractResourceBundleProvider implements ParametersBundleProvider {
}
@@ -0,0 +1,9 @@
package com.github.gtache.autosubtitle.gui.impl.spi;
import java.util.spi.ResourceBundleProvider;
/**
* Provider for SetupBundle
*/
public interface SetupBundleProvider extends ResourceBundleProvider {
}
@@ -0,0 +1,9 @@
package com.github.gtache.autosubtitle.gui.impl.spi;
import java.util.spi.AbstractResourceBundleProvider;
/**
* Implementation of {@link SetupBundleProvider}
*/
public class SetupBundleProviderImpl extends AbstractResourceBundleProvider implements SetupBundleProvider {
}
@@ -0,0 +1,9 @@
package com.github.gtache.autosubtitle.gui.impl.spi;
import java.util.spi.ResourceBundleProvider;
/**
* Provider for WorkBundle
*/
public interface WorkBundleProvider extends ResourceBundleProvider {
}
@@ -0,0 +1,9 @@
package com.github.gtache.autosubtitle.gui.impl.spi;
import java.util.spi.AbstractResourceBundleProvider;
/**
* Implementation of {@link WorkBundleProviderImpl}
*/
public class WorkBundleProviderImpl extends AbstractResourceBundleProvider implements WorkBundleProvider {
}
@@ -0,0 +1,16 @@
package com.github.gtache.autosubtitle.modules.gui.impl;
import javax.inject.Qualifier;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Qualifier
@Documented
@Retention(RUNTIME)
@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})
public @interface FontFamily {
}
@@ -0,0 +1,16 @@
package com.github.gtache.autosubtitle.modules.gui.impl;
import javax.inject.Qualifier;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Qualifier
@Documented
@Retention(RUNTIME)
@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})
public @interface FontSize {
}
@@ -0,0 +1,62 @@
package com.github.gtache.autosubtitle.modules.gui.impl;
import com.github.gtache.autosubtitle.gui.impl.CombinedResourceBundle;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.util.ResourceBundle;
/**
* Dagger module for GUI
*/
@Module
public class GuiCoreModule {
@Provides
@Singleton
static ResourceBundle providesBundle() {
return new CombinedResourceBundle(ResourceBundle.getBundle("com.github.gtache.autosubtitle.gui.impl.MainBundle"),
ResourceBundle.getBundle("com.github.gtache.autosubtitle.gui.impl.SetupBundle"),
ResourceBundle.getBundle("com.github.gtache.autosubtitle.gui.impl.WorkBundle"),
ResourceBundle.getBundle("com.github.gtache.autosubtitle.gui.impl.ParametersBundle"),
ResourceBundle.getBundle("com.github.gtache.autosubtitle.gui.impl.MediaBundle"));
}
@Provides
@Singleton
@Play
static byte[] providesPlayImage() {
try (final var in = GuiCoreModule.class.getResourceAsStream("/com/github/gtache/autosubtitle/gui/impl/play_64.png")) {
return in.readAllBytes();
} catch (final IOException e) {
throw new UncheckedIOException(e);
}
}
@Provides
@Singleton
@Pause
static byte[] providesPauseImage() {
try (final var in = GuiCoreModule.class.getResourceAsStream("/com/github/gtache/autosubtitle/gui/impl/pause_64.png")) {
return in.readAllBytes();
} catch (final IOException e) {
throw new UncheckedIOException(e);
}
}
@Provides
@Singleton
@FontFamily
static String providesFontFamily() {
return "Arial";
}
@Provides
@Singleton
@FontSize
static int providesFontSize() {
return 12;
}
}
@@ -0,0 +1,16 @@
package com.github.gtache.autosubtitle.modules.gui.impl;
import javax.inject.Qualifier;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Qualifier
@Documented
@Retention(RUNTIME)
@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})
public @interface Pause {
}
@@ -0,0 +1,16 @@
package com.github.gtache.autosubtitle.modules.gui.impl;
import javax.inject.Qualifier;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Qualifier
@Documented
@Retention(RUNTIME)
@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})
public @interface Play {
}
+24
View File
@@ -0,0 +1,24 @@
import com.github.gtache.autosubtitle.gui.impl.spi.MainBundleProvider;
import com.github.gtache.autosubtitle.gui.impl.spi.MainBundleProviderImpl;
import com.github.gtache.autosubtitle.gui.impl.spi.ParametersBundleProvider;
import com.github.gtache.autosubtitle.gui.impl.spi.ParametersBundleProviderImpl;
import com.github.gtache.autosubtitle.gui.impl.spi.SetupBundleProvider;
import com.github.gtache.autosubtitle.gui.impl.spi.SetupBundleProviderImpl;
import com.github.gtache.autosubtitle.gui.impl.spi.WorkBundleProvider;
import com.github.gtache.autosubtitle.gui.impl.spi.WorkBundleProviderImpl;
/**
* Core gui module for autosubtitle
*/
module com.github.gtache.autosubtitle.gui.core {
requires transitive com.github.gtache.autosubtitle.gui.api;
requires transitive com.github.gtache.autosubtitle.core;
exports com.github.gtache.autosubtitle.gui.impl;
exports com.github.gtache.autosubtitle.gui.impl.spi;
exports com.github.gtache.autosubtitle.modules.gui.impl;
provides MainBundleProvider with MainBundleProviderImpl;
provides ParametersBundleProvider with ParametersBundleProviderImpl;
provides SetupBundleProvider with SetupBundleProviderImpl;
provides WorkBundleProvider with WorkBundleProviderImpl;
}