package com.drawbridge.utils; import java.awt.Color; import java.awt.Dimension; import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JPanel; import com.drawbridge.Main; public class ErrorPopup extends JPanel { private final Color mColor = Color.decode("#006AD5"); private JLabel mTitleLabel; private JLabel mDescriptionLabel; private final String mTitle; private final String mDescription; private static final long serialVersionUID = 1L; public ErrorPopup(String title, String description){ if(description == null) throw new RuntimeException("No description given!"); mTitle = title; mDescription = description; initVisualProperties(); } public void initVisualProperties(){ setOpaque(true); setBackground(mColor); mTitleLabel = new JLabel(mTitle); mTitleLabel.setFont(Main.mainFont.deriveFont(24.0f)); mTitleLabel.setForeground(Color.white); mTitleLabel.setBorder(BorderFactory.createEmptyBorder(5, 10, 0, 0)); mDescriptionLabel = new JLabel(mDescription); mDescriptionLabel.setFont(Main.mainFont.deriveFont(14.0f)); mDescriptionLabel.setForeground(Color.white); mDescriptionLabel.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 0)); BoxLayout b = new BoxLayout(this, BoxLayout.Y_AXIS); this.setLayout(b); this.add(mTitleLabel); this.add(mDescriptionLabel); //set width int titleWidth = this.getFontMetrics(mTitleLabel.getFont()).stringWidth(mTitle) + 40; int descriptionWidth = this.getFontMetrics(mDescriptionLabel.getFont()).stringWidth(mDescription) + 40; mTitleLabel.setPreferredSize(new Dimension(titleWidth, 30)); mDescriptionLabel.setPreferredSize(new Dimension(descriptionWidth, 30)); this.setSize(this.getPreferredSize()); } @Override public boolean equals(Object o){ if(o instanceof ErrorPopup){ ErrorPopup ep = (ErrorPopup) o; if(ep.mDescription.equals(mDescription) && ep.mTitle.equals(mTitle)){ return true; } } return false; } }