Skip to content

Commit

Permalink
- store window pos
Browse files Browse the repository at this point in the history
  • Loading branch information
derreisende77 committed Aug 26, 2024
1 parent a17834d commit 1288990
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 1 deletion.
54 changes: 53 additions & 1 deletion src/main/java/mediathek/gui/dialog/DialogAddDownload.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import mediathek.mainwindow.MediathekGui;
import mediathek.tool.*;
import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.sync.LockMode;
import org.apache.commons.lang3.SystemUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Expand All @@ -32,12 +33,15 @@
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.io.File;
import java.nio.file.FileStore;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.CancellationException;
Expand Down Expand Up @@ -73,6 +77,35 @@ public class DialogAddDownload extends JDialog {
private boolean restoreFetchSize;
private boolean highQualityMandated;

private static class DialogPositionComponentListener extends ComponentAdapter {
@Override
public void componentResized(ComponentEvent e) {
storeWindowPosition(e);
}

@Override
public void componentMoved(ComponentEvent e) {
storeWindowPosition(e);
}

private void storeWindowPosition(ComponentEvent e) {
var config = ApplicationConfiguration.getConfiguration();
var component = e.getComponent();

var dims = component.getSize();
var loc = component.getLocation();
try {
config.lock(LockMode.WRITE);
config.setProperty(ApplicationConfiguration.AddDownloadDialog.WIDTH, dims.width);
config.setProperty(ApplicationConfiguration.AddDownloadDialog.HEIGHT, dims.height);
config.setProperty(ApplicationConfiguration.AddDownloadDialog.X, loc.x);
config.setProperty(ApplicationConfiguration.AddDownloadDialog.Y, loc.y);
} finally {
config.unlock(LockMode.WRITE);
}
}
}

public DialogAddDownload(@NotNull Frame parent, @NotNull DatenFilm film, @Nullable DatenPset pSet, @NotNull Optional<FilmResolution.Enum> requestedResolution) {
super(parent, true);
initComponents();
Expand All @@ -88,10 +121,29 @@ public DialogAddDownload(@NotNull Frame parent, @NotNull DatenFilm film, @Nullab
if (SystemUtils.IS_OS_MAC_OSX) {
pack();
}

restoreWindowSizeFromConfig();
setLocationRelativeTo(parent);

addComponentListener(new DialogPositionComponentListener());
}

private void restoreWindowSizeFromConfig() {
var config = ApplicationConfiguration.getConfiguration();
try {
config.lock(LockMode.READ);
final int width = config.getInt(ApplicationConfiguration.AddDownloadDialog.WIDTH);
final int height = config.getInt(ApplicationConfiguration.AddDownloadDialog.HEIGHT);
final int x = config.getInt(ApplicationConfiguration.AddDownloadDialog.X);
final int y = config.getInt(ApplicationConfiguration.AddDownloadDialog.Y);

setBounds(x, y, width, height);
} catch (NoSuchElementException ignored) {
//do not restore anything
} finally {
config.unlock(LockMode.READ);
}

}
public static void setModelPfad(String pfad, JComboBox<String> jcb) {
ArrayList<String> pfade = new ArrayList<>();
final boolean showLastUsedPath = ApplicationConfiguration.getConfiguration().getBoolean(ApplicationConfiguration.DOWNLOAD_SHOW_LAST_USED_PATH, true);
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/mediathek/tool/ApplicationConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,13 @@ public static class FilterDialog {
public static final String VISIBLE = "application.ui.filter_dialog.visible";
}

public static class AddDownloadDialog {
public static final String WIDTH = "application.ui.adddownload_dialog.width";
public static final String HEIGHT = "application.ui.adddownload_dialog.height";
public static final String X = "application.ui.adddownload_dialog.location.x";
public static final String Y = "application.ui.adddownload_dialog.location.y";
}

public static class FilmInfoDialog {
public static final String VISIBLE = "film.information.visible";
public static final String X = "film.information.location.x";
Expand Down

0 comments on commit 1288990

Please sign in to comment.