searchPanel, ReleaseFactory releaseFactory) {
- super(manager, settings, subtitleProviderStore);
+ super(settings, subtitleProviderStore);
this.mainWindow = mainWindow;
this.searchPanel = searchPanel;
this.filtering = new SubtitleFiltering(settings);
@@ -53,12 +52,12 @@ public GuiSearchAction(Manager manager, Settings settings, SubtitleProviderStore
}
protected P getInputPanel() {
- return this.getSearchPanel().getInputPanel();
+ return this.searchPanel.inputPanel;
}
@Override
protected Language getLanguage() {
- return this.searchPanel.getInputPanel().getSelectedLanguage();
+ return this.searchPanel.inputPanel.selectedLanguage;
}
@Override
@@ -67,15 +66,15 @@ public void onFound(Release release, List subtitles) {
return;
}
- VideoTableModel model = (VideoTableModel) this.searchPanel.getResultPanel().getTable().getModel();
+ VideoTableModel model = (VideoTableModel) this.searchPanel.resultPanel.getTable().getModel();
if (model.getRowCount() > 0) {
- searchPanel.getResultPanel().enableButtons();
+ searchPanel.resultPanel.enableButtons();
}
- if (this.getSearchManager().getProgress() == 100) {
- this.getSearchProgressListener().completed();
- searchPanel.getInputPanel().enableSearchButton();
+ if (this.searchManager.progress == 100) {
+ this.searchProgressListener.completed();
+ searchPanel.inputPanel.enableSearchButton();
}
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/actions/search/TextGuiSearchAction.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/actions/search/TextGuiSearchAction.java
index 8a15c8fe..4d2f15c1 100644
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/actions/search/TextGuiSearchAction.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/actions/search/TextGuiSearchAction.java
@@ -15,7 +15,6 @@
import org.lodder.subtools.multisubdownloader.lib.ReleaseFactory;
import org.lodder.subtools.multisubdownloader.settings.model.Settings;
import org.lodder.subtools.multisubdownloader.subtitleproviders.SubtitleProviderStore;
-import org.lodder.subtools.sublibrary.Manager;
import org.lodder.subtools.sublibrary.model.MovieRelease;
import org.lodder.subtools.sublibrary.model.Release;
import org.lodder.subtools.sublibrary.model.Subtitle;
@@ -24,10 +23,6 @@
public class TextGuiSearchAction extends GuiSearchAction {
- public interface FileGuiSearchActionBuilderManager {
- TextGuiSearchActionBuilderSubtitleProviderStore manager(Manager manager);
- }
-
public interface TextGuiSearchActionBuilderSubtitleProviderStore {
TextGuiSearchActionBuilderGUI subtitleProviderStore(SubtitleProviderStore subtitleProviderStore);
}
@@ -48,7 +43,7 @@ public interface TextGuiSearchActionBuilderBuild {
TextGuiSearchAction build();
}
- public static FileGuiSearchActionBuilderManager createWithSettings(Settings settings) {
+ public static TextGuiSearchActionBuilderSubtitleProviderStore createWithSettings(Settings settings) {
return new TextGuiSearchActionBuilder(settings);
}
@@ -56,10 +51,10 @@ public static FileGuiSearchActionBuilderManager createWithSettings(Settings sett
@Setter
@Accessors(chain = true, fluent = true)
public static class TextGuiSearchActionBuilder
- implements TextGuiSearchActionBuilderBuild, TextGuiSearchActionBuilderReleaseFactory, TextGuiSearchActionBuilderSearchPanel,
- TextGuiSearchActionBuilderGUI, TextGuiSearchActionBuilderSubtitleProviderStore, FileGuiSearchActionBuilderManager {
+ implements TextGuiSearchActionBuilderBuild, TextGuiSearchActionBuilderReleaseFactory,
+ TextGuiSearchActionBuilderSearchPanel, TextGuiSearchActionBuilderGUI,
+ TextGuiSearchActionBuilderSubtitleProviderStore {
private final Settings settings;
- private Manager manager;
private SubtitleProviderStore subtitleProviderStore;
private GUI mainWindow;
private SearchPanel searchPanel;
@@ -67,19 +62,19 @@ public static class TextGuiSearchActionBuilder
@Override
public TextGuiSearchAction build() {
- return new TextGuiSearchAction(manager, settings, subtitleProviderStore, mainWindow, searchPanel, releaseFactory);
+ return new TextGuiSearchAction(settings, subtitleProviderStore, mainWindow, searchPanel, releaseFactory);
}
}
- private TextGuiSearchAction(Manager manager, Settings settings, SubtitleProviderStore subtitleProviderStore, GUI mainWindow,
+ private TextGuiSearchAction(Settings settings, SubtitleProviderStore subtitleProviderStore, GUI mainWindow,
SearchPanel searchPanel, ReleaseFactory releaseFactory) {
- super(manager, settings, subtitleProviderStore, mainWindow, searchPanel, releaseFactory);
+ super(settings, subtitleProviderStore, mainWindow, searchPanel, releaseFactory);
}
@Override
protected void validate() throws SearchSetupException {
if (getInputPanel().getReleaseName().isEmpty()) {
- throw new SearchSetupException(Messages.getString("App.NoReleaseEntered"));
+ throw new SearchSetupException(Messages.getText("App.NoReleaseEntered"));
}
}
@@ -88,36 +83,33 @@ protected List createReleases() {
String name = getInputPanel().getReleaseName();
VideoSearchType type = getInputPanel().getType();
- VideoTableModel model = (VideoTableModel) this.getSearchPanel().getResultPanel().getTable().getModel();
+ VideoTableModel model = (VideoTableModel) this.searchPanel.resultPanel.getTable().getModel();
model.clearTable();
// TODO: Redefine what a "release" is.
Release release = switch (type) {
case EPISODE -> TvRelease.builder()
.name(name)
- .season(getInputPanel().getSeason())
- .episode(getInputPanel().getEpisode())
- .quality(getInputPanel().getQuality())
- .build();
- case MOVIE -> MovieRelease.builder()
- .name(name)
- .quality(getInputPanel().getQuality())
+ .season(inputPanel.season)
+ .episode(inputPanel.episode)
+ .quality(inputPanel.quality)
.build();
- default -> getReleaseFactory().createRelease(Path.of(name), getUserInteractionHandler());
+ case MOVIE -> MovieRelease.builder().name(name).quality(inputPanel.quality).build();
+ default -> releaseFactory.createRelease(Path.of(name), userInteractionHandler);
};
return release != null ? List.of(release) : List.of();
}
@Override
public void onFound(Release release, List subtitles) {
- VideoTableModel model = (VideoTableModel) this.getSearchPanel().getResultPanel().getTable().getModel();
+ VideoTableModel model = (VideoTableModel) this.searchPanel.resultPanel.getTable().getModel();
- List subtitlesFiltered =
- getFiltering() != null ? subtitles.stream().filter(subtitle -> getFiltering().useSubtitle(subtitle, release)).toList() : subtitles;
+ List subtitlesFiltered = filtering != null ?
+ subtitles.stream().filter(subtitle -> filtering.useSubtitle(subtitle, release)).toList() : subtitles;
subtitlesFiltered.forEach(release::addMatchingSub);
// use automatic selection to reduce the selection for the user
- List subtitlesFilteredAutomatic = getUserInteractionHandler().getAutomaticSelection(subtitlesFiltered);
+ List subtitlesFilteredAutomatic = userInteractionHandler.getAutomaticSelection(subtitlesFiltered);
subtitlesFilteredAutomatic.forEach(model::addRow);
/* Let GuiSearchAction also make some decisions */
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/MappingEpisodeNameDialog.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/MappingEpisodeNameDialog.java
index df12e22a..7dfdb0ba 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/MappingEpisodeNameDialog.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/MappingEpisodeNameDialog.java
@@ -1,5 +1,10 @@
package org.lodder.subtools.multisubdownloader.gui.dialog;
+import javax.swing.*;
+import javax.swing.RowSorter.*;
+import javax.swing.border.*;
+import javax.swing.table.*;
+import java.awt.*;
import java.io.Serial;
import java.util.Arrays;
import java.util.Comparator;
@@ -9,27 +14,13 @@
import java.util.function.BiFunction;
import java.util.function.Function;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.RowSorter;
-import javax.swing.RowSorter.SortKey;
-import javax.swing.border.EmptyBorder;
-import javax.swing.table.DefaultTableModel;
-import javax.swing.table.TableModel;
-import javax.swing.table.TableRowSorter;
-
+import lombok.AllArgsConstructor;
+import manifold.ext.props.rt.api.val;
+import manifold.ext.props.rt.api.var;
+import net.miginfocom.swing.MigLayout;
import org.apache.commons.lang3.tuple.Pair;
import org.lodder.subtools.multisubdownloader.Messages;
import org.lodder.subtools.multisubdownloader.UserInteractionHandlerGUI;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.button.AbstractButtonExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.button.JButtonExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jcomponent.JComponentExtension;
import org.lodder.subtools.multisubdownloader.settings.SettingsControl;
import org.lodder.subtools.multisubdownloader.subtitleproviders.SubtitleProvider;
import org.lodder.subtools.multisubdownloader.subtitleproviders.SubtitleProviderStore;
@@ -39,68 +30,54 @@
import org.lodder.subtools.sublibrary.model.TvRelease;
import org.lodder.subtools.sublibrary.settings.model.SerieMapping;
-import java.awt.BorderLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.Setter;
-import lombok.experimental.ExtensionMethod;
-import net.miginfocom.swing.MigLayout;
-
-@ExtensionMethod({ JButtonExtension.class, AbstractButtonExtension.class, JComponentExtension.class })
public class MappingEpisodeNameDialog extends MultiSubDialog {
- @Serial
- private static final long serialVersionUID = 1L;
+ @Serial private static final long serialVersionUID = 1L;
+
private final JPanel contentPanel = new JPanel();
- private JTable table;
private final Manager manager;
private final MappingTableModel mappingTableModel;
private final SubtitleProviderStore subtitleProviderStore;
private final UserInteractionHandlerGUI userInteractionHandler;
- private Optional selectedSubtitleProvider;
private final JButton btnAddCustomMapping;
+ private JTable table;
+ private Optional selectedSubtitleProvider;
private MappingType selectedMappingType;
/**
* Create the dialog.
*/
- public MappingEpisodeNameDialog(JFrame frame, final SettingsControl prefCtrl, Manager manager, SubtitleProviderStore subtitleProviderStore,
- UserInteractionHandlerGUI userInteractionHandler) {
- super(frame, Messages.getString("MappingEpisodeNameDialog.Title"), true);
+ public MappingEpisodeNameDialog(JFrame frame, final SettingsControl prefCtrl, Manager manager,
+ SubtitleProviderStore subtitleProviderStore, UserInteractionHandlerGUI userInteractionHandler) {
+ super(frame, Messages.getText("MappingEpisodeNameDialog.Title"), true);
this.manager = manager;
this.subtitleProviderStore = subtitleProviderStore;
this.userInteractionHandler = userInteractionHandler;
- this.btnAddCustomMapping = new JButton(Messages.getString("MappingEpisodeNameDialog.ChangeMapping"));
+ this.btnAddCustomMapping = new JButton(Messages.getText("MappingEpisodeNameDialog.ChangeMapping"));
this.mappingTableModel = new MappingTableModel(manager);
initialize();
}
private void selectMappingType(MappingType mappingType) {
this.selectedMappingType = mappingType;
- this.selectedSubtitleProvider = subtitleProviderStore.getAllProviders().stream()
- .filter(subtitleProvider -> subtitleProvider.getProviderName().equals(mappingType.getProviderName()))
+ this.selectedSubtitleProvider = subtitleProviderStore.getAllProviders()
+ .stream()
+ .filter(subtitleProvider -> subtitleProvider.providerName.equals(mappingType.providerName))
.findAny();
btnAddCustomMapping.setEnabled(selectedSubtitleProvider.isPresent());
mappingTableModel.setMappingType(mappingType);
repaint();
}
- @Getter
public enum MappingType {
TVDB("TVDB", "TVDB",
new SelectionForKeyPrefix("", "TVDB-serieId-", k -> k.replace("-serieId-", "-tvdbSerie-"))),
- ADDIC7ED("Addic7ed", SubtitleSource.ADDIC7ED,
- new SelectionForKeyPrefix("", "ADDIC7ED-serieName-name:"),
+ ADDIC7ED("Addic7ed", SubtitleSource.ADDIC7ED, new SelectionForKeyPrefix("", "ADDIC7ED-serieName-name:"),
new SelectionForKeyPrefix("", "ADDIC7ED-serieName-tvdbId:")),
ADDIC7ED_PROXY("Addic7ed (Proxy)", SubtitleSource.ADDIC7ED.name() + "-GESTDOWN",
new SelectionForKeyPrefix("", "ADDIC7ED-GESTDOWN-serieName-name:"),
new SelectionForKeyPrefix("", "ADDIC7ED-GESTDOWN-serieName-tvdbId:")),
- SUBSCENE("Subscene", SubtitleSource.SUBSCENE,
- new SelectionForKeyPrefix("", "SUBSCENE-serieName-name:"),
+ SUBSCENE("Subscene", SubtitleSource.SUBSCENE, new SelectionForKeyPrefix("", "SUBSCENE-serieName-name:"),
new SelectionForKeyPrefix("", "SUBSCENE-serieName-tvdbId:")),
TV_SUBTITLES("TVSubtitles", SubtitleSource.TVSUBTITLES,
new SelectionForKeyPrefix("", "TVSUBTITLES-serieName-name:"),
@@ -108,17 +85,17 @@ public enum MappingType {
OPEN_SUBTITLES("OpenSubtitles", SubtitleSource.OPENSUBTITLES,
new SelectionForKeyPrefix("", "OPENSUBTITLES-serieName-name:"),
new SelectionForKeyPrefix("", "OPENSUBTITLES-serieName-tvdbId:")),
- PODNAPISI("Podnapisi", SubtitleSource.PODNAPISI,
- new SelectionForKeyPrefix("", "PODNAPISI-serieName-name:"),
+ PODNAPISI("Podnapisi", SubtitleSource.PODNAPISI, new SelectionForKeyPrefix("", "PODNAPISI-serieName-name:"),
new SelectionForKeyPrefix("", "PODNAPISI-serieName-tvdbId:"));
- public static final BiFunction>> MAPPING_SUPPLIER;
- private final String name;
- private final String providerName;
- private final String nameColumn;
- private final String mappingColumn;
- private final String providerNameColumn;
- private final SelectionForKeyPrefix[] selectionForKeyPrefixList;
+ public static final BiFunction>>
+ MAPPING_SUPPLIER;
+ @val String name;
+ @val String providerName;
+ @val String nameColumn;
+ @val String mappingColumn;
+ @val String providerNameColumn;
+ @val SelectionForKeyPrefix[] selectionForKeyPrefixList;
@Override
public String toString() {
@@ -140,9 +117,9 @@ public String toString() {
MappingType(String name, String providerName, SelectionForKeyPrefix... selectionForKeyPrefixList) {
this.name = name;
this.providerName = providerName;
- this.nameColumn = Messages.getString("MappingEpisodeNameDialog.SceneShowName");
- this.mappingColumn = Messages.getString("MappingEpisodeNameDialog.ProviderId");
- this.providerNameColumn = Messages.getString("MappingEpisodeNameDialog.ProviderName");
+ this.nameColumn = Messages.getText("MappingEpisodeNameDialog.SceneShowName");
+ this.mappingColumn = Messages.getText("MappingEpisodeNameDialog.ProviderId");
+ this.providerNameColumn = Messages.getText("MappingEpisodeNameDialog.ProviderName");
this.selectionForKeyPrefixList = selectionForKeyPrefixList;
}
}
@@ -153,15 +130,11 @@ public SelectionForKeyPrefix(String name, String keyPrefix) {
}
}
- @Getter
- @Setter
- @RequiredArgsConstructor
private static class Row extends Vector {
- @Serial
- private static final long serialVersionUID = 8620670431074648999L;
- private final String key;
- private SerieMapping serieMapping;
- private final SelectionForKeyPrefix selectionForKeyPrefix;
+ @Serial private static final long serialVersionUID = 8620670431074648999L;
+ @val String key;
+ @val SelectionForKeyPrefix selectionForKeyPrefix;
+ @var SerieMapping serieMapping;
public Row(String key, String name, String providerId, String providerName, SerieMapping serieMapping,
SelectionForKeyPrefix selectionForKeyPrefix) {
@@ -174,29 +147,30 @@ public Row(String key, String name, String providerId, String providerName, Seri
}
}
- @RequiredArgsConstructor
+ @AllArgsConstructor
private static class MappingTableModel extends DefaultTableModel {
- @Serial
- private static final long serialVersionUID = 7860605766969472980L;
- private final Manager manager;
+ @Serial private static final long serialVersionUID = 7860605766969472980L;
+ @val Manager manager;
void setMappingType(MappingType mappingType) {
- setDataVector(null, new String[] { mappingType.getNameColumn(), mappingType.getMappingColumn(), mappingType.getProviderNameColumn() });
- Arrays.stream(mappingType.getSelectionForKeyPrefixList())
- .flatMap(selectionForKeyPrefix -> MappingType.MAPPING_SUPPLIER.apply(manager, selectionForKeyPrefix).stream()
+ setDataVector(null, new String[]{ mappingType.nameColumn, mappingType.mappingColumn,
+ mappingType.providerNameColumn });
+ Arrays.stream(mappingType.selectionForKeyPrefixList)
+ .flatMap(selectionForKeyPrefix -> MappingType.MAPPING_SUPPLIER.apply(manager, selectionForKeyPrefix)
+ .stream()
.map(serieMappingPair -> {
SerieMapping serieMapping = serieMappingPair.getValue();
- String name = serieMapping.getName();
- String providerId = serieMapping.getProviderId() == null ? "" : serieMapping.getProviderId();
- String providerName = serieMapping.getProviderName();
+ String providerId = serieMapping.providerId == null ? "" : serieMapping.providerId;
if (providerId.contains("/")) {
providerId = providerId.substring(providerId.lastIndexOf("/") + 1);
}
providerId = providerId.replace(".html", "");
- return new Row(serieMappingPair.getKey(), name, providerId, providerName, serieMapping, selectionForKeyPrefix);
+ return new Row(serieMappingPair.getKey(), serieMapping.name, providerId,
+ serieMapping.providerName, serieMapping, selectionForKeyPrefix);
}))
- .sorted(Comparator.comparing(row -> row.getSerieMapping() == null || row.getSerieMapping().getProviderName() == null ? "zzz"
- : row.getSerieMapping().getName()))
+ .sorted(Comparator.comparing(
+ row -> row.serieMapping == null || row.serieMapping.providerName == null ? "zzz" :
+ row.serieMapping.name))
.forEach(this::addRow);
}
@@ -212,17 +186,17 @@ private void initialize() {
getContentPane().setLayout(new BorderLayout());
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
- GridBagLayout gbl_contentPanel = new GridBagLayout();
- gbl_contentPanel.columnWidths = new int[] { 0, 0 };
- gbl_contentPanel.rowHeights = new int[] { 0, 40, 0 };
- gbl_contentPanel.columnWeights = new double[] { 1.0, Double.MIN_VALUE };
- gbl_contentPanel.rowWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE };
- contentPanel.setLayout(gbl_contentPanel);
+ GridBagLayout gblContentPanel = new GridBagLayout();
+ gblContentPanel.columnWidths = new int[]{ 0, 0 };
+ gblContentPanel.rowHeights = new int[]{ 0, 40, 0 };
+ gblContentPanel.columnWeights = new double[]{ 1.0, Double.MIN_VALUE };
+ gblContentPanel.rowWeights = new double[]{ 0.0, 1.0, Double.MIN_VALUE };
+ contentPanel.setLayout(gblContentPanel);
{
JPanel selectionPane = new JPanel();
contentPanel.add(selectionPane);
- JLabel lblDefaultIncomingFolder = new JLabel(Messages.getString("MappingEpisodeNameDialog.SelectProvider"));
+ JLabel lblDefaultIncomingFolder = new JLabel(Messages.getText("MappingEpisodeNameDialog.SelectProvider"));
selectionPane.add(lblDefaultIncomingFolder);
JComboBox mappingTypeList = new JComboBox<>();
@@ -233,20 +207,20 @@ private void initialize() {
}
{
JPanel pnlButtons = new JPanel();
- GridBagConstraints gbc_pnlButtons = new GridBagConstraints();
- gbc_pnlButtons.insets = new Insets(0, 0, 5, 0);
- gbc_pnlButtons.fill = GridBagConstraints.BOTH;
- gbc_pnlButtons.gridx = 0;
- gbc_pnlButtons.gridy = 0;
- contentPanel.add(pnlButtons, gbc_pnlButtons);
+ GridBagConstraints gbcPnlButtons = new GridBagConstraints();
+ gbcPnlButtons.insets = new Insets(0, 0, 5, 0);
+ gbcPnlButtons.fill = GridBagConstraints.BOTH;
+ gbcPnlButtons.gridx = 0;
+ gbcPnlButtons.gridy = 0;
+ contentPanel.add(pnlButtons, gbcPnlButtons);
}
{
JScrollPane scrollPane = new JScrollPane();
- GridBagConstraints gbc_scrollPane = new GridBagConstraints();
- gbc_scrollPane.fill = GridBagConstraints.BOTH;
- gbc_scrollPane.gridx = 0;
- gbc_scrollPane.gridy = 1;
- contentPanel.add(scrollPane, gbc_scrollPane);
+ GridBagConstraints gbcScrollPane = new GridBagConstraints();
+ gbcScrollPane.fill = GridBagConstraints.BOTH;
+ gbcScrollPane.gridx = 0;
+ gbcScrollPane.gridy = 1;
+ contentPanel.add(scrollPane, gbcScrollPane);
{
table = new JTable();
@@ -262,21 +236,18 @@ private void initialize() {
buttonPane.setLayout(new MigLayout("", "[25px][50px][grow][50px][grow][50px][25px]", "[][25px,grow,fill]"));
{
- JButton btnDeleteSelectedRow = new JButton(Messages.getString("MappingEpisodeNameDialog.DeleteRow"));
- btnDeleteSelectedRow.addActionListener(arg0 -> {
+ JButton btnDeleteSelectedRow = new JButton(Messages.getText("MappingEpisodeNameDialog.DeleteRow"));
+ btnDeleteSelectedRow.addActionListener(_ -> {
int rowNbr = table.convertRowIndexToModel(table.getSelectedRow());
MappingTableModel model = (MappingTableModel) table.getModel();
Row row = (Row) model.getDataVector().get(rowNbr);
- String key = row.getKey();
- manager.valueBuilder()
- .cacheType(CacheType.DISK)
- .key(key)
- .remove();
- if (row.getSelectionForKeyPrefix().deleteOtherFunction() != null) {
+ String key = row.key;
+ manager.valueBuilder().cacheType(CacheType.DISK).key(key).remove();
+ if (row.selectionForKeyPrefix.deleteOtherFunction() != null) {
manager.valueBuilder()
.cacheType(CacheType.DISK)
- .key(row.getSelectionForKeyPrefix().deleteOtherFunction().apply(key))
+ .key(row.selectionForKeyPrefix.deleteOtherFunction().apply(key))
.remove();
}
model.removeRow(rowNbr);
@@ -285,49 +256,49 @@ private void initialize() {
}
{
- btnAddCustomMapping.withActionListener(() -> {
+ btnAddCustomMapping.actionListener(() -> {
int rowNbr = table.convertRowIndexToModel(table.getSelectedRow());
MappingTableModel model = (MappingTableModel) table.getModel();
Row row = (Row) model.getDataVector().get(rowNbr);
- String currentName = row.getSerieMapping().getName();
+ String currentName = row.serieMapping.name;
- String message = Messages.getString("MappingEpisodeNameDialog.enterNewNameForSerie", currentName);
- selectedSubtitleProvider.ifPresent(provider -> {
- userInteractionHandler.enter(message, message).ifPresent(newName -> {
- TvRelease tvRelease = TvRelease.builder()
- .name(currentName)
- .season(row.getSerieMapping().getSeason())
- .episode(1)
- .originalName(currentName)
- .customName(newName).build();
- try {
- provider.getProviderSerieId(tvRelease).ifPresentOrElse(providerSerieId -> {
- SerieMapping newSerieMapping =
- new SerieMapping(currentName, providerSerieId.getProviderId(), providerSerieId.getProviderName(),
- providerSerieId.getSeason());
- row.setSerieMapping(newSerieMapping);
- List extends SortKey> sortKeys = table.getRowSorter().getSortKeys();
- selectMappingType(selectedMappingType);
- table.getRowSorter().setSortKeys(sortKeys);
- }, () -> userInteractionHandler.message(
- Messages.getString("MappingEpisodeNameDialog.NoResultsFoundForSerieName", newName),
- Messages.getString("App.Info")));
- } catch (Exception e) {
- userInteractionHandler.message(
- Messages.getString("App.ErrorOccurred", e.getMessage()), Messages.getString("App.Error"));
- }
- });
- });
+ String message = Messages.getText("MappingEpisodeNameDialog.enterNewNameForSerie", currentName);
+ selectedSubtitleProvider.ifPresent(
+ provider -> userInteractionHandler.enter(message, message).ifPresent(newName -> {
+ TvRelease tvRelease = TvRelease.builder()
+ .name(currentName)
+ .season(row.serieMapping.season)
+ .episode(1)
+ .originalName(currentName)
+ .customName(newName)
+ .build();
+ try {
+ provider.getProviderSerieId(tvRelease).ifPresentOrElse(providerSerieId -> {
+ SerieMapping newSerieMapping =
+ new SerieMapping(currentName, providerSerieId.providerId,
+ providerSerieId.providerName, providerSerieId.season);
+ row.serieMapping = newSerieMapping;
+ List extends SortKey> sortKeys = table.getRowSorter().getSortKeys();
+ selectMappingType(selectedMappingType);
+ table.getRowSorter().setSortKeys(sortKeys);
+ }, () -> userInteractionHandler.message(
+ Messages.getText("MappingEpisodeNameDialog.NoResultsFoundForSerieName",
+ newName), Messages.getText("App.Info")));
+ } catch (Exception e) {
+ userInteractionHandler.message(
+ Messages.getText("App.ErrorOccurred", e.getMessage()),
+ Messages.getText("App.Error"));
+ }
+ }));
});
buttonPane.add(btnAddCustomMapping, "skip");
}
{
- new JButton(Messages.getString("App.Close"))
- .defaultButtonFor(getRootPane())
- .withActionListener(() -> setVisible(false))
- .withActionCommand(Messages.getString("App.Close"))
+ new JButton(Messages.getText("App.Close")).defaultButtonFor(getRootPane())
+ .actionListener(() -> setVisible(false))
+ .actionCommand(Messages.getText("App.Close"))
.addTo(buttonPane, "skip");
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/MultiSubDialog.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/MultiSubDialog.java
index 93057c77..5c963352 100644
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/MultiSubDialog.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/MultiSubDialog.java
@@ -1,10 +1,7 @@
package org.lodder.subtools.multisubdownloader.gui.dialog;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-
-import java.awt.Frame;
-import java.awt.Rectangle;
+import javax.swing.*;
+import java.awt.*;
import java.io.Serial;
public class MultiSubDialog extends JDialog {
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/PreferenceDialog.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/PreferenceDialog.java
index 01a1be45..5aa95821 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/PreferenceDialog.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/PreferenceDialog.java
@@ -1,23 +1,15 @@
package org.lodder.subtools.multisubdownloader.gui.dialog;
+import javax.swing.*;
+import javax.swing.border.*;
+import java.awt.*;
import java.io.Serial;
import java.util.concurrent.atomic.AtomicInteger;
-import javax.swing.JButton;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTabbedPane;
-import javax.swing.SwingConstants;
-import javax.swing.border.EmptyBorder;
-
import org.lodder.subtools.multisubdownloader.GUI;
import org.lodder.subtools.multisubdownloader.Messages;
import org.lodder.subtools.multisubdownloader.framework.event.Emitter;
import org.lodder.subtools.multisubdownloader.framework.event.Event;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.button.AbstractButtonExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.button.JButtonExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.container.ContainerExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jcomponent.JComponentExtension;
import org.lodder.subtools.multisubdownloader.gui.panels.preference.EpisodeLibraryPanel;
import org.lodder.subtools.multisubdownloader.gui.panels.preference.GeneralPanel;
import org.lodder.subtools.multisubdownloader.gui.panels.preference.MovieLibraryPanel;
@@ -28,29 +20,21 @@
import org.lodder.subtools.sublibrary.Manager;
import org.lodder.subtools.sublibrary.userinteraction.UserInteractionHandler;
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-
-import lombok.experimental.ExtensionMethod;
-
-@ExtensionMethod({ JComponentExtension.class, ContainerExtension.class, AbstractButtonExtension.class, JButtonExtension.class })
public class PreferenceDialog extends MultiSubDialog {
- @Serial
- private static final long serialVersionUID = -4910124272966075979L;
+ @Serial private static final long serialVersionUID = -4910124272966075979L;
private final SettingsControl settingsCtrl;
private final Emitter eventEmitter;
-
private final GeneralPanel pnlGeneral;
private final EpisodeLibraryPanel pnlEpisodeLibrary;
private final MovieLibraryPanel pnlMovieLibrary;
private final OptionsPanel pnlOptions;
private final SerieProvidersPanel pnlSerieSources;
- public PreferenceDialog(GUI gui, final SettingsControl settingsCtrl, Emitter eventEmitter,
- Manager manager, UserInteractionHandler userInteractionHandler) {
- super(gui, Messages.getString("PreferenceDialog.Title"), true);
+ public PreferenceDialog(GUI gui, final SettingsControl settingsCtrl, Emitter eventEmitter, Manager manager,
+ UserInteractionHandler userInteractionHandler) {
+ super(gui, Messages.getText("PreferenceDialog.Title"), true);
this.settingsCtrl = settingsCtrl;
this.eventEmitter = eventEmitter;
@@ -68,10 +52,12 @@ public PreferenceDialog(GUI gui, final SettingsControl settingsCtrl, Emitter eve
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
tabbedPane.addChangeListener(l -> {
if (tabbedPane.getSelectedIndex() != selectedIndex.get()) {
- PreferencePanelIntf sourcePanel = (PreferencePanelIntf) tabbedPane.getComponentAt(selectedIndex.get());
+ PreferencePanelIntf sourcePanel =
+ (PreferencePanelIntf) tabbedPane.getComponentAt(selectedIndex.get());
if (!sourcePanel.hasValidSettings()) {
tabbedPane.setSelectedIndex(selectedIndex.get());
- JOptionPane.showMessageDialog(this, Messages.getString("PreferenceDialog.invalidInput"), "Error", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, Messages.getText("PreferenceDialog.invalidInput"),
+ "Error", JOptionPane.ERROR_MESSAGE);
} else {
selectedIndex.set(tabbedPane.getSelectedIndex());
}
@@ -80,42 +66,39 @@ public PreferenceDialog(GUI gui, final SettingsControl settingsCtrl, Emitter eve
contentPanel.add(tabbedPane);
this.pnlGeneral = new GeneralPanel(gui, settingsCtrl);
- tabbedPane.addTab(Messages.getString("PreferenceDialog.TabGeneral"), null, pnlGeneral, null);
+ tabbedPane.addTab(Messages.getText("PreferenceDialog.TabGeneral"), null, pnlGeneral, null);
this.pnlEpisodeLibrary =
- new EpisodeLibraryPanel(settingsCtrl.getSettings().getEpisodeLibrarySettings(), manager, false, userInteractionHandler);
- tabbedPane.addTab(Messages.getString("PreferenceDialog.SerieLibrary"), null, pnlEpisodeLibrary, null);
+ new EpisodeLibraryPanel(settingsCtrl.settings.episodeLibrarySettings, manager, false,
+ userInteractionHandler);
+ tabbedPane.addTab(Messages.getText("PreferenceDialog.SerieLibrary"), null, pnlEpisodeLibrary, null);
- this.pnlMovieLibrary =
- new MovieLibraryPanel(settingsCtrl.getSettings().getMovieLibrarySettings(), manager, false, userInteractionHandler);
- tabbedPane.addTab(Messages.getString("PreferenceDialog.MovieLibrary"), null, pnlMovieLibrary, null);
+ this.pnlMovieLibrary = new MovieLibraryPanel(settingsCtrl.settings.movieLibrarySettings, manager, false,
+ userInteractionHandler);
+ tabbedPane.addTab(Messages.getText("PreferenceDialog.MovieLibrary"), null, pnlMovieLibrary, null);
this.pnlOptions = new OptionsPanel(settingsCtrl);
- tabbedPane.addTab(Messages.getString("PreferenceDialog.Options"), null, pnlOptions, null);
+ tabbedPane.addTab(Messages.getText("PreferenceDialog.Options"), null, pnlOptions, null);
this.pnlSerieSources = new SerieProvidersPanel(settingsCtrl);
- tabbedPane.addTab(Messages.getString("PreferenceDialog.SerieSources"), null, pnlSerieSources, null);
+ tabbedPane.addTab(Messages.getText("PreferenceDialog.SerieSources"), null, pnlSerieSources, null);
}
{
- new JPanel().layout(new FlowLayout(FlowLayout.RIGHT)).addTo(getContentPane(), BorderLayout.SOUTH)
- .addComponent(
- new JButton(Messages.getString("App.OK"))
- .defaultButtonFor(getRootPane())
- .withActionListener(this::testAndSaveValues)
- .actionCommand(Messages.getString("App.OK")))
+ new JPanel().layout(new FlowLayout(FlowLayout.RIGHT))
+ .addTo(getContentPane(), BorderLayout.SOUTH)
+ .addComponent(new JButton(Messages.getText("App.OK")).defaultButtonFor(getRootPane())
+ .actionListener(this::testAndSaveValues)
+ .actionCommand(Messages.getText("App.OK")))
.addComponent(
- new JButton(Messages.getString("App.Cancel"))
- .withActionListener(() -> setVisible(false))
+ new JButton(Messages.getText("App.Cancel")).actionListener(() -> setVisible(false))
.actionCommand("Cancel"));
}
}
private void testAndSaveValues() {
- if (pnlGeneral.hasValidSettings() &&
- pnlEpisodeLibrary.hasValidSettings() &&
- pnlMovieLibrary.hasValidSettings() &&
- pnlOptions.hasValidSettings() &&
+ if (pnlGeneral.hasValidSettings() && pnlEpisodeLibrary.hasValidSettings() &&
+ pnlMovieLibrary.hasValidSettings() && pnlOptions.hasValidSettings() &&
pnlSerieSources.hasValidSettings()) {
pnlGeneral.savePreferenceSettings();
pnlEpisodeLibrary.savePreferenceSettings();
@@ -126,7 +109,8 @@ private void testAndSaveValues() {
settingsCtrl.store();
this.eventEmitter.fire(new Event("providers.settings.change"));
} else {
- JOptionPane.showMessageDialog(this, Messages.getString("PreferenceDialog.invalidInput"), "Error", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, Messages.getText("PreferenceDialog.invalidInput"), "Error",
+ JOptionPane.ERROR_MESSAGE);
}
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/ProgressDialog.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/ProgressDialog.java
index 129000c0..db82034a 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/ProgressDialog.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/ProgressDialog.java
@@ -5,7 +5,6 @@
import java.awt.event.WindowEvent;
import java.io.Serial;
-import lombok.Getter;
import net.miginfocom.swing.MigLayout;
import org.lodder.subtools.multisubdownloader.Messages;
import org.lodder.subtools.multisubdownloader.gui.extra.progress.Messenger;
@@ -15,29 +14,29 @@ public class ProgressDialog extends MultiSubDialog implements Messenger {
@Serial
private static final long serialVersionUID = -2320149791421648965L;
- @Getter
+
+ private final Cancelable worker;
private JProgressBar progressBar;
private JLabel label;
- private final Cancelable worker;
public ProgressDialog(JFrame frame, Cancelable sft) {
- super(frame, Messages.getString("ProgressDialog.Title"), false);
+ super(frame, Messages.getText("ProgressDialog.Title"), false);
worker = sft;
StatusMessenger.instance.addListener(this);
- initialize_ui();
+ initializeUi();
setDialogLocation(frame);
repaint();
}
public ProgressDialog(Cancelable sft) {
- super(Messages.getString("ProgressDialog.Title"), false);
+ super(Messages.getText("ProgressDialog.Title"), false);
worker = sft;
StatusMessenger.instance.addListener(this);
- initialize_ui();
+ initializeUi();
repaint();
}
- private void initialize_ui() {
+ private void initializeUi() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
@@ -55,7 +54,7 @@ public void windowClosing(WindowEvent e) {
getContentPane().add(progressBar, "cell 1 1,grow");
JButton btnStop = new JButton("Stop!");
- btnStop.addActionListener(arg0 -> worker.cancel(true));
+ btnStop.addActionListener(_ -> worker.cancel(true));
getContentPane().add(btnStop, "cell 1 2 1 2,alignx left");
}
@@ -75,11 +74,11 @@ public void message(String message) {
public void updateProgress(int progress) {
if (progress == 0) {
- getProgressBar().setIndeterminate(true);
+ progressBar.setIndeterminate(true);
} else {
- getProgressBar().setIndeterminate(false);
- getProgressBar().setValue(progress);
- getProgressBar().setString(Integer.toString(progress));
+ progressBar.setIndeterminate(false);
+ progressBar.setValue(progress);
+ progressBar.setString(Integer.toString(progress));
}
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/RenameDialog.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/RenameDialog.java
index 0fcefca6..d2ad1105 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/RenameDialog.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/RenameDialog.java
@@ -1,5 +1,7 @@
package org.lodder.subtools.multisubdownloader.gui.dialog;
+import javax.swing.*;
+import java.awt.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.IOException;
@@ -11,24 +13,15 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.SwingWorker;
-
+import com.google.common.collect.Streams;
+import lombok.experimental.ExtensionMethod;
+import manifold.ext.props.rt.api.set;
+import net.miginfocom.swing.MigLayout;
import org.lodder.subtools.multisubdownloader.Messages;
import org.lodder.subtools.multisubdownloader.actions.RenameAction;
import org.lodder.subtools.multisubdownloader.gui.extra.MemoryFolderChooser;
import org.lodder.subtools.multisubdownloader.gui.extra.TitlePanel;
import org.lodder.subtools.multisubdownloader.gui.extra.progress.StatusMessenger;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.button.AbstractButtonExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.button.JButtonExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.container.ContainerExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jcomponent.JComponentExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jtextfield.JTextFieldExtension;
import org.lodder.subtools.multisubdownloader.gui.jcomponent.jtextfield.MyTextFieldPath;
import org.lodder.subtools.multisubdownloader.gui.panels.preference.EpisodeLibraryPanel;
import org.lodder.subtools.multisubdownloader.gui.panels.preference.MovieLibraryPanel;
@@ -41,27 +34,15 @@
import org.lodder.subtools.sublibrary.model.Release;
import org.lodder.subtools.sublibrary.model.VideoType;
import org.lodder.subtools.sublibrary.userinteraction.UserInteractionHandler;
-import org.lodder.subtools.sublibrary.util.FileUtils;
-import org.lodder.subtools.sublibrary.util.StreamExtension;
-
-import com.google.common.collect.Streams;
-
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import lombok.Setter;
-import lombok.experimental.ExtensionMethod;
-import net.miginfocom.swing.MigLayout;
-
-@ExtensionMethod({ JTextFieldExtension.class, ContainerExtension.class, JButtonExtension.class, AbstractButtonExtension.class,
- JComponentExtension.class })
public class RenameDialog extends MultiSubDialog implements PropertyChangeListener {
- @Serial
- private static final long serialVersionUID = 1L;
+ @Serial private static final long serialVersionUID = 1L;
+
private final VideoLibraryPanel pnlLibrary;
private final MyTextFieldPath txtFolder;
private final JCheckBox chkRecursive;
+
private ProgressDialog progressDialog;
public RenameDialog(JFrame frame, Settings settings, VideoType videoType, String title, Manager manager,
@@ -70,35 +51,38 @@ public RenameDialog(JFrame frame, Settings settings, VideoType videoType, String
setResizable(false);
setBounds(100, 100, 650, 680);
getContentPane().setLayout(new MigLayout("fill, nogrid", "[]", "[][]20:push[]"));
- TitlePanel.title(Messages.getString("PreferenceDialog.Settings"))
- .padding(0).paddingLeft(20).fillContents(true).addTo(getContentPane(), "span, grow, wrap")
- .addComponent("shrink", new JLabel(Messages.getString("PreferenceDialog.Location")))
- .addComponent("grow", this.txtFolder = MyTextFieldPath.builder().requireValue().build().withColumns(20))
- .addComponent("shrink, wrap", new JButton(Messages.getString("App.Browse"))
- .withActionListener(() -> MemoryFolderChooser.getInstance()
- .selectDirectory(getContentPane(), Messages.getString("PreferenceDialog.SelectFolderForRenameReplace"))
+
+ TitlePanel.title(Messages.getText("PreferenceDialog.Settings"))
+ .padding(0)
+ .paddingLeft(20)
+ .fillContents(true)
+ .addTo(getContentPane(), "span, grow, wrap")
+ .addComponent("shrink", new JLabel(Messages.getText("PreferenceDialog.Location")))
+ .addComponent("grow", this.txtFolder = MyTextFieldPath.builder().requireValue().build().columns(20))
+ .addComponent("shrink, wrap", new JButton(Messages.getText("App.Browse")).actionListener(
+ () -> MemoryFolderChooser.getInstance()
+ .selectDirectory(getContentPane(),
+ Messages.getText("PreferenceDialog.SelectFolderForRenameReplace"))
.ifPresent(txtFolder::setObject)))
- .addComponent("wrap", this.chkRecursive = new JCheckBox(Messages.getString("RenameDialog.RecursiveSearch")));
+ .addComponent("wrap",
+ this.chkRecursive = new JCheckBox(Messages.getText("RenameDialog.RecursiveSearch")));
if (videoType == VideoType.EPISODE) {
- pnlLibrary = new EpisodeLibraryPanel(settings.getEpisodeLibrarySettings(), manager, true, userInteractionHandler)
- .addTo(getContentPane(), "grow");
+ pnlLibrary = new EpisodeLibraryPanel(settings.episodeLibrarySettings, manager, true,
+ userInteractionHandler).addTo(getContentPane(), "grow");
} else {
- pnlLibrary = new MovieLibraryPanel(settings.getMovieLibrarySettings(), manager, true, userInteractionHandler)
- .addTo(getContentPane(), "grow");
+ pnlLibrary =
+ new MovieLibraryPanel(settings.movieLibrarySettings, manager, true, userInteractionHandler).addTo(
+ getContentPane(), "grow");
}
- new JPanel().layout(new FlowLayout(FlowLayout.RIGHT)).addTo(getContentPane(), BorderLayout.SOUTH)
- .addComponent(
- new JButton(Messages.getString("RenameDialog.Rename"))
- .defaultButtonFor(getRootPane())
- .withActionListener(() -> rename(videoType, settings, manager, userInteractionHandler))
- .withActionCommand("Rename"))
- .addComponent(
- new JButton(Messages.getString("App.Cancel"))
- .withActionListener(() -> setVisible(false))
- .actionCommand("Cancel"));
-
+ new JPanel().layout(new FlowLayout(FlowLayout.RIGHT))
+ .addTo(getContentPane(), BorderLayout.SOUTH)
+ .addComponent(new JButton(Messages.getText("RenameDialog.Rename")).defaultButtonFor(getRootPane())
+ .actionListener(() -> rename(videoType, settings, manager, userInteractionHandler))
+ .actionCommand("Rename"))
+ .addComponent(new JButton(Messages.getText("App.Cancel")).actionListener(() -> setVisible(false))
+ .actionCommand("Cancel"));
}
private boolean hasValidSettings() {
@@ -109,15 +93,17 @@ private void rename(VideoType videoType, Settings settings, Manager manager,
UserInteractionHandler userInteractionHandler) {
if (!hasValidSettings()) {
- JOptionPane.showMessageDialog(this, Messages.getString("PreferenceDialog.invalidInput"), "Error", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, Messages.getText("PreferenceDialog.invalidInput"), "Error",
+ JOptionPane.ERROR_MESSAGE);
return;
}
setVisible(false);
pnlLibrary.savePreferenceSettings();
- TypedRenameWorker renameWorker = new TypedRenameWorker(txtFolder.getObject(), pnlLibrary.getLibrarySettings(), videoType,
- this.chkRecursive.isSelected(), manager, userInteractionHandler);
+ TypedRenameWorker renameWorker =
+ new TypedRenameWorker(txtFolder.getObject(), pnlLibrary.librarySettings, videoType,
+ this.chkRecursive.isSelected(), manager, userInteractionHandler);
renameWorker.addPropertyChangeListener(this);
- renameWorker.setReleaseFactory(new ReleaseFactory(settings, manager));
+ renameWorker.releaseFactory = new ReleaseFactory(settings, manager);
progressDialog = new ProgressDialog(renameWorker);
progressDialog.setVisible(true);
renameWorker.execute();
@@ -131,12 +117,12 @@ public void propertyChange(PropertyChangeEvent event) {
} else {
final int progress = renameWorker.getProgress();
progressDialog.updateProgress(progress);
- StatusMessenger.instance.message(Messages.getString("RenameDialog.StatusRename"));
+ StatusMessenger.instance.message(Messages.getText("RenameDialog.StatusRename"));
}
}
}
- @ExtensionMethod({ FileUtils.class, Files.class, StreamExtension.class })
+ @ExtensionMethod({ Files.class })
private static class TypedRenameWorker extends SwingWorker implements Cancelable {
private final UserInteractionHandler userInteractionHandler;
@@ -144,14 +130,14 @@ private static class TypedRenameWorker extends SwingWorker impleme
private final VideoType videoType;
private final Set extensions;
private final boolean isRecursive;
- @Setter
- private ReleaseFactory releaseFactory;
private final RenameAction renameAction;
+ @set ReleaseFactory releaseFactory;
- public TypedRenameWorker(Path dir, LibrarySettings librarySettings, VideoType videoType,
- boolean isRecursive, Manager manager, UserInteractionHandler userInteractionHandler) {
+ public TypedRenameWorker(Path dir, LibrarySettings librarySettings, VideoType videoType, boolean isRecursive,
+ Manager manager, UserInteractionHandler userInteractionHandler) {
this.userInteractionHandler = userInteractionHandler;
- this.extensions = Streams.concat(VideoPatterns.EXTENSIONS.stream(), Stream.of("srt")).collect(Collectors.toUnmodifiableSet());
+ this.extensions = Streams.concat(VideoPatterns.EXTENSIONS.stream(), Stream.of("srt"))
+ .collect(Collectors.toUnmodifiableSet());
this.dir = dir;
this.videoType = videoType;
this.isRecursive = isRecursive;
@@ -170,8 +156,8 @@ private void rename(Path dir) throws IOException {
if (!file.fileNameContainsIgnoreCase("sample") && extensions.contains(file.getExtension())) {
Release release = releaseFactory.createRelease(file, userInteractionHandler);
if (release != null) {
- publish(release.getFileName());
- if (release.getVideoType() == videoType) {
+ publish(release.fileName);
+ if (release.videoType == videoType) {
renameAction.rename(file, release);
}
}
@@ -184,7 +170,7 @@ private void rename(Path dir) throws IOException {
@Override
protected void process(List data) {
- data.forEach(s -> StatusMessenger.instance.message(Messages.getString("MainWindow.RenamingFile", s)));
+ data.forEach(s -> StatusMessenger.instance.message(Messages.getText("MainWindow.RenamingFile", s)));
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/SelectDialog.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/SelectDialog.java
index 3442170c..a9415f8e 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/SelectDialog.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/SelectDialog.java
@@ -8,34 +8,31 @@
import java.util.List;
import java.util.stream.IntStream;
-import lombok.experimental.ExtensionMethod;
import net.miginfocom.swing.MigLayout;
import org.lodder.subtools.multisubdownloader.Messages;
import org.lodder.subtools.multisubdownloader.gui.extra.table.CustomTable;
import org.lodder.subtools.multisubdownloader.gui.extra.table.SubtitleTableColumnName;
import org.lodder.subtools.multisubdownloader.gui.extra.table.SubtitleTableModel;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.button.AbstractButtonExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.button.JButtonExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jcomponent.JComponentExtension;
import org.lodder.subtools.sublibrary.model.Release;
import org.lodder.subtools.sublibrary.model.Subtitle;
-@ExtensionMethod({ JButtonExtension.class, AbstractButtonExtension.class, JComponentExtension.class })
public class SelectDialog extends MultiSubDialog {
- @Serial
- private static final long serialVersionUID = -4092909537478305235L;
- private List selectedSubtitleIdxs;
+ @Serial private static final long serialVersionUID = -4092909537478305235L;
+
private final List subtitles;
private final Release release;
+
+ private List selectedSubtitleIdxs;
private CustomTable customTable;
/**
* Create the dialog.
*/
public SelectDialog(JFrame frame, List subtitles, Release release) {
- super(frame, Messages.getString("SelectDialog.SelectCorrectSubtitle"), true);
- this.subtitles = subtitles.stream().distinct().sorted(Comparator.comparing(Subtitle::getScore).reversed()).toList();
+ super(frame, Messages.getText("SelectDialog.SelectCorrectSubtitle"), true);
+ this.subtitles =
+ subtitles.stream().distinct().sorted(Comparator.comparing(Subtitle::getScore).reversed()).toList();
this.release = release;
initialize();
pack();
@@ -46,8 +43,7 @@ public SelectDialog(JFrame frame, List subtitles, Release release) {
private void initialize() {
getContentPane().setLayout(new MigLayout("", "[1000px:n,grow,fill]", "[][::100px,fill][grow]"));
JLabel lblNewLabel =
- new JLabel(Messages.getString("SelectDialog.SelectCorrectSubtitleThisRelease")
- + release.getFileName());
+ new JLabel(Messages.getText("SelectDialog.SelectCorrectSubtitleThisRelease") + release.fileName);
getContentPane().add(lblNewLabel, "cell 0 0");
{
JScrollPane scrollPane = new JScrollPane();
@@ -58,30 +54,20 @@ private void initialize() {
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, "cell 0 2,grow");
- new JButton(Messages.getString("App.OK"))
- .defaultButtonFor(getRootPane())
- .withActionListener(() -> {
- selectedSubtitleIdxs = getSelectedIdxs();
- setVisible(false);
- })
- .withActionCommand(Messages.getString("App.OK"))
- .addTo(buttonPane);
-
- new JButton(Messages.getString("SelectDialog.Everything"))
- .withActionListener(() -> {
- selectedSubtitleIdxs = IntStream.range(0, release.getMatchingSubs().size()).boxed().toList();
- setVisible(false);
- })
- .withActionCommand(Messages.getString("App.All"))
- .addTo(buttonPane);
-
- new JButton(Messages.getString("App.Cancel"))
- .withActionListener(() -> {
- selectedSubtitleIdxs = List.of();
- setVisible(false);
- })
- .withActionCommand(Messages.getString("App.Cancel"))
- .addTo(buttonPane);
+ new JButton(Messages.getText("App.OK")).defaultButtonFor(getRootPane()).actionListener(() -> {
+ selectedSubtitleIdxs = getSelectedIdxs();
+ setVisible(false);
+ }).actionCommand(Messages.getText("App.OK")).addTo(buttonPane);
+
+ new JButton(Messages.getText("SelectDialog.Everything")).actionListener(() -> {
+ selectedSubtitleIdxs = IntStream.range(0, release.getMatchingSubs().size()).boxed().toList();
+ setVisible(false);
+ }).actionCommand(Messages.getText("App.All")).addTo(buttonPane);
+
+ new JButton(Messages.getText("App.Cancel")).actionListener(() -> {
+ selectedSubtitleIdxs = List.of();
+ setVisible(false);
+ }).actionCommand(Messages.getText("App.Cancel")).addTo(buttonPane);
}
}
@@ -117,8 +103,10 @@ private CustomTable createCustomTable() {
private List getSelectedIdxs() {
return IntStream.range(0, customTable.getModel().getRowCount())
- .filter(i -> (boolean) customTable.getModel().getValueAt(i, customTable.getColumnIdByName(SubtitleTableColumnName.SELECT)))
- .boxed().toList();
+ .filter(i -> (boolean) customTable.getModel()
+ .getValueAt(i, customTable.getColumnIdByName(SubtitleTableColumnName.SELECT)))
+ .boxed()
+ .toList();
}
public List getSelection() {
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/StructureBuilderDialog.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/StructureBuilderDialog.java
index 7906d5f7..d30f9dcd 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/StructureBuilderDialog.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/StructureBuilderDialog.java
@@ -8,18 +8,10 @@
import java.awt.event.MouseListener;
import java.io.Serial;
import java.nio.file.Path;
-import java.util.Arrays;
import java.util.function.Function;
-import lombok.experimental.ExtensionMethod;
import net.miginfocom.swing.MigLayout;
import org.lodder.subtools.multisubdownloader.Messages;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.button.AbstractButtonExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.button.JButtonExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.component.ComponentExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.container.ContainerExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jcomponent.JComponentExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jtextfield.JTextFieldExtension;
import org.lodder.subtools.multisubdownloader.lib.ReleaseFactory;
import org.lodder.subtools.multisubdownloader.lib.library.LibraryBuilder;
import org.lodder.subtools.multisubdownloader.settings.model.Settings;
@@ -34,17 +26,16 @@
import org.lodder.subtools.sublibrary.model.VideoType;
import org.lodder.subtools.sublibrary.userinteraction.UserInteractionHandler;
-@ExtensionMethod({ JButtonExtension.class, AbstractButtonExtension.class, JComponentExtension.class, ContainerExtension.class,
- ComponentExtension.class, JTextFieldExtension.class })
public class StructureBuilderDialog extends MultiSubDialog implements DocumentListener {
- @Serial
- private static final long serialVersionUID = -5174968778375028124L;
+ @Serial private static final long serialVersionUID = -5174968778375028124L;
+
private final VideoType videoType;
private final StructureType structureType;
private final Manager manager;
private final UserInteractionHandler userInteractionHandler;
private final Function libraryBuilder;
+
private JTextField txtStructure;
private JLabel lblPreview;
private TvRelease tvRelease;
@@ -65,16 +56,16 @@ public StructureBuilderDialog(JFrame frame, String title, boolean modal, VideoTy
this.manager = manager;
this.userInteractionHandler = userInteractionHandler;
this.libraryBuilder = filenameLibraryBuilder;
- initializeUi();
+ initializeUI();
generateVideoFiles();
}
- private void initializeUi() {
+ private void initializeUI() {
setBounds(100, 100, 600, 300);
setMinimumSize(new Dimension(600, 300));
Container panel = getContentPane().layout(new MigLayout("insets 10, nogrid"));
- new JLabel(Messages.getString("StructureBuilderDialog.AvailableTagsClickToAdd")).addTo(panel, "wrap");
+ new JLabel(Messages.getText("StructureBuilderDialog.AvailableTagsClickToAdd")).addTo(panel, "wrap");
this.tagPanel = new JPanel(new MigLayout("flowy, wrap 5", "[150px][150px][150px]")).addTo(panel, "grow, wrap");
{
@@ -90,52 +81,44 @@ private void initializeUi() {
}
}
- new JLabel(Messages.getString("StructureBuilderDialog.Structure")).addTo(panel);
- this.txtStructure = new JTextField().withColumns(100).addTo(panel, "span, wrap");
+ new JLabel(Messages.getText("StructureBuilderDialog.Structure")).addTo(panel);
+ this.txtStructure = new JTextField().columns(100).addTo(panel, "span, wrap");
this.txtStructure.getDocument().addDocumentListener(this);
- new JLabel(Messages.getString("StructureBuilderDialog.Preview")).addTo(panel);
+ new JLabel(Messages.getText("StructureBuilderDialog.Preview")).addTo(panel);
this.lblPreview = new JLabel("").addTo(panel);
new JPanel(new FlowLayout(FlowLayout.RIGHT)).addTo(panel, BorderLayout.SOUTH)
.addComponent(
- new JButton(Messages.getString("App.OK"))
- .defaultButtonFor(getRootPane())
- .withActionListener(e -> {
- setVisible(false);
- dispose(); // this is needed to dispose the dialog and return the control to the window
- })
- .withActionCommand("OK"))
- .addComponent(new JButton(Messages.getString("App.Cancel"))
- .withActionListener(e -> {
+ new JButton(Messages.getText("App.OK")).defaultButtonFor(getRootPane()).actionListener(_ -> {
setVisible(false);
- txtStructure.setText(oldStructure);
dispose(); // this is needed to dispose the dialog and return the control to the window
- })
- .withActionCommand("Cancel"));
+ }).actionCommand("OK"))
+ .addComponent(new JButton(Messages.getText("App.Cancel")).actionListener(_ -> {
+ setVisible(false);
+ txtStructure.setText(oldStructure);
+ dispose(); // this is needed to dispose the dialog and return the control to the window
+ }).actionCommand("Cancel"));
}
private void generateVideoFiles() {
ReleaseFactory releaseFactory = new ReleaseFactory(new Settings(), manager);
- if (videoType == VideoType.EPISODE) {
- tvRelease = (TvRelease) releaseFactory.createRelease(
- Path.of("Terra.Nova.S01E01E02.Genesis.720p.HDTV.x264-ORENJI.mkv"),
- userInteractionHandler);
- } else if (videoType == VideoType.MOVIE) {
- movieRelease = (MovieRelease) releaseFactory.createRelease(Path.of("Final.Destination.5.720p.Bluray.x264-TWiZTED"),
- userInteractionHandler);
+ switch (videoType) {
+ case EPISODE -> tvRelease = (TvRelease) releaseFactory.createRelease(
+ Path.of("Terra.Nova.S01E01E02.Genesis.720p.HDTV.x264-ORENJI.mkv"), userInteractionHandler);
+ case MOVIE -> movieRelease = (MovieRelease) releaseFactory.createRelease(
+ Path.of("Final.Destination.5.720p.Bluray.x264-TWiZTED"), userInteractionHandler);
}
}
private void buildLabelTable(StructureTag[] structureTags) {
- Arrays.stream(structureTags).forEach(this::addTag);
+ structureTags.forEach(this::addTag);
}
private void addTag(StructureTag structureTag) {
- new JLabel(structureTag.getLabel())
- .withToolTipText(structureTag.getDescription())
+ new JLabel(structureTag.label).withToolTipText(structureTag.description)
.addTo(tagPanel)
- .withMouseListener(new InsertTag());
+ .mouseListener(new InsertTag());
}
public String showDialog(String structure) {
@@ -192,7 +175,7 @@ public void mouseClicked(MouseEvent e) {
beforeCaret = txtStructure.getText();
afterCaret = "";
}
- txtStructure.setText(String.format("%s%s%s", beforeCaret, clickedTag, afterCaret));
+ txtStructure.setText("%s%s%s".formatted(beforeCaret, clickedTag, afterCaret));
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/progress/search/SearchProgressDialog.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/progress/search/SearchProgressDialog.java
index 6df020aa..948cc5dd 100644
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/progress/search/SearchProgressDialog.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/progress/search/SearchProgressDialog.java
@@ -1,10 +1,11 @@
package org.lodder.subtools.multisubdownloader.gui.dialog.progress.search;
-import javax.swing.JButton;
-import javax.swing.JProgressBar;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
+import javax.swing.*;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.Serial;
+import net.miginfocom.swing.MigLayout;
import org.lodder.subtools.multisubdownloader.GUI;
import org.lodder.subtools.multisubdownloader.Messages;
import org.lodder.subtools.multisubdownloader.actions.ActionException;
@@ -14,12 +15,6 @@
import org.lodder.subtools.multisubdownloader.subtitleproviders.SubtitleProvider;
import org.lodder.subtools.sublibrary.model.Release;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.io.Serial;
-
-import net.miginfocom.swing.MigLayout;
-
public class SearchProgressDialog extends MultiSubDialog implements SearchProgressListener {
@Serial
@@ -31,12 +26,12 @@ public class SearchProgressDialog extends MultiSubDialog implements SearchProgre
private boolean completed;
public SearchProgressDialog(GUI window, Cancelable searchAction) {
- super(window, Messages.getString("SearchProgressDialog.Title"), false);
+ super(window, Messages.getText("SearchProgressDialog.Title"), false);
this.searchAction = searchAction;
this.window = window;
this.completed = false;
- initialize_ui();
+ initializeUi();
setDialogLocation(window);
repaint();
}
@@ -44,8 +39,7 @@ public SearchProgressDialog(GUI window, Cancelable searchAction) {
@Override
public void progress(SubtitleProvider provider, int jobsLeft, Release release) {
this.setVisible();
- this.tableModel.update(provider.getName(), jobsLeft,
- release == null ? "Done" : release.getFileName());
+ this.tableModel.update(provider.getName(), jobsLeft, release == null ? "Done" : release.fileName);
}
@Override
@@ -82,7 +76,7 @@ public void onStatus(String message) {
this.window.setStatusMessage(message);
}
- private void initialize_ui() {
+ private void initializeUi() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
@@ -108,8 +102,8 @@ public void windowClosing(WindowEvent e) {
progressBar.setIndeterminate(true);
getContentPane().add(progressBar, "cell 0 1 2 1,grow");
- JButton btnStop = new JButton(Messages.getString("SearchProgressDialog.Stop"));
- btnStop.addActionListener(arg0 -> searchAction.cancel(true));
+ JButton btnStop = new JButton(Messages.getText("SearchProgressDialog.Stop"));
+ btnStop.addActionListener(_ -> searchAction.cancel(true));
getContentPane().add(btnStop, "cell 1 2,alignx left");
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/progress/search/SearchProgressTableModel.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/progress/search/SearchProgressTableModel.java
index 63a5ab1a..4a241fac 100644
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/progress/search/SearchProgressTableModel.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/dialog/progress/search/SearchProgressTableModel.java
@@ -17,9 +17,9 @@ public SearchProgressTableModel() {
super();
this.setColumnCount(3);
this.setColumnIdentifiers(new String[]{
- Messages.getString("SearchProgressTableModel.Source"),
- Messages.getString("SearchProgressTableModel.Queue"),
- Messages.getString("SearchProgressTableModel.Release")});
+ Messages.getText("SearchProgressTableModel.Source"),
+ Messages.getText("SearchProgressTableModel.Queue"),
+ Messages.getText("SearchProgressTableModel.Release") });
}
public void update(String source, int queue, String release) {
@@ -42,7 +42,7 @@ private void updateRow(int rowNr, int queue, String release) {
private void createRow(String source, int queue, String release) {
this.rowMap.put(source, this.getRowCount());
- Object[] row = {source, queue, release};
+ Object[] row = { source, queue, release };
this.addRow(row);
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/ArrowButton.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/ArrowButton.java
index fad3084e..538b5cea 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/ArrowButton.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/ArrowButton.java
@@ -4,25 +4,19 @@
import java.awt.*;
import java.io.Serial;
-import lombok.Getter;
-import lombok.Setter;
+import manifold.ext.props.rt.api.var;
-@Getter
-@Setter
public class ArrowButton extends JButton {
- @Serial
- private static final long serialVersionUID = -4630720317499130016L;
+ @Serial private static final long serialVersionUID = -4630720317499130016L;
/**
- * The cardinal direction of the arrow(s),
- * any of {@link SwingConstants#NORTH}, {@link SwingConstants#SOUTH}, {@link SwingConstants#WEST} or {@link SwingConstants#EAST}
+ * The cardinal direction of the arrow(s), any of {@link SwingConstants#NORTH}, {@link SwingConstants#SOUTH},
+ * {@link SwingConstants#WEST} or {@link SwingConstants#EAST}
*/
- private int direction;
-
- private int arrowCount;
-
- private int arrowSize;
+ @var int direction;
+ @var int arrowCount;
+ @var int arrowSize;
public ArrowButton(int direction, int arrowCount, int arrowSize) {
setMargin(new Insets(0, 2, 0, 2));
@@ -39,13 +33,10 @@ public Dimension getPreferredSize() {
@Override
public Dimension getMinimumSize() {
- return new Dimension(arrowSize
- * (direction == SwingConstants.EAST || direction == SwingConstants.WEST ? arrowCount : 3)
- + getBorder().getBorderInsets(this).left + getBorder().getBorderInsets(this).right,
- arrowSize
- * (direction == SwingConstants.NORTH || direction == SwingConstants.SOUTH ? arrowCount : 3)
- + getBorder().getBorderInsets(this).top
- + getBorder().getBorderInsets(this).bottom);
+ return new Dimension(arrowSize * (direction == EAST || direction == WEST ? arrowCount : 3) +
+ getBorder().getBorderInsets(this).left + getBorder().getBorderInsets(this).right,
+ arrowSize * (direction == NORTH || direction == SOUTH ? arrowCount : 3) +
+ getBorder().getBorderInsets(this).top + getBorder().getBorderInsets(this).bottom);
}
@Override
@@ -65,18 +56,10 @@ protected void paintComponent(Graphics g) {
int w = getSize().width;
int h = getSize().height;
for (int i = 0; i < arrowCount; i++) {
- paintArrow(g,
- (w - arrowSize
- * (direction == SwingConstants.EAST || direction == SwingConstants.WEST ? arrowCount : 1))
- / 2
- + arrowSize
- * (direction == SwingConstants.EAST || direction == SwingConstants.WEST ? i : 0),
- (h - arrowSize
- * (direction == SwingConstants.EAST || direction == SwingConstants.WEST ? 1 : arrowCount))
- / 2
- + arrowSize
- * (direction == SwingConstants.EAST || direction == SwingConstants.WEST ? 0 : i),
- g.getColor());
+ paintArrow(g, (w - arrowSize * (direction == EAST || direction == WEST ? arrowCount : 1)) / 2 +
+ arrowSize * (direction == EAST || direction == WEST ? i : 0),
+ (h - arrowSize * (direction == EAST || direction == WEST ? 1 : arrowCount)) / 2 +
+ arrowSize * (direction == EAST || direction == WEST ? 0 : i), g.getColor());
}
g.setColor(oldColor);
@@ -86,7 +69,7 @@ private void paintArrow(Graphics g, int x, int y, Color highlight) {
int mid, i, j;
Color oldColor = g.getColor();
- boolean isEnabled = isEnabled();
+ boolean enabled = isEnabled();
j = 0;
arrowSize = Math.max(arrowSize, 2);
@@ -99,13 +82,13 @@ private void paintArrow(Graphics g, int x, int y, Color highlight) {
for (i = 0; i < arrowSize; i++) {
g.drawLine(mid - i, i, mid + i, i);
}
- if (!isEnabled) {
+ if (!enabled) {
g.setColor(highlight);
g.drawLine(mid - i + 2, i, mid + i, i);
}
}
case SOUTH -> {
- if (!isEnabled) {
+ if (!enabled) {
g.translate(1, 1);
g.setColor(highlight);
for (i = arrowSize - 1; i >= 0; i--) {
@@ -125,13 +108,13 @@ private void paintArrow(Graphics g, int x, int y, Color highlight) {
for (i = 0; i < arrowSize; i++) {
g.drawLine(i, mid - i, i, mid + i);
}
- if (!isEnabled) {
+ if (!enabled) {
g.setColor(highlight);
g.drawLine(i, mid - i + 2, i, mid + i);
}
}
case EAST -> {
- if (!isEnabled) {
+ if (!enabled) {
g.translate(1, 1);
g.setColor(highlight);
for (i = arrowSize - 1; i >= 0; i--) {
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/ImageListCellRenderer.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/ImageListCellRenderer.java
index 30e7c4e7..81d8b515 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/ImageListCellRenderer.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/ImageListCellRenderer.java
@@ -13,26 +13,22 @@ public class ImageListCellRenderer extends JLabel implements ListCellRendererSource:
- *
- * Return a component that has been configured to display the specified value.
- * That component's paint method is then called to "render" the cell.
- * If it is necessary to compute the dimensions of a list because the list cells do not have a fixed size,
- * this method is called to generate a component on which getPreferredSize can be invoked.
- *
- * jlist - the jlist we're painting
- * value - the value returned by list.getModel().getElementAt(index).
- * cellIndex - the cell index
- * isSelected - true if the specified cell is currently selected
- * cellHasFocus - true if the cell has focus
- */
- @Override
- public Component getListCellRendererComponent(JList> jlist, Object value, int cellIndex,
- boolean isSelected, boolean cellHasFocus) {
- if (value instanceof JPanel) {
- Component component = (Component) value;
- if (isSelected) {
+ /**
+ * Source:
+ *
+ * Return a component that has been configured to display the specified value. That component's paint method is then
+ * called to "render" the cell. If it is necessary to compute the dimensions of a list because the list cells do not
+ * have a fixed size, this method is called to generate a component on which getPreferredSize can be invoked.
+ *
+ * jlist - the jlist we're painting value - the value returned by list.getModel().getElementAt(index). cellIndex -
+ * the cell index selected - true if the specified cell is currently selected cellHasFocus - true if the cell has
+ * focus
+ */
+ @Override
+ public Component getListCellRendererComponent(JList> jlist, Object value, int cellIndex,
+ boolean selected, boolean cellHasFocus) {
+ if (value instanceof JPanel component) {
+ if (selected) {
component.setBackground(jlist.getSelectionBackground());
component.setForeground(jlist.getSelectionForeground());
} else {
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/JListWithImages.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/JListWithImages.java
index db84b9f7..c23cfc62 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/JListWithImages.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/JListWithImages.java
@@ -10,13 +10,10 @@
import java.util.stream.Stream;
import com.google.common.base.Objects;
-import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
-import lombok.experimental.ExtensionMethod;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jcomponent.JComponentExtension;
+import manifold.ext.props.rt.api.val;
-@ExtensionMethod({ JComponentExtension.class })
public class JListWithImages extends JList> {
@Serial
@@ -61,7 +58,8 @@ public void addItems(Image image, Collection values) {
public void addItem(Image image, T value) {
if (!distinctValues || !contains(value)) {
- ((DefaultListModel>) getModel()).addElement(new LabelPanel<>(image, value, toStringMapper, SwingConstants.LEFT));
+ ((DefaultListModel>) getModel()).addElement(
+ new LabelPanel<>(image, value, toStringMapper, SwingConstants.LEFT));
}
}
@@ -93,11 +91,10 @@ private Optional> getLabelPanel(int index) {
return Optional.ofNullable(getModel().getElementAt(index));
}
- @Getter
public static class LabelPanel extends JPanel {
private static final long serialVersionUID = 1L;
- private final Label label;
+ @val Label label;
LabelPanel(Image image, T object, Function toStringMapper, int horizontalAlignment) {
this.label = new Label<>(image, object, toStringMapper, horizontalAlignment);
@@ -106,19 +103,18 @@ public static class LabelPanel extends JPanel {
}
public T getObject() {
- return label.getObject();
+ return label.object;
}
public Image getImage() {
- return label.getImage();
+ return label.image;
}
}
- @Getter
private static class Label extends JLabel {
private static final long serialVersionUID = 1L;
- private final T object;
- private final Image image;
+ @val T object;
+ @val Image image;
Label(Image image, T object, Function toStringMapper, int horizontalAlignment) {
super(toStringMapper.apply(object), getImageIcon(image), horizontalAlignment);
@@ -131,7 +127,7 @@ private static ImageIcon getImageIcon(Image image) {
}
private static ImageIcon resizeIcon(ImageIcon icon, int width, int height) {
- return new ImageIcon( icon.getImage().getScaledInstance(width, height, java.awt.Image.SCALE_SMOOTH));
+ return new ImageIcon(icon.getImage().getScaledInstance(width, height, java.awt.Image.SCALE_SMOOTH));
}
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/LogTextAppender.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/LogTextAppender.java
index fcb428d8..71e6bf63 100644
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/LogTextAppender.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/LogTextAppender.java
@@ -1,20 +1,17 @@
package org.lodder.subtools.multisubdownloader.gui.extra;
+import javax.swing.*;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
-import javax.swing.JTextArea;
-import javax.swing.SwingUtilities;
-
-import org.slf4j.LoggerFactory;
-
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.encoder.EchoEncoder;
import ch.qos.logback.core.encoder.Encoder;
+import org.slf4j.LoggerFactory;
public class LogTextAppender extends AppenderBase {
private final Encoder encoder = new EchoEncoder<>();
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/MemoryFolderChooser.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/MemoryFolderChooser.java
index bda17fb2..43639260 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/MemoryFolderChooser.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/MemoryFolderChooser.java
@@ -11,8 +11,8 @@
public class MemoryFolderChooser {
- private final JFileChooser chooser;
private static MemoryFolderChooser instance;
+ private final JFileChooser chooser;
private File memory;
private MemoryFolderChooser() {
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PanelCheckBox.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PanelCheckBox.java
index dc7db710..63ec8b32 100644
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PanelCheckBox.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PanelCheckBox.java
@@ -1,39 +1,26 @@
package org.lodder.subtools.multisubdownloader.gui.extra;
-import java.io.Serial;
-
-import javax.swing.JCheckBox;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-import javax.swing.JSeparator;
-import javax.swing.SwingConstants;
-
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jcheckbox.JCheckBoxExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jcomponent.JComponentExtension;
-
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.LayoutManager;
+import javax.swing.*;
+import java.awt.*;
import java.awt.event.ContainerEvent;
import java.awt.event.ContainerListener;
+import java.io.Serial;
-import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
-import lombok.experimental.ExtensionMethod;
+import manifold.ext.props.rt.api.val;
import net.miginfocom.swing.MigLayout;
-@ExtensionMethod({ JComponentExtension.class, JCheckBoxExtension.class })
public class PanelCheckBox extends JPanel {
@Serial
private static final long serialVersionUID = 1L;
private final JCheckBox checkbox;
- @Getter
- private final JPanel panel;
+ @val JPanel panel;
- private PanelCheckBox(JCheckBox checkbox, boolean panelOnNewLine, LayoutManager panelLayout, boolean addVerticalSeparator, int leftGap) {
+ private PanelCheckBox(JCheckBox checkbox, boolean panelOnNewLine, LayoutManager panelLayout,
+ boolean addVerticalSeparator, int leftGap) {
super(new MigLayout("insets 0, novisualpadding, fillx"));
this.checkbox = checkbox;
this.panel = new JPanel(panelLayout) {
@@ -52,7 +39,7 @@ protected void addImpl(Component comp, Object constraints, int index) {
super.addImpl(checkbox, panelOnNewLine ? "span" : "", -1);
super.addImpl(panel, "span, growx, " + (addVerticalSeparator ? "" : "gapx " + leftGap), -1);
checkbox.addCheckedChangeListener(selected -> setEnabledChildren(panel, selected));
- JComponentExtension.setRecursive(this, this::addContainerListener);
+ this.setRecursive(this::addContainerListener);
setEnabledChildren(panel, isSelected());
}
@@ -144,7 +131,7 @@ public JPanel addTo(JComponent component) {
public JPanel addTo(JComponent component, Object constraints) {
PanelCheckBox panelCheckBox = build();
component.add(panelCheckBox, constraints);
- return panelCheckBox.getPanel();
+ return panelCheckBox.panel;
}
@Override
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PartialDisableComboBox.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PartialDisableComboBox.java
index 10bcfa4d..81bd7b4e 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PartialDisableComboBox.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PartialDisableComboBox.java
@@ -10,7 +10,6 @@
import java.util.stream.IntStream;
/**
- *
* @author author
*/
public class PartialDisableComboBox extends JComboBox {
@@ -27,7 +26,8 @@ public PartialDisableComboBox(T[] items) {
private static final long serialVersionUID = -2774241371293899669L;
@Override
- public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+ public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
+ boolean cellHasFocus) {
Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
boolean disabled = index >= 0 && index < itemsState.size() && !itemsState.get(index);
c.setEnabled(!disabled);
@@ -102,4 +102,8 @@ private int requireValidIndex(int index) {
}
return index;
}
+
+ public T getSelectedItem() {
+ return (T) super.getSelectedItem();
+ }
}
\ No newline at end of file
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PopupListener.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PopupListener.java
index 2e3174e6..4f96a4e1 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PopupListener.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/PopupListener.java
@@ -24,8 +24,8 @@ public void mouseReleased(MouseEvent e) {
private synchronized void showPopup(MouseEvent e) {
if (e.isPopupTrigger()
- && e.getComponent() instanceof CustomTable customTable
- && customTable.getModel().getRowCount() > 0) {
+ && e.getComponent() instanceof CustomTable customTable
+ && customTable.getModel().getRowCount() > 0) {
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/TitlePanel.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/TitlePanel.java
index 6c981d25..9ddd22ee 100644
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/TitlePanel.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/TitlePanel.java
@@ -1,32 +1,22 @@
package org.lodder.subtools.multisubdownloader.gui.extra;
+import javax.swing.*;
+import java.awt.*;
import java.io.Serial;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JSeparator;
-
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jcheckbox.JCheckBoxExtension;
-import org.lodder.subtools.multisubdownloader.gui.jcomponent.jcomponent.JComponentExtension;
-
-import java.awt.Container;
-import java.awt.LayoutManager;
-
-import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
-import lombok.experimental.ExtensionMethod;
+import manifold.ext.props.rt.api.var;
import net.miginfocom.swing.MigLayout;
-@ExtensionMethod({ JComponentExtension.class, JCheckBoxExtension.class })
public class TitlePanel extends JPanel {
@Serial
private static final long serialVersionUID = 1L;
- @Getter
- private final JPanel panel;
+ @var JPanel panel;
- private TitlePanel(String title, LayoutManager panelLayout, int marginTop, int marginLeft, int marginBottom, int marginRight) {
+ private TitlePanel(String title, LayoutManager panelLayout, int marginTop, int marginLeft, int marginBottom,
+ int marginRight) {
super(new MigLayout("fillx, nogrid, insets %s %s %s %s".formatted(getPadding(marginTop),
getPadding(marginLeft), getPadding(marginBottom), getPadding(marginRight))));
super.add(new JLabel(title));
@@ -148,13 +138,15 @@ public JPanel addTo(Container component) {
public JPanel addTo(Container component, Object constraints) {
if (panelLayout == null) {
panelLayout = new MigLayout(
- (fillContents ? "fill," : "") + (useGrid ? "" : "nogrid,") + "insets %s %s %s %s".formatted(getPadding(paddingTop),
+ (fillContents ? "fill," : "") + (useGrid ? "" : "nogrid,") +
+ "insets %s %s %s %s".formatted(getPadding(paddingTop),
getPadding(paddingLeft), getPadding(paddingBottom), getPadding(paddingRight)),
panelColumnConstraints);
}
- TitlePanel titlePanel = new TitlePanel(title, panelLayout, marginTop, marginLeft, marginBottom, marginRight);
+ TitlePanel titlePanel =
+ new TitlePanel(title, panelLayout, marginTop, marginLeft, marginBottom, marginRight);
component.add(titlePanel, constraints);
- return titlePanel.getPanel();
+ return titlePanel.panel;
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/progress/StatusLabel.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/progress/StatusLabel.java
index 03ab0cca..cee0d2b1 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/progress/StatusLabel.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/progress/StatusLabel.java
@@ -1,6 +1,6 @@
package org.lodder.subtools.multisubdownloader.gui.extra.progress;
-import javax.swing.JLabel;
+import javax.swing.*;
import java.io.Serial;
public class StatusLabel extends JLabel implements Messenger {
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/progress/StatusMessenger.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/progress/StatusMessenger.java
index 769aa2f6..d4aeffa0 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/progress/StatusMessenger.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/progress/StatusMessenger.java
@@ -23,7 +23,7 @@ public void removeListener(Messenger sm) {
@Override
public void message(String message) {
synchronized (statusMessengers) {
- statusMessengers.forEach(sm -> sm.message(message));
+ statusMessengers.forEach(sm -> sm.message(message));
}
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/CustomColumnName.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/CustomColumnName.java
index 160cce7b..08e657df 100644
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/CustomColumnName.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/CustomColumnName.java
@@ -1,10 +1,10 @@
package org.lodder.subtools.multisubdownloader.gui.extra.table;
-public interface CustomColumnName {
-
- String getColumnName();
+import manifold.ext.props.rt.api.val;
- boolean isEditable();
+public interface CustomColumnName {
- Class> getC();
+ @val String columnName;
+ @val boolean editable;
+ @val Class> clazz;
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/CustomTable.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/CustomTable.java
index 63ab5120..48f92656 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/CustomTable.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/CustomTable.java
@@ -1,24 +1,24 @@
package org.lodder.subtools.multisubdownloader.gui.extra.table;
+import java.awt.event.MouseEvent;
import java.io.Serial;
-import java.util.HashMap;
+import java.util.EnumMap;
import java.util.Map;
import java.util.stream.IntStream;
-import java.awt.event.MouseEvent;
-
public class CustomTable extends ZebraJTable {
@Serial
private static final long serialVersionUID = -3889524906608098585L;
- private final Map columnSettings = new HashMap<>();
private static final int MAX_WIDTH = 2147483647;
private static final int MIN_WIDTH = 15;
private static final int PREFERRED_WIDTH = 75;
+ private final Map columnSettings = new EnumMap<>(SearchColumnName.class);
+
public int getColumnIdByName(CustomColumnName customColumnName) {
return IntStream.range(0, this.getColumnCount())
- .filter(i -> this.getColumnName(i).equals(customColumnName.getColumnName())).findFirst()
+ .filter(i -> this.getColumnName(i).equals(customColumnName.columnName)).findFirst()
.orElse(-1);
}
@@ -33,7 +33,7 @@ public void setColumnVisibility(SearchColumnName searchColumnName, boolean visib
public void hideColumn(SearchColumnName searchColumnName) {
int columnId = getColumnIdByName(searchColumnName);
if (columnId > -1) {
- columnSettings.put(searchColumnName, new int[] {
+ columnSettings.put(searchColumnName, new int[]{
getColumnModel().getColumn(columnId).getMaxWidth(),
getColumnModel().getColumn(columnId).getMinWidth(),
getColumnModel().getColumn(columnId).getPreferredWidth() });
@@ -63,7 +63,7 @@ public boolean isHideColumn(SearchColumnName searchColumnName) {
int columnId = getColumnIdByName(searchColumnName);
if (columnId > -1) {
return getColumnModel().getColumn(columnId).getMinWidth() == 0
- && getColumnModel().getColumn(columnId).getPreferredWidth() == 0;
+ && getColumnModel().getColumn(columnId).getPreferredWidth() == 0;
}
return true;
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SearchColumnName.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SearchColumnName.java
index 576603ba..3139f1b7 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SearchColumnName.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SearchColumnName.java
@@ -1,17 +1,14 @@
package org.lodder.subtools.multisubdownloader.gui.extra.table;
-import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
+import manifold.ext.props.rt.api.override;
+import manifold.ext.props.rt.api.val;
import org.lodder.subtools.multisubdownloader.Messages;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
public enum SearchColumnName implements CustomColumnName {
RELEASE("App.Release", String.class, false),
@@ -27,17 +24,17 @@ public enum SearchColumnName implements CustomColumnName {
SCORE("SearchColumnName.Score", Integer.class, false);
private static final Map MAP =
- Arrays.stream(SearchColumnName.values()).collect(Collectors.toMap(SearchColumnName::getColumnName, Function.identity()));
+ SearchColumnName.values().stream()
+ .collect(Collectors.toMap(SearchColumnName::getColumnName, Function.identity()));
- private final String columnNameCode;
- @Getter
- private final Class> c;
- @Getter
- private final boolean editable;
+ @val @override String columnName;
+ @val @override Class> clazz;
+ @val @override boolean editable;
- @Override
- public String getColumnName() {
- return Messages.getString(columnNameCode);
+ SearchColumnName(String columnNameCode, Class> clazz, boolean editable) {
+ this.columnName = Messages.getText(columnNameCode);
+ this.clazz = clazz;
+ this.editable = editable;
}
public static Optional getForColumnName(String columnName) {
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SubtitleTableColumnName.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SubtitleTableColumnName.java
index d50b005f..00ba4652 100644
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SubtitleTableColumnName.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SubtitleTableColumnName.java
@@ -1,40 +1,41 @@
package org.lodder.subtools.multisubdownloader.gui.extra.table;
-import java.util.Arrays;
import java.util.function.Function;
+import manifold.ext.props.rt.api.override;
+import manifold.ext.props.rt.api.val;
import org.lodder.subtools.multisubdownloader.Messages;
import org.lodder.subtools.sublibrary.model.Subtitle;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-@RequiredArgsConstructor
public enum SubtitleTableColumnName implements CustomColumnName {
- SELECT("App.Select", Boolean.class, true, subtitle -> false),
+ SELECT("App.Select", Boolean.class, true, _ -> false),
SCORE("SubtitleTableColumnName.Score", Integer.class, false, Subtitle::getScore),
FILENAME("SubtitleTableColumnName.Filename", String.class, false, Subtitle::getFileName),
SOURCE("SubtitleTableColumnName.Source", String.class, false, Subtitle::getSubtitleSource),
UPLOADER("SubtitleTableColumnName.Uploader", String.class, false, Subtitle::getUploader),
- HEARINGIMPAIRED("SubtitleTableColumnName.hearingimpaired", Boolean.class, false, Subtitle::isHearingImpaired),
+ HEARINGIMPAIRED("SubtitleTableColumnName.hearingImpaired", Boolean.class, false, Subtitle::isHearingImpaired),
QUALITY("SubtitleTableColumnName.Quality", String.class, false, Subtitle::getQuality),
RELEASEGROUP("SubtitleTableColumnName.Releasegroup", String.class, false, Subtitle::getReleaseGroup);
- private final String columnNameCode;
- @Getter
- private final Class> c;
- @Getter
- private final boolean editable;
- @Getter
- private final Function valueFunction;
-
- @Override
- public String getColumnName() {
- return Messages.getString(columnNameCode);
+
+ @val @override String columnName;
+ @val @override Class> clazz;
+ @val @override boolean editable;
+ @val Function valueFunction;
+
+ SubtitleTableColumnName(String columnNameCode, Class> clazz, boolean editable,
+ Function valueFunction) {
+ this.columnName = Messages.getText(columnNameCode);
+ this.clazz = clazz;
+ this.editable = editable;
+ this.valueFunction = valueFunction;
}
public static SubtitleTableColumnName forColumnName(String columnName) {
- return Arrays.stream(SubtitleTableColumnName.values()).filter(stcn -> stcn.getColumnName().equals(columnName)).findAny().orElseThrow();
+ return SubtitleTableColumnName.values().stream()
+ .filter(stcn -> stcn.columnName.equals(columnName))
+ .findAny()
+ .orElseThrow();
}
public Object getValue(Subtitle subtitle) {
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SubtitleTableModel.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SubtitleTableModel.java
index 8a591737..babe1d33 100644
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SubtitleTableModel.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/SubtitleTableModel.java
@@ -2,48 +2,47 @@
import static org.lodder.subtools.multisubdownloader.gui.extra.table.SubtitleTableColumnName.*;
+import javax.swing.table.*;
import java.io.Serial;
-import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;
-import javax.swing.table.DefaultTableModel;
-
import org.lodder.subtools.sublibrary.model.Subtitle;
-import lombok.experimental.ExtensionMethod;
-
-@ExtensionMethod({ Arrays.class })
public class SubtitleTableModel extends DefaultTableModel {
@Serial
private static final long serialVersionUID = 4205143311042280620L;
- private final static SubtitleTableColumnName[] COLUMNS =
- Stream.of(SELECT, SCORE, FILENAME, RELEASEGROUP, QUALITY, SOURCE, UPLOADER, HEARINGIMPAIRED).toArray(SubtitleTableColumnName[]::new);
+ private static final SubtitleTableColumnName[] COLUMNS =
+ Stream.of(SELECT, SCORE, FILENAME, RELEASEGROUP, QUALITY, SOURCE, UPLOADER, HEARINGIMPAIRED)
+ .toArray(SubtitleTableColumnName[]::new);
public SubtitleTableModel(Object[][] data, String[] columnNames) {
super(data, columnNames);
}
public static SubtitleTableModel getDefaultSubtitleTableModel() {
- String[] columnNames = Arrays.stream(COLUMNS).map(SubtitleTableColumnName::getColumnName).toArray(String[]::new);
- return new SubtitleTableModel(new Object[][] {}, columnNames);
+ String[] columnNames = COLUMNS.stream().map(SubtitleTableColumnName::getColumnName).toArray(String[]::new);
+ return new SubtitleTableModel(new Object[][]{}, columnNames);
}
public void addRow(Subtitle subtitle) {
- Object[] row = IntStream.range(0, getColumnCount()).mapToObj(this::getColumnName).map(SubtitleTableColumnName::forColumnName)
- .map(stcn -> stcn.getValue(subtitle)).toArray(Object[]::new);
+ Object[] row = IntStream.range(0, getColumnCount())
+ .mapToObj(this::getColumnName)
+ .map(SubtitleTableColumnName::forColumnName)
+ .map(stcn -> stcn.getValue(subtitle))
+ .toArray(Object[]::new);
this.addRow(row);
}
@Override
public Class> getColumnClass(int columnIndex) {
- return COLUMNS[columnIndex].getC();
+ return COLUMNS[columnIndex].clazz;
}
@Override
public boolean isCellEditable(int row, int column) {
- return COLUMNS[column].isEditable();
+ return COLUMNS[column].editable;
}
}
diff --git a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/VideoTableModel.java b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/VideoTableModel.java
index bed205f3..ab5bb654 100755
--- a/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/VideoTableModel.java
+++ b/MultiSubDownloader/src/main/java/org/lodder/subtools/multisubdownloader/gui/extra/table/VideoTableModel.java
@@ -1,5 +1,7 @@
package org.lodder.subtools.multisubdownloader.gui.extra.table;
+import static org.lodder.subtools.multisubdownloader.gui.extra.table.SearchColumnName.*;
+
import javax.swing.table.*;
import java.io.Serial;
import java.util.ArrayList;
@@ -13,8 +15,8 @@
import java.util.stream.Collectors;
import java.util.stream.IntStream;
-import lombok.Getter;
-import lombok.Setter;
+import manifold.ext.props.rt.api.get;
+import manifold.ext.props.rt.api.var;
import org.lodder.subtools.multisubdownloader.UserInteractionHandler;
import org.lodder.subtools.sublibrary.model.MovieRelease;
import org.lodder.subtools.sublibrary.model.Release;
@@ -23,31 +25,29 @@
public class VideoTableModel extends DefaultTableModel {
- @Serial
- private static final long serialVersionUID = 4205143311042280620L;
+ @Serial private static final long serialVersionUID = 4205143311042280620L;
private static final List SHOW_COLUMNS =
- List.of(SearchColumnName.TYPE, SearchColumnName.RELEASE, SearchColumnName.FILENAME, SearchColumnName.TITLE, SearchColumnName.SEASON,
- SearchColumnName.EPISODE, SearchColumnName.FOUND, SearchColumnName.SELECT, SearchColumnName.OBJECT);
+ List.of(TYPE, RELEASE, FILENAME, TITLE, SEASON, EPISODE, FOUND, SELECT, OBJECT);
- private static final List SUBTITLE_COLUMNS =
- List.of(SearchColumnName.FILENAME, SearchColumnName.SOURCE, SearchColumnName.SCORE, SearchColumnName.SELECT, SearchColumnName.OBJECT);
+ private static final List SUBTITLE_COLUMNS = List.of(FILENAME, SOURCE, SCORE, SELECT, OBJECT);
private static final Map SHOW_COLUMNS_INDEX = IntStream.range(0, SHOW_COLUMNS.size())
- .collect(() -> new EnumMap<>(SearchColumnName.class), (map, i) -> map.put(SHOW_COLUMNS.get(i), i), (l, r) -> {
- throw new IllegalArgumentException("Duplicate keys [%s] and [%s]".formatted(l, r));
- });
+ .collect(() -> new EnumMap<>(SearchColumnName.class), (map, i) -> map.put(SHOW_COLUMNS.get(i), i),
+ (l, r) -> {
+ throw new IllegalArgumentException("Duplicate keys [$l] and [$r]");
+ });
private final Class>[] columnTypes;
private final Boolean[] columnEditables;
private final Map rowMap = new LinkedHashMap<>();
+
private boolean showOnlyFound = false;
- @Setter
- private UserInteractionHandler userInteractionHandler;
+ @var UserInteractionHandler userInteractionHandler;
private VideoTableModel(List searchColumnNames) {
- super(new Object[][] {}, searchColumnNames.stream().map(SearchColumnName::getColumnName).toArray(String[]::new));
- this.columnTypes = searchColumnNames.stream().map(SearchColumnName::getC).toArray(Class>[]::new);
+ super(new Object[][]{}, searchColumnNames.stream().map(SearchColumnName::getColumnName).toArray(String[]::new));
+ this.columnTypes = searchColumnNames.stream().map(SearchColumnName::getClazz).toArray(Class>[]::new);
this.columnEditables = searchColumnNames.stream().map(SearchColumnName::isEditable).toArray(Boolean[]::new);
}
@@ -77,7 +77,7 @@ public void addRow(Release release) {
if (!showOnlyFound || release.getMatchingSubCount() != 0) {
Row row = createRow(release);
rowMap.put(release, row);
- this.addRow(row.getRowObject());
+ this.addRow(row.rowObject);
}
}
}
@@ -89,38 +89,32 @@ private Row createRow(Release release) {
private static class Row {
private final Release release;
private final UserInteractionHandler userInteractionHandler;
- @Getter
- public final Vector