diff --git a/.gitignore b/.gitignore index 19c2325..d39e785 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ .idea/ out/ META-INF/ -target/ \ No newline at end of file +target/ +gui/target/ +patcher/target/ \ No newline at end of file diff --git a/gui/pom.xml b/gui/pom.xml new file mode 100644 index 0000000..789d18a --- /dev/null +++ b/gui/pom.xml @@ -0,0 +1,129 @@ + + + 4.0.0 + + + de.mc8051 + arma3launcher + 1.0-SNAPSHOT + + + gui + 0.1.1000 + + + + jitpack.io + https://jitpack.io + + + + + + org.json + json + 20190722 + + + com.typesafe + config + 1.4.0 + + + com.formdev + flatlaf + 0.28 + + + com.github.RalleYTN + SimpleRegistry + java8-7949ac7f06-1 + + + org.ini4j + ini4j + 0.5.4 + + + com.github.Gurkengewuerz + zsyncer + 1de0d3f651 + + + com.jgoodies + jgoodies-forms + 1.9.0 + + + com.intellij + forms_rt + 7.0.3 + + + + + + + src/main/resources + true + + **/project.properties + + + + + src/main/resources + false + + **/* + + + + src/main/resources/icons + false + + **/* + + + + + + maven-compiler-plugin + 3.5.1 + + 12 + 12 + + + + maven-assembly-plugin + 2.6 + + false + ${parent.artifactId}-${project.artifactId} + + + jar-with-dependencies + + + + + ${project.groupId}.${parent.artifactId}.ArmA3Launcher + + + + + + assamble + + single + + package + + + + + + \ No newline at end of file diff --git a/src/main/java/de/mc8051/arma3launcher/ArmA3Launcher.java b/gui/src/main/java/de/mc8051/arma3launcher/ArmA3Launcher.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/ArmA3Launcher.java rename to gui/src/main/java/de/mc8051/arma3launcher/ArmA3Launcher.java diff --git a/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/LauncherGUI.form rename to gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.form diff --git a/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java similarity index 99% rename from src/main/java/de/mc8051/arma3launcher/LauncherGUI.java rename to gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java index fb8d11c..35f15f5 100644 --- a/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java +++ b/gui/src/main/java/de/mc8051/arma3launcher/LauncherGUI.java @@ -1,5 +1,6 @@ package de.mc8051.arma3launcher; +import com.sun.management.OperatingSystemMXBean; import de.mc8051.arma3launcher.interfaces.Observer; import de.mc8051.arma3launcher.model.JCheckBoxTree; import de.mc8051.arma3launcher.model.ModListRenderer; @@ -737,7 +738,7 @@ public class LauncherGUI implements Observer { // -------------------------------- SPINNER -------------------------------- - com.sun.management.OperatingSystemMXBean mxbean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); + OperatingSystemMXBean mxbean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); int memorySize = (int) (mxbean.getTotalPhysicalMemorySize() / 1024); initSpinner(settingsMaxMemSpinner, "MaxMem", Parameter.ParameterType.ARMA, -1, memorySize); diff --git a/src/main/java/de/mc8051/arma3launcher/Parameter.java b/gui/src/main/java/de/mc8051/arma3launcher/Parameter.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/Parameter.java rename to gui/src/main/java/de/mc8051/arma3launcher/Parameter.java diff --git a/src/main/java/de/mc8051/arma3launcher/SettingsHandler.java b/gui/src/main/java/de/mc8051/arma3launcher/SettingsHandler.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/SettingsHandler.java rename to gui/src/main/java/de/mc8051/arma3launcher/SettingsHandler.java diff --git a/src/main/java/de/mc8051/arma3launcher/SteamUtils.java b/gui/src/main/java/de/mc8051/arma3launcher/SteamUtils.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/SteamUtils.java rename to gui/src/main/java/de/mc8051/arma3launcher/SteamUtils.java diff --git a/src/main/java/de/mc8051/arma3launcher/interfaces/Observable.java b/gui/src/main/java/de/mc8051/arma3launcher/interfaces/Observable.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/interfaces/Observable.java rename to gui/src/main/java/de/mc8051/arma3launcher/interfaces/Observable.java diff --git a/src/main/java/de/mc8051/arma3launcher/interfaces/Observer.java b/gui/src/main/java/de/mc8051/arma3launcher/interfaces/Observer.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/interfaces/Observer.java rename to gui/src/main/java/de/mc8051/arma3launcher/interfaces/Observer.java diff --git a/src/main/java/de/mc8051/arma3launcher/model/JCheckBoxTree.java b/gui/src/main/java/de/mc8051/arma3launcher/model/JCheckBoxTree.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/model/JCheckBoxTree.java rename to gui/src/main/java/de/mc8051/arma3launcher/model/JCheckBoxTree.java diff --git a/src/main/java/de/mc8051/arma3launcher/model/ModListRenderer.java b/gui/src/main/java/de/mc8051/arma3launcher/model/ModListRenderer.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/model/ModListRenderer.java rename to gui/src/main/java/de/mc8051/arma3launcher/model/ModListRenderer.java diff --git a/src/main/java/de/mc8051/arma3launcher/model/MultiSelectModel.java b/gui/src/main/java/de/mc8051/arma3launcher/model/MultiSelectModel.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/model/MultiSelectModel.java rename to gui/src/main/java/de/mc8051/arma3launcher/model/MultiSelectModel.java diff --git a/src/main/java/de/mc8051/arma3launcher/model/PresetListRenderer.java b/gui/src/main/java/de/mc8051/arma3launcher/model/PresetListRenderer.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/model/PresetListRenderer.java rename to gui/src/main/java/de/mc8051/arma3launcher/model/PresetListRenderer.java diff --git a/src/main/java/de/mc8051/arma3launcher/model/PresetTableModel.java b/gui/src/main/java/de/mc8051/arma3launcher/model/PresetTableModel.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/model/PresetTableModel.java rename to gui/src/main/java/de/mc8051/arma3launcher/model/PresetTableModel.java diff --git a/src/main/java/de/mc8051/arma3launcher/model/RepositoryTreeNode.java b/gui/src/main/java/de/mc8051/arma3launcher/model/RepositoryTreeNode.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/model/RepositoryTreeNode.java rename to gui/src/main/java/de/mc8051/arma3launcher/model/RepositoryTreeNode.java diff --git a/src/main/java/de/mc8051/arma3launcher/model/ServerTableModel.java b/gui/src/main/java/de/mc8051/arma3launcher/model/ServerTableModel.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/model/ServerTableModel.java rename to gui/src/main/java/de/mc8051/arma3launcher/model/ServerTableModel.java diff --git a/src/main/java/de/mc8051/arma3launcher/model/TabbedPaneUI.java b/gui/src/main/java/de/mc8051/arma3launcher/model/TabbedPaneUI.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/model/TabbedPaneUI.java rename to gui/src/main/java/de/mc8051/arma3launcher/model/TabbedPaneUI.java diff --git a/src/main/java/de/mc8051/arma3launcher/objects/AbstractMod.java b/gui/src/main/java/de/mc8051/arma3launcher/objects/AbstractMod.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/objects/AbstractMod.java rename to gui/src/main/java/de/mc8051/arma3launcher/objects/AbstractMod.java diff --git a/src/main/java/de/mc8051/arma3launcher/objects/Changelog.java b/gui/src/main/java/de/mc8051/arma3launcher/objects/Changelog.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/objects/Changelog.java rename to gui/src/main/java/de/mc8051/arma3launcher/objects/Changelog.java diff --git a/src/main/java/de/mc8051/arma3launcher/objects/Mod.java b/gui/src/main/java/de/mc8051/arma3launcher/objects/Mod.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/objects/Mod.java rename to gui/src/main/java/de/mc8051/arma3launcher/objects/Mod.java diff --git a/src/main/java/de/mc8051/arma3launcher/objects/ModFile.java b/gui/src/main/java/de/mc8051/arma3launcher/objects/ModFile.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/objects/ModFile.java rename to gui/src/main/java/de/mc8051/arma3launcher/objects/ModFile.java diff --git a/src/main/java/de/mc8051/arma3launcher/objects/Modset.java b/gui/src/main/java/de/mc8051/arma3launcher/objects/Modset.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/objects/Modset.java rename to gui/src/main/java/de/mc8051/arma3launcher/objects/Modset.java diff --git a/src/main/java/de/mc8051/arma3launcher/objects/Server.java b/gui/src/main/java/de/mc8051/arma3launcher/objects/Server.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/objects/Server.java rename to gui/src/main/java/de/mc8051/arma3launcher/objects/Server.java diff --git a/src/main/java/de/mc8051/arma3launcher/repo/DownloadStatus.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/DownloadStatus.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/repo/DownloadStatus.java rename to gui/src/main/java/de/mc8051/arma3launcher/repo/DownloadStatus.java diff --git a/src/main/java/de/mc8051/arma3launcher/repo/FileChecker.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/FileChecker.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/repo/FileChecker.java rename to gui/src/main/java/de/mc8051/arma3launcher/repo/FileChecker.java diff --git a/src/main/java/de/mc8051/arma3launcher/repo/RepositoryManger.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/RepositoryManger.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/repo/RepositoryManger.java rename to gui/src/main/java/de/mc8051/arma3launcher/repo/RepositoryManger.java diff --git a/src/main/java/de/mc8051/arma3launcher/repo/Response.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/Response.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/repo/Response.java rename to gui/src/main/java/de/mc8051/arma3launcher/repo/Response.java diff --git a/src/main/java/de/mc8051/arma3launcher/repo/SyncList.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/SyncList.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/repo/SyncList.java rename to gui/src/main/java/de/mc8051/arma3launcher/repo/SyncList.java diff --git a/src/main/java/de/mc8051/arma3launcher/repo/SyncListener.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/SyncListener.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/repo/SyncListener.java rename to gui/src/main/java/de/mc8051/arma3launcher/repo/SyncListener.java diff --git a/src/main/java/de/mc8051/arma3launcher/repo/SyncObserver.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/SyncObserver.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/repo/SyncObserver.java rename to gui/src/main/java/de/mc8051/arma3launcher/repo/SyncObserver.java diff --git a/src/main/java/de/mc8051/arma3launcher/repo/Syncer.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/Syncer.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/repo/Syncer.java rename to gui/src/main/java/de/mc8051/arma3launcher/repo/Syncer.java diff --git a/src/main/java/de/mc8051/arma3launcher/repo/Updater.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/Updater.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/repo/Updater.java rename to gui/src/main/java/de/mc8051/arma3launcher/repo/Updater.java diff --git a/src/main/java/de/mc8051/arma3launcher/repo/Version.java b/gui/src/main/java/de/mc8051/arma3launcher/repo/Version.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/repo/Version.java rename to gui/src/main/java/de/mc8051/arma3launcher/repo/Version.java diff --git a/src/main/java/de/mc8051/arma3launcher/steam/SteamTimer.java b/gui/src/main/java/de/mc8051/arma3launcher/steam/SteamTimer.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/steam/SteamTimer.java rename to gui/src/main/java/de/mc8051/arma3launcher/steam/SteamTimer.java diff --git a/src/main/java/de/mc8051/arma3launcher/utils/Callback.java b/gui/src/main/java/de/mc8051/arma3launcher/utils/Callback.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/utils/Callback.java rename to gui/src/main/java/de/mc8051/arma3launcher/utils/Callback.java diff --git a/src/main/java/de/mc8051/arma3launcher/utils/FileUtils.java b/gui/src/main/java/de/mc8051/arma3launcher/utils/FileUtils.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/utils/FileUtils.java rename to gui/src/main/java/de/mc8051/arma3launcher/utils/FileUtils.java diff --git a/src/main/java/de/mc8051/arma3launcher/utils/Humanize.java b/gui/src/main/java/de/mc8051/arma3launcher/utils/Humanize.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/utils/Humanize.java rename to gui/src/main/java/de/mc8051/arma3launcher/utils/Humanize.java diff --git a/src/main/java/de/mc8051/arma3launcher/utils/ImageUtils.java b/gui/src/main/java/de/mc8051/arma3launcher/utils/ImageUtils.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/utils/ImageUtils.java rename to gui/src/main/java/de/mc8051/arma3launcher/utils/ImageUtils.java diff --git a/src/main/java/de/mc8051/arma3launcher/utils/LangUtils.java b/gui/src/main/java/de/mc8051/arma3launcher/utils/LangUtils.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/utils/LangUtils.java rename to gui/src/main/java/de/mc8051/arma3launcher/utils/LangUtils.java diff --git a/src/main/java/de/mc8051/arma3launcher/utils/TaskBarUtils.java b/gui/src/main/java/de/mc8051/arma3launcher/utils/TaskBarUtils.java similarity index 100% rename from src/main/java/de/mc8051/arma3launcher/utils/TaskBarUtils.java rename to gui/src/main/java/de/mc8051/arma3launcher/utils/TaskBarUtils.java diff --git a/src/main/resources/arma3launcher.json b/gui/src/main/resources/arma3launcher.json similarity index 100% rename from src/main/resources/arma3launcher.json rename to gui/src/main/resources/arma3launcher.json diff --git a/src/main/resources/disclaimer.html b/gui/src/main/resources/disclaimer.html similarity index 100% rename from src/main/resources/disclaimer.html rename to gui/src/main/resources/disclaimer.html diff --git a/src/main/resources/icons/changelog_16.png b/gui/src/main/resources/icons/changelog_16.png similarity index 100% rename from src/main/resources/icons/changelog_16.png rename to gui/src/main/resources/icons/changelog_16.png diff --git a/src/main/resources/icons/download_16.png b/gui/src/main/resources/icons/download_16.png similarity index 100% rename from src/main/resources/icons/download_16.png rename to gui/src/main/resources/icons/download_16.png diff --git a/src/main/resources/icons/github_32.png b/gui/src/main/resources/icons/github_32.png similarity index 100% rename from src/main/resources/icons/github_32.png rename to gui/src/main/resources/icons/github_32.png diff --git a/src/main/resources/icons/logo_256.png b/gui/src/main/resources/icons/logo_256.png similarity index 100% rename from src/main/resources/icons/logo_256.png rename to gui/src/main/resources/icons/logo_256.png diff --git a/src/main/resources/icons/logo_32.png b/gui/src/main/resources/icons/logo_32.png similarity index 100% rename from src/main/resources/icons/logo_32.png rename to gui/src/main/resources/icons/logo_32.png diff --git a/src/main/resources/icons/play_16.png b/gui/src/main/resources/icons/play_16.png similarity index 100% rename from src/main/resources/icons/play_16.png rename to gui/src/main/resources/icons/play_16.png diff --git a/src/main/resources/icons/preset_16.png b/gui/src/main/resources/icons/preset_16.png similarity index 100% rename from src/main/resources/icons/preset_16.png rename to gui/src/main/resources/icons/preset_16.png diff --git a/src/main/resources/icons/settings_16.png b/gui/src/main/resources/icons/settings_16.png similarity index 100% rename from src/main/resources/icons/settings_16.png rename to gui/src/main/resources/icons/settings_16.png diff --git a/src/main/resources/icons/twitter_32.png b/gui/src/main/resources/icons/twitter_32.png similarity index 100% rename from src/main/resources/icons/twitter_32.png rename to gui/src/main/resources/icons/twitter_32.png diff --git a/src/main/resources/lang_de_DE.properties b/gui/src/main/resources/lang_de_DE.properties similarity index 100% rename from src/main/resources/lang_de_DE.properties rename to gui/src/main/resources/lang_de_DE.properties diff --git a/src/main/resources/lang_en_US.properties b/gui/src/main/resources/lang_en_US.properties similarity index 100% rename from src/main/resources/lang_en_US.properties rename to gui/src/main/resources/lang_en_US.properties diff --git a/src/main/resources/project.properties b/gui/src/main/resources/project.properties similarity index 100% rename from src/main/resources/project.properties rename to gui/src/main/resources/project.properties diff --git a/patcher/src/main/java/de/mc8051/arma3launcher/Arma3LauncherPatcher.java b/patcher/src/main/java/de/mc8051/arma3launcher/Arma3LauncherPatcher.java new file mode 100644 index 0000000..c5bfcfa --- /dev/null +++ b/patcher/src/main/java/de/mc8051/arma3launcher/Arma3LauncherPatcher.java @@ -0,0 +1,197 @@ +/* + * MIT License + * + * Copyright (c) 2020-2020 Niklas Schütrumpf (Gurkengewuerz) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package de.mc8051.arma3launcher; + +import javax.imageio.ImageIO; +import javax.swing.*; +import java.awt.*; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.List; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.Flow; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Created by gurkengewuerz.de on 29.03.2020. + */ +public class Arma3LauncherPatcher { + + public static void main(String[] args) { + if (args.length != 2) { + Logger.getLogger(Arma3LauncherPatcher.class.getName()).log(Level.SEVERE, " "); + return; + } + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ignored) { + } + + JFrame frame = new JFrame("Auto Patcher"); + Patcher patcher = new Patcher(); + frame.setContentPane(patcher.mainpanel); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + frame.setMinimumSize(new Dimension(500, 100)); + frame.setResizable(false); + + frame.addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + + frame.dispose(); + } + }); + + frame.pack(); + frame.setIconImage(createIcon()); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + + HttpClient client = HttpClient.newHttpClient(); + try { + HttpRequest request = HttpRequest.newBuilder() + .uri(new URI(args[0])) + .GET() + .build(); + + File f = new File(args[1]); + + String fileName = Paths.get(f.getPath()).getFileName().toString(); + String fileExt = ""; + if (fileName.indexOf(".") > 0) { + fileExt = fileName.substring(fileName.lastIndexOf(".") + 1); + fileName = fileName.substring(0, fileName.lastIndexOf(".")); + } + + Path tempFile = Files.createTempFile(fileName, fileExt); + + HttpResponse response = client.send(request, responseInfo -> { + HttpResponse.BodyHandler bodyHandler = HttpResponse.BodyHandlers.ofFile(tempFile); + final String s = responseInfo.headers().firstValue("content-length").get(); + long contentSize = Long.parseLong(s); + return new DownloadObserver(bodyHandler.apply(responseInfo), contentSize, patcher.progressBar1); + }); + + if (response.statusCode() != 200) + throw new IllegalStateException("Download file is invalid. Got response code " + response.statusCode()); + + Files.copy(tempFile, f.toPath(), StandardCopyOption.REPLACE_EXISTING); + + run(f.getAbsolutePath()); + + JOptionPane.showMessageDialog( + frame, + "Launcher has been successfully updated.", + "Update", JOptionPane.INFORMATION_MESSAGE); + System.exit(0); + } catch (IOException | URISyntaxException | InterruptedException | IllegalStateException e) { + Logger.getLogger(Arma3LauncherPatcher.class.getName()).log(Level.SEVERE, null, e); + JOptionPane.showMessageDialog( + null, + "An error occured.\n" + e.getMessage() + "\nUpdate process aborded.", + "Update failed", JOptionPane.ERROR_MESSAGE); + System.exit(1); + } + } + + public static void run(String path) { + try { + Runtime.getRuntime().exec("\"" + System.getProperty("java.home") + File.separator + "bin" + File.separator + "java\" -jar \"" + path + "\""); + } catch (IOException ignored) { + } + } + + static BufferedImage createIcon() { + try { + return ImageIO.read(Arma3LauncherPatcher.class.getResourceAsStream("/icons/logo_32.png")); + } catch (IOException e) { + Logger.getLogger(Arma3LauncherPatcher.class.getName()).log(Level.SEVERE, null, e); + return null; + } + } + + private static class DownloadObserver implements HttpResponse.BodySubscriber { + + private int counter = 0; + private long total = 0L; + private long contentSize = 0L; + private HttpResponse.BodySubscriber subscriber; + private JProgressBar progressBar; + + public DownloadObserver(HttpResponse.BodySubscriber subscriber, long contentSize, JProgressBar progressBar) { + this.subscriber = subscriber; + this.contentSize = contentSize; + this.progressBar = progressBar; + } + + @Override + public void onSubscribe(Flow.Subscription subscription) { + subscriber.onSubscribe(subscription); + } + + @Override + public void onNext(List item) { + item.forEach((size) -> { + total += size.remaining(); + }); + + int progress = (int) (((double) total / (double) contentSize) * 100); + SwingUtilities.invokeLater(() -> progressBar.setValue(progress)); + + counter++; + subscriber.onNext(item); + } + + @Override + public void onError(Throwable throwable) { + subscriber.onError(throwable); + } + + @Override + public void onComplete() { + subscriber.onComplete(); + } + + @Override + public CompletionStage getBody() { + return subscriber.getBody(); + } + } +} diff --git a/patcher/src/main/java/de/mc8051/arma3launcher/Patcher.form b/patcher/src/main/java/de/mc8051/arma3launcher/Patcher.form new file mode 100644 index 0000000..3763fc0 --- /dev/null +++ b/patcher/src/main/java/de/mc8051/arma3launcher/Patcher.form @@ -0,0 +1,27 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/patcher/src/main/java/de/mc8051/arma3launcher/Patcher.java b/patcher/src/main/java/de/mc8051/arma3launcher/Patcher.java new file mode 100644 index 0000000..125a519 --- /dev/null +++ b/patcher/src/main/java/de/mc8051/arma3launcher/Patcher.java @@ -0,0 +1,35 @@ +/* + * MIT License + * + * Copyright (c) 2020-2020 Niklas Schütrumpf (Gurkengewuerz) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package de.mc8051.arma3launcher; + +import javax.swing.*; + +/** + * Created by gurkengewuerz.de on 29.03.2020. + */ +public class Patcher { + public JPanel mainpanel; + public JProgressBar progressBar1; +} diff --git a/patcher/src/main/resources/icons/logo_32.png b/patcher/src/main/resources/icons/logo_32.png new file mode 100644 index 0000000..446dca9 Binary files /dev/null and b/patcher/src/main/resources/icons/logo_32.png differ diff --git a/pom.xml b/pom.xml index babbbbf..21b6e4c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,114 +6,11 @@ de.mc8051 arma3launcher - 0.1.1000 + 1.0-SNAPSHOT + pom - - - jitpack.io - https://jitpack.io - - - - - - org.json - json - 20190722 - - - com.typesafe - config - 1.4.0 - - - com.formdev - flatlaf - 0.28 - - - com.github.RalleYTN - SimpleRegistry - java8-7949ac7f06-1 - - - org.ini4j - ini4j - 0.5.4 - - - com.github.Gurkengewuerz - zsyncer - 1de0d3f651 - - - com.jgoodies - jgoodies-forms - 1.9.0 - - - - - - - src/main/resources - true - - **/project.properties - - - - - src/main/resources - false - - **/* - - - - src/main/resources/icons - false - - **/* - - - - - - maven-compiler-plugin - 3.5.1 - - 12 - 12 - - - - maven-assembly-plugin - 2.6 - - false - ${project.artifactId} - - - jar-with-dependencies - - - - - ${project.groupId}.${project.artifactId}.ArmA3Launcher - - - - - - assamble - - single - - package - - - - - + + gui + patcher + \ No newline at end of file