From 321af6ecb696db97948d36ec27a786242f0156df Mon Sep 17 00:00:00 2001 From: Laurent Clouet <4409640-laurent.clouet@users.noreply.gitlab.com> Date: Thu, 21 Aug 2025 11:59:50 +0200 Subject: [PATCH] Feat: add link to discord and www on header --- .../java/com/sheepit/client/ui/GuiSwing.java | 66 ++++++++++++++++-- src/main/resources/discord-logo.png | Bin 0 -> 919 bytes src/main/resources/sheepit-logo.png | Bin 13716 -> 21415 bytes src/main/resources/web-logo.png | Bin 0 -> 904 bytes 4 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/discord-logo.png create mode 100644 src/main/resources/web-logo.png diff --git a/src/main/java/com/sheepit/client/ui/GuiSwing.java b/src/main/java/com/sheepit/client/ui/GuiSwing.java index a75dea5..23398bc 100644 --- a/src/main/java/com/sheepit/client/ui/GuiSwing.java +++ b/src/main/java/com/sheepit/client/ui/GuiSwing.java @@ -44,7 +44,11 @@ import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.border.EmptyBorder; import java.awt.AWTException; +import java.awt.BorderLayout; +import java.awt.Cursor; +import java.awt.Desktop; import java.awt.Dimension; +import java.awt.FlowLayout; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.GridBagLayout; @@ -56,18 +60,23 @@ import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.awt.event.WindowEvent; import java.awt.event.WindowStateListener; import java.awt.image.BufferedImage; import java.io.IOException; import java.lang.reflect.InvocationTargetException; +import java.net.URI; import java.net.URL; import java.util.Timer; import java.util.TimerTask; public class GuiSwing extends JFrame implements Gui { public static final String type = "swing"; - private static final String logoPath = "/sheepit-logo.png"; + private static final String logoSheepItPath = "/sheepit-logo.png"; + private static final String logoDiscordPath = "/discord-logo.png"; + private static final String logoWebPath = "/web-logo.png"; public static final int WIDTH = 540; public static void drawVersionStringOnImage(final BufferedImage image, String versionString) { @@ -90,18 +99,20 @@ public class GuiSwing extends JFrame implements Gui { } @NotNull public static JLabel createLogoWithWatermark() { - final URL logoURL = GuiSwing.class.getResource(logoPath); + final URL logoSheepItURL = GuiSwing.class.getResource(logoSheepItPath); + final URL logoDiscordURL = GuiSwing.class.getResource(logoDiscordPath); + final URL logoWebURL = GuiSwing.class.getResource(logoWebPath); // If logo cannot be found, return dummy image - if (logoURL == null) { - System.err.println("Error: Unable to find logo " + logoPath); + if (logoSheepItURL == null || logoDiscordURL == null || logoWebURL == null) { + System.err.println("Error: Unable to find logos"); return new JLabel(); } - + JLabel labelImage; try { // Include the version of the app as a watermark in the SheepIt logo. - final BufferedImage watermark = ImageIO.read(logoURL); + final BufferedImage watermark = ImageIO.read(logoSheepItURL); String versionString = "v" + Configuration.jarVersion; drawVersionStringOnImage(watermark, versionString); @@ -109,9 +120,50 @@ public class GuiSwing extends JFrame implements Gui { } catch (Exception e) { // If something fails, we just show the SheepIt logo (without any watermark) - ImageIcon image = new ImageIcon(logoURL); + ImageIcon image = new ImageIcon(logoSheepItURL); labelImage = new JLabel(image); } + + ImageIcon logoImageDiscord = new ImageIcon(logoDiscordURL); + ImageIcon logoImageWeb = new ImageIcon(logoWebURL); + + labelImage.setLayout(new BorderLayout()); + + JPanel overlayPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 10)); + overlayPanel.setOpaque(false); + + JLabel logoLabelDiscord = new JLabel(logoImageDiscord); + logoLabelDiscord.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + logoLabelDiscord.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + try { + Desktop.getDesktop().browse(new URI("https://discord.gg/nZu9thzXfx")); + } + catch (Exception ex) { + throw new RuntimeException(ex); + } + } + }); + + JLabel logoLabelWeb = new JLabel(logoImageWeb); + logoLabelWeb.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + logoLabelWeb.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + try { + Desktop.getDesktop().browse(new URI("https://www.sheepit-renderfarm.com")); + } + catch (Exception ex) { + throw new RuntimeException(ex); + } + } + }); + + overlayPanel.add(logoLabelWeb); + overlayPanel.add(logoLabelDiscord); + labelImage.add(overlayPanel, BorderLayout.SOUTH); + return labelImage; } diff --git a/src/main/resources/discord-logo.png b/src/main/resources/discord-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d8abe153346df569c32ad8bc3671a16750612527 GIT binary patch literal 919 zcmV;I18Dq-P)EX>4Tx04R}tkv&MmKp2MKwu(h64rUPPkfAzR5ET(8twIqhgj%6h2a`+xph-iL z;^HW{799LptU9+0Yt2!cN#?t+t|i<_Qpb2CnqBzuEw%KS{5* zwb&8RzYSbmw>4!CxZD8-pA6ZQT`5E>SSSGRXY@@uVBi+$UGw_ZI>+e)kfC0sZh(VB zV5CUd>pt%eclPbynpXdQ0L83w$O=tG&;S4c24YJ`L;xcIBLE}kPG?{M000SaNLh0L z01ejw01ejxLMWSf00007bV*G`2k8hD6#^#cLhT0t00EOpL_t(Y$L*EBOO;U=$3N#) zhpq^Ur6dmJRL~|uQv|srEs6LSxHts5IS7F`wb!4}AVDqF-YhnGMVl&=aEVC#&Hc0- z@$GcpdlT>I7hX6#pXYqfkLTgMaHSRsxu7}Ow^~%#=E8Jj16-{7Hq!66%`_ILfr~R*C=2@b4L)4+U^Lb2S}mTJ&1Ni-h-Nd~Tuc zS03+tch53>p~UAaJQ_i@Nhf>(PJz1>d<$p*cPbyd77JWj1@Jo){|anez-KeQ1gRPY zFb!-cpbvNtJO-A5k3bzbiC;a&mSfIqpf~Z@iBCSLHFZhdONunsYU}D)GG|YHp?2qz td(=5~Reklp_oKdybLQ0ktN-|g^arzW0890P6A1tS002ovPDHLkV1ir-oU{M{ literal 0 HcmV?d00001 diff --git a/src/main/resources/sheepit-logo.png b/src/main/resources/sheepit-logo.png index bbaeff6e08e7ea2f2261330c3de2c6e5970b2ecc..9756e10b9b06c5f0cadad50d321ee3ed02fa0dda 100644 GIT binary patch literal 21415 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

FeGPW1G&GHQ;(^{>e?cn*z^Uovy59d^1nCL%1-7 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 #|$RITj|K+#lgJ-IZ27 zXbT`}NcL_Sd5RUc*NHCT}J@rC9?* zOGigX%Ix^|GMvx2+FZYGs2M-aYO#Pn=Y2@QR0q84UN{(H=_Jlva3s0`y$f7h&FQIQVPZw z)9Zs}mX;<04fQ6G=pXXU*XRY}{jTiX+?csM{ec_r>(YM-0ehI;R4Nsey+WfZK0Ol9 z@~&0Q01ZYztMbb;5y`Vtg9|T9h(OWqc)g1E!y&3>FxD1AX}O=T9^* zjV=tk;oJgDOv+3EDv518`o+N|Eoc|Ocom){=3ueC6VFPxf{ZB1g9d@XY1e|Ed$}-* zneN@6=LV6zyY%>VSW|X9UeARH2VYz`=;&oBLqj@UX^51^J~57wS3)k|&*(wnRH!yH zGje!$;+-@$sfe9P7M^Fb@(LJ6s@m}QOHZaO`4lj~a&7Wc!W_qn@vg(1SsZ%7QCs~= z`&1_=BEzSqehdZ!NQ7}N+t{O)Bodrr+pG+SVJ-`mk=SSU;NJw@YER=QCj$aOn|6y7 z;Ou$2m0uk)R7OCyN!e7sW;4hs`wgu~x znVA_xx_#)cOIFg-Cq%|ZZ$(Qw*2VL+;mN%|oj(_c*=0Eo^M-*F!T?s{Tku*%MBR-Y z>d&iRQh(PLa*m_F7y|lU=HNk~wDkCouMMBBZJ0h%z8uYOORz`ogj7~10>Bf{H6&6} zGVxRV>k_;2_3g5{EPI;|90u$b2b0S%rxkVE$D)-Y%-Kq4$?!L9Bgqm1y&cy Fe*&Ld*&6@= literal 13716 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 diff --git a/src/main/resources/web-logo.png b/src/main/resources/web-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3cdb6fbf8cbc6c25eebf60f4b41bbbaa9da014bb GIT binary patch literal 904 zcmV;319$w1P)EX>4Tx04R}tkv&MmKp2MKwu(h64rUPPkfAzR5ET(8twIqhgj%6h2a`+xph-iL z;^HW{799LptU9+0Yt2!cN#?t+t|i<_Qpb2CnqBzuEw%KS{5* zwb&8RzYSbmw>4!CxZD8-pA6ZQT`5E>SSSGRXY@@uVBi+$UGw_ZI>+e)kfC0sZh(VB zV5CUd>pt%eclPbynpXdQ0L83w$O=tG&;S4c24YJ`L;xcIBLE}kPG?{M000SaNLh0L z01ejw01ejxLMWSf00007bV*G`2k8hD6#*i|0(#v500D$aL_t(Y$JJK9OG053J?~|U zI8>Wal2MQ?3H=3bjZG@;4YoTv7X>vmw?%;kD!)7uq7Y;$3kq zzC*H0vPUv5u@b+cBwAd&U6R{j#gB~w731nVmIfW;E-FTRe^Bv)Dv*2J?-X&0-y(AT?vcAF#ze11~K7;#e3xgs9Ta|gdZH9 zLf;d&XmuYz*&-|p2M!HxRgQ`BZ;pzKaSXeP)3E!&xXwF`>oG5!y}w(TBP{*k+e_c! ex1~ACZ_5X`eSkhF1v;Jp0000