package com.atlauncher.ui.panel; import com.atlauncher.obj.Pack; import com.atlauncher.plaf.UIUtils; import com.atlauncher.ui.comp.Card; import com.atlauncher.utils.Strings; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Composite; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.image.BufferedImage; import javax.swing.JPanel; public final class PackPanel extends JPanel implements Card{ private static final Color BACK = new Color(55, 55, 55); public final Pack pack; public PackPanel(Pack pack){ this.pack = pack; this.setOpaque(false); this.setMinimumSize(new Dimension(347, 182)); this.setMaximumSize(new Dimension(347, 182)); } @Override public String id(){ return this.pack.getSafeName(); } @Override public void paintComponent(Graphics g){ Graphics2D g2 = (Graphics2D) g; // Draw Image BufferedImage background = this.pack.getImage(); int x = ((this.getWidth() - background.getWidth()) / 2) - 20; int y = ((this.getHeight() - background.getHeight()) / 2) - 80; g2.setColor(BACK); g2.fillRect(x, y, 347, 182); g2.drawImage(background, x, y, 347, 182, null); // Draw Title g2.setColor(Color.white); g2.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 15)); int curr = ((PackDisplayPanel) this.getParent().getParent()).curr() + 1; int max = ((PackDisplayPanel) this.getParent().getParent()).max(); String disp = this.pack.name + " " + curr + "/" + max; g2.drawString(disp, x + ((347 - g2.getFontMetrics().stringWidth(disp)) / 2), y + 210); // Draw Description int wrap = 65; String wrapped = Strings.wrap(this.pack.description, wrap); int dX = 25; int dY = y + 235; Composite comp = g2.getComposite(); g2.setColor(Color.darkGray); g2.setComposite(UIUtils.alpha(0.25F)); g2.fillRect(0, dY - 5, this.getWidth(), this.getHeight()); g2.setColor(Color.white); g2.setComposite(comp); for(String str : wrapped.split("\n")){ g2.drawString(str, dX, dY += g2.getFontMetrics().getHeight()); } g2.setStroke(new BasicStroke(5)); g2.drawRect(x - 2, y - 2, 349, 184); // Draw Version g2.setColor(Color.green); Rectangle rect; try{ rect = new Rectangle(x - 25, y + 15, g2.getFontMetrics().stringWidth(this.pack.getLatest().version) + 4, g2.getFontMetrics().getHeight() + 4); } catch(NullPointerException e){ rect = new Rectangle(x - 25, y + 15, g2.getFontMetrics().stringWidth("0.0.0"), g2.getFontMetrics().getHeight() + 4); } g2.fill(rect); g2.setColor(Color.white); try{ g2.drawString(this.pack.getLatest().version, x - 23, y + 13 + g2.getFontMetrics().getHeight()); } catch(NullPointerException e){ g2.drawString("0.0.0", x - 24, y + 13 + g2.getFontMetrics().getHeight()); } } }