diff --git a/modules/decima-ext-shader-viewer/src/main/java/com/shade/decima/ui/data/viewer/shader/settings/ShaderViewerSettingsPage.java b/modules/decima-ext-shader-viewer/src/main/java/com/shade/decima/ui/data/viewer/shader/settings/ShaderViewerSettingsPage.java
index 3ced52151..6c313724c 100644
--- a/modules/decima-ext-shader-viewer/src/main/java/com/shade/decima/ui/data/viewer/shader/settings/ShaderViewerSettingsPage.java
+++ b/modules/decima-ext-shader-viewer/src/main/java/com/shade/decima/ui/data/viewer/shader/settings/ShaderViewerSettingsPage.java
@@ -43,13 +43,19 @@ public JComponent createComponent(@NotNull PropertyChangeListener listener) {
final JPanel tools = new JPanel();
tools.setBorder(new LabeledBorder("Disassemble"));
- tools.setLayout(new MigLayout("ins panel", "[fill][grow,fill,400lp]", ""));
+ tools.setLayout(new MigLayout("ins panel,wrap", "[fill][grow,fill,400lp]", ""));
tools.add(new JLabel("Direct3D compiler library:"));
- tools.add(d3dCompilerPath, "wrap");
+ tools.add(d3dCompilerPath);
tools.add(new JLabel("DirectX compiler library:"));
- tools.add(dxCompilerPath, "wrap");
+ tools.add(dxCompilerPath);
+
+ tools.add(new JLabel(
+ "These files are shipped with the game itself and located within the game directory.",
+ UIManager.getIcon("Action.informationIcon"),
+ SwingConstants.LEADING
+ ), "span");
return tools;
}
diff --git a/modules/decima-ui/src/main/java/com/shade/decima/ui/data/viewer/audio/settings/AudioPlayerSettingsPage.java b/modules/decima-ui/src/main/java/com/shade/decima/ui/data/viewer/audio/settings/AudioPlayerSettingsPage.java
index 804b4d0d6..2b51929ab 100644
--- a/modules/decima-ui/src/main/java/com/shade/decima/ui/data/viewer/audio/settings/AudioPlayerSettingsPage.java
+++ b/modules/decima-ui/src/main/java/com/shade/decima/ui/data/viewer/audio/settings/AudioPlayerSettingsPage.java
@@ -11,6 +11,8 @@
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
+import javax.swing.event.HyperlinkEvent;
+import java.awt.*;
import java.beans.PropertyChangeListener;
import java.util.Objects;
@@ -58,20 +60,40 @@ public JComponent createComponent(@NotNull PropertyChangeListener listener) {
final JPanel tools = new JPanel();
tools.setBorder(new LabeledBorder("Playback"));
- tools.setLayout(new MigLayout("ins panel", "[fill][grow,fill,400lp]", ""));
+ tools.setLayout(new MigLayout("ins panel,wrap", "[fill][grow,fill,400lp]", ""));
tools.add(new JLabel("ww2ogg executable:"));
- tools.add(ww2oggPath, "wrap");
+ tools.add(ww2oggPath);
tools.add(new JLabel("ww2ogg codebooks:"));
- tools.add(ww2oggCodebooksPath, "wrap");
+ tools.add(ww2oggCodebooksPath);
tools.add(new JLabel("revorb executable:"));
- tools.add(revorbPath, "wrap");
+ tools.add(revorbPath);
tools.add(new JLabel("ffmpeg executable:"));
tools.add(ffmpegPath);
+ final JEditorPane pane = new JEditorPane();
+ pane.setEditable(false);
+ pane.setContentType("text/html");
+ pane.setText("You can download individual entries from the following links: ww2ogg, revorb, and ffmpeg.");
+ pane.addHyperlinkListener(e -> {
+ if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+ IOUtils.unchecked(() -> {
+ Desktop.getDesktop().browse(e.getURL().toURI());
+ return null;
+ });
+ }
+ });
+
+ final JPanel panel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(new JLabel(UIManager.getIcon("Action.informationIcon")));
+ panel.add(pane);
+
+ tools.add(panel, "span");
+
return tools;
}