Added about dialog and use license-maven-plugin to generate list of third party licenses

This commit is contained in:
Sebastian Stenzel
2020-03-10 13:24:31 +01:00
parent 4976df4139
commit 63a51ecee7
22 changed files with 268 additions and 1524 deletions
@@ -0,0 +1 @@
com.github.serceman--jnr-fuse--0.5.3=MIT License
+32
View File
@@ -0,0 +1,32 @@
<#function artifactFormat p>
<#if p.name?index_of('Unnamed') &gt; -1>
<#return p.artifactId + " (" + p.groupId + ":" + p.artifactId + ":" + p.version + " - " + (p.url!"no url defined") + ")">
<#else>
<#return p.name + " (" + p.groupId + ":" + p.artifactId + ":" + p.version + " - " + (p.url!"no url defined") + ")">
</#if>
</#function>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
Cryptomator uses ${dependencyMap?size} third-party dependencies under the following licenses:
<#list licenseMap as e>
<#assign license = e.getKey()/>
<#assign projects = e.getValue()/>
<#if projects?size &gt; 0>
${license}:
<#list projects as project>
• ${artifactFormat(project)}
</#list>
</#if>
</#list>
@@ -22,6 +22,7 @@ public enum FontAwesome5Icon {
HAND_HOLDING_HEART("\uF4BE"), //
HEART("\uF004"), //
HDD("\uF0A0"), //
INFO_CIRCLE("\uF05A"), //
KEY("\uF084"), //
LINK("\uF0C1"), //
LOCK("\uF023"), //
@@ -16,6 +16,7 @@ import javax.inject.Named;
import javax.inject.Singleton;
import java.awt.Desktop;
import java.awt.EventQueue;
import java.awt.desktop.AboutEvent;
import java.awt.desktop.QuitResponse;
import java.util.EnumSet;
import java.util.EventObject;
@@ -47,6 +48,11 @@ public class AppLifecycleListener {
Desktop.getDesktop().setPreferencesHandler(this::showPreferencesWindow);
}
// register preferences shortcut
if (Desktop.getDesktop().isSupported(Desktop.Action.APP_ABOUT)) {
Desktop.getDesktop().setAboutHandler(this::showAboutWindow);
}
// register quit handler
if (Desktop.getDesktop().isSupported(Desktop.Action.APP_QUIT_HANDLER)) {
Desktop.getDesktop().setQuitHandler(this::handleQuitRequest);
@@ -110,6 +116,10 @@ public class AppLifecycleListener {
fxApplicationStarter.get(true).thenAccept(app -> app.showPreferencesWindow(SelectedPreferencesTab.ANY));
}
private void showAboutWindow(@SuppressWarnings("unused") AboutEvent aboutEvent) {
fxApplicationStarter.get(true).thenAccept(app -> app.showPreferencesWindow(SelectedPreferencesTab.ABOUT));
}
private void forceUnmountRemainingVaults() {
for (Vault vault : vaults) {
if (vault.isUnlocked()) {
@@ -9,6 +9,7 @@ import org.cryptomator.ui.traymenu.TrayMenuComponent;
import javax.inject.Named;
import javax.inject.Singleton;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
@@ -0,0 +1,46 @@
package org.cryptomator.ui.preferences;
import com.google.common.io.CharStreams;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.fxapp.UpdateChecker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@PreferencesScoped
public class AboutController implements FxController {
private static final Logger LOG = LoggerFactory.getLogger(AboutController.class);
private final String thirdPartyLicenseText;
private final String applicationVersion;
@Inject
AboutController(UpdateChecker updateChecker) {
this.thirdPartyLicenseText = loadThirdPartyLicenseFile();
this.applicationVersion = updateChecker.currentVersionProperty().get();
}
private static String loadThirdPartyLicenseFile() {
try (InputStream in = AboutController.class.getResourceAsStream("/license/THIRD-PARTY.txt")) {
return CharStreams.toString(new InputStreamReader(in));
} catch (IOException | NullPointerException e) {
LOG.error("Failed to load /license/THIRD-PARTY.txt", e);
return "";
}
}
/* Getter */
public String getThirdPartyLicenseText() {
return thirdPartyLicenseText;
}
public String getApplicationVersion() {
return applicationVersion;
}
}
@@ -27,6 +27,7 @@ public class PreferencesController implements FxController {
public Tab volumeTab;
public Tab updatesTab;
public Tab donationKeyTab;
public Tab aboutTab;
@Inject
public PreferencesController(@PreferencesWindow Stage window, ObjectProperty<SelectedPreferencesTab> selectedTabProperty, UpdateChecker updateChecker) {
@@ -57,6 +58,8 @@ public class PreferencesController implements FxController {
return donationKeyTab;
case GENERAL:
return generalTab;
case ABOUT:
return aboutTab;
case ANY:
default:
return updateAvailable.get() ? updatesTab : generalTab;
@@ -83,4 +83,9 @@ abstract class PreferencesModule {
@FxControllerKey(DonationKeyPreferencesController.class)
abstract FxController bindDonationKeyPreferencesController(DonationKeyPreferencesController controller);
@Binds
@IntoMap
@FxControllerKey(AboutController.class)
abstract FxController bindAboutController(AboutController controller);
}
@@ -25,4 +25,9 @@ public enum SelectedPreferencesTab {
* Show donation key tab
*/
DONATION_KEY,
/**
* Show about tab
*/
ABOUT,
}
@@ -46,5 +46,13 @@
<fx:include source="/fxml/preferences_donationkey.fxml"/>
</content>
</Tab>
<Tab fx:id="aboutTab" id="ABOUT" text="%preferences.about">
<graphic>
<FontAwesome5IconView glyph="INFO_CIRCLE"/>
</graphic>
<content>
<fx:include source="/fxml/preferences_about.fxml"/>
</content>
</Tab>
</tabs>
</TabPane>
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import org.cryptomator.ui.controls.FormattedLabel?>
<VBox xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
fx:controller="org.cryptomator.ui.preferences.AboutController"
spacing="12"
alignment="TOP_CENTER">
<padding>
<Insets topRightBottomLeft="12"/>
</padding>
<children>
<HBox spacing="12" VBox.vgrow="NEVER" alignment="TOP_LEFT">
<ImageView VBox.vgrow="ALWAYS" fitHeight="64" preserveRatio="true" smooth="true" cache="true">
<Image url="/bot.png"/>
</ImageView>
<VBox HBox.hgrow="ALWAYS">
<FormattedLabel styleClass="label-large" format="Cryptomator %s" arg1="${controller.applicationVersion}"/>
<Label text="© 2016 - 2020 Skymatic GmbH"/>
</VBox>
</HBox>
<TextArea text="${controller.thirdPartyLicenseText}" editable="false" />
</children>
</VBox>
@@ -144,6 +144,8 @@ preferences.donationKey=Donation
preferences.donationKey.registeredFor=Registered for %s
preferences.donationKey.noDonationKey=No valid donation key found. It's like a license key but for awesome people using free software. ;-)
preferences.donationKey.getDonationKey=Get a donation key
## About
preferences.about=About
# Main Window
main.closeBtn.tooltip=Close
@@ -0,0 +1,85 @@
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
Cryptomator uses 49 third-party dependencies under the following licenses:
Apache License v2.0:
• HKDF-RFC5869 (at.favre.lib:hkdf:1.0.2 - https://github.com/patrickfav/hkdf)
• jffi (com.github.jnr:jffi:1.2.16 - http://github.com/jnr/jffi)
• jnr-constants (com.github.jnr:jnr-constants:0.9.9 - http://github.com/jnr/jnr-constants)
• jnr-ffi (com.github.jnr:jnr-ffi:2.1.7 - http://github.com/jnr/jnr-ffi)
• FindBugs-jsr305 (com.google.code.findbugs:jsr305:3.0.2 - http://findbugs.sourceforge.net/)
• Gson (com.google.code.gson:gson:2.8.6 - https://github.com/google/gson/gson)
• Dagger (com.google.dagger:dagger:2.26 - https://github.com/google/dagger)
• error-prone annotations (com.google.errorprone:error_prone_annotations:2.3.2 - http://nexus.sonatype.org/oss-repository-hosting.html/error_prone_parent/error_prone_annotations)
• Guava InternalFutureFailureAccess and InternalFutures (com.google.guava:failureaccess:1.0.1 - https://github.com/google/guava/failureaccess)
• Guava: Google Core Libraries for Java (com.google.guava:guava:28.1-jre - https://github.com/google/guava/guava)
• Guava ListenableFuture only (com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava - https://github.com/google/guava/listenablefuture)
• J2ObjC Annotations (com.google.j2objc:j2objc-annotations:1.3 - https://github.com/google/j2objc/)
• Apache Commons CLI (commons-cli:commons-cli:1.4 - http://commons.apache.org/proper/commons-cli/)
• Apache Commons IO (commons-io:commons-io:2.6 - http://commons.apache.org/proper/commons-io/)
• javax.inject (javax.inject:javax.inject:1 - http://code.google.com/p/atinject/)
• Java Native Access (net.java.dev.jna:jna:5.1.0 - https://github.com/java-native-access/jna)
• Java Native Access Platform (net.java.dev.jna:jna-platform:5.1.0 - https://github.com/java-native-access/jna)
• Apache Commons Lang (org.apache.commons:commons-lang3:3.9 - http://commons.apache.org/proper/commons-lang/)
• Jackrabbit WebDAV Library (org.apache.jackrabbit:jackrabbit-webdav:2.19.0 - http://jackrabbit.apache.org/jackrabbit-webdav/)
• Jetty :: Http Utility (org.eclipse.jetty:jetty-http:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: IO Utility (org.eclipse.jetty:jetty-io:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: Security (org.eclipse.jetty:jetty-security:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: Server Core (org.eclipse.jetty:jetty-server:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: Servlet Handling (org.eclipse.jetty:jetty-servlet:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: Utilities (org.eclipse.jetty:jetty-util:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: Webapp Application Support (org.eclipse.jetty:jetty-webapp:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: XML utilities (org.eclipse.jetty:jetty-xml:9.4.17.v20190418 - http://www.eclipse.org/jetty)
BSD:
• ASM Core (org.ow2.asm:asm:5.0.3 - http://asm.objectweb.org/asm/)
• ASM Analysis (org.ow2.asm:asm-analysis:5.0.3 - http://asm.objectweb.org/asm-analysis/)
• ASM Commons (org.ow2.asm:asm-commons:5.0.3 - http://asm.objectweb.org/asm-commons/)
• ASM Tree (org.ow2.asm:asm-tree:5.0.3 - http://asm.objectweb.org/asm-tree/)
• ASM Util (org.ow2.asm:asm-util:5.0.3 - http://asm.objectweb.org/asm-util/)
Common Public License - v 1.0:
• jnr-posix (com.github.jnr:jnr-posix:3.0.44 - http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix)
Eclipse Public License - Version 1.0:
• Jetty :: Http Utility (org.eclipse.jetty:jetty-http:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: IO Utility (org.eclipse.jetty:jetty-io:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: Security (org.eclipse.jetty:jetty-security:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: Server Core (org.eclipse.jetty:jetty-server:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: Servlet Handling (org.eclipse.jetty:jetty-servlet:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: Utilities (org.eclipse.jetty:jetty-util:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: Webapp Application Support (org.eclipse.jetty:jetty-webapp:9.4.17.v20190418 - http://www.eclipse.org/jetty)
• Jetty :: XML utilities (org.eclipse.jetty:jetty-xml:9.4.17.v20190418 - http://www.eclipse.org/jetty)
GPLv2:
• jnr-posix (com.github.jnr:jnr-posix:3.0.44 - http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix)
GPLv2+CE:
• Java Servlet API (javax.servlet:javax.servlet-api:3.1.0 - http://servlet-spec.java.net)
• javafx-base (org.openjfx:javafx-base:14-ea+8 - https://openjdk.java.net/projects/openjfx/javafx-base/)
• javafx-controls (org.openjfx:javafx-controls:14-ea+8 - https://openjdk.java.net/projects/openjfx/javafx-controls/)
• javafx-fxml (org.openjfx:javafx-fxml:14-ea+8 - https://openjdk.java.net/projects/openjfx/javafx-fxml/)
• javafx-graphics (org.openjfx:javafx-graphics:14-ea+8 - https://openjdk.java.net/projects/openjfx/javafx-graphics/)
LGPL 2.1:
• dbus-java (com.github.hypfvieh:dbus-java:3.0.2 - https://github.com/hypfvieh/dbus-java/dbus-java)
• jnr-posix (com.github.jnr:jnr-posix:3.0.44 - http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix)
• Java Native Access (net.java.dev.jna:jna:5.1.0 - https://github.com/java-native-access/jna)
• Java Native Access Platform (net.java.dev.jna:jna-platform:5.1.0 - https://github.com/java-native-access/jna)
MIT License:
• java jwt (com.auth0:java-jwt:3.8.3 - https://github.com/auth0/java-jwt)
• java-utils (com.github.hypfvieh:java-utils:1.0.5 - https://github.com/hypfvieh/java-utils)
• jnr-x86asm (com.github.jnr:jnr-x86asm:1.0.2 - http://github.com/jnr/jnr-x86asm)
• jnr-fuse (com.github.serceman:jnr-fuse:0.5.3 - no url defined)
• zxcvbn4j (com.nulab-inc:zxcvbn:1.3.0 - https://github.com/nulab/zxcvbn4j)
• secret-service (de.swiesend:secret-service:1.0.0-RC.3 - https://github.com/swiesend/secret-service)
• Checker Qual (org.checkerframework:checker-qual:2.8.1 - https://checkerframework.org)
• Animal Sniffer Annotations (org.codehaus.mojo:animal-sniffer-annotations:1.18 - http://www.mojohaus.org/animal-sniffer/animal-sniffer-annotations)
• SLF4J API Module (org.slf4j:slf4j-api:1.7.29 - http://www.slf4j.org)
The BSD 2-Clause License:
• EasyBind (org.fxmisc.easybind:easybind:1.0.3 - http://www.fxmisc.org/easybind/)