public Toast(String msg, Type type) {
		super();
		
		if (backgroundImage == null) {
			try {
				backgroundImage = ImageIO.read(RESOURCE_BACKGROUND);
			} catch (IOException e) {
				Util.die("Unable to read background image.");
			}
		}
		
		this.type = type;
		
		addMouseListener(this);
		
		setUndecorated(true);
		setBackground(new Color(0,0,0,0));
		setAlwaysOnTop(true);
		setLayout(null);
		setFocusableWindowState(false);
		
		ImagePanel imagePanel = new ImagePanel(backgroundImage);
		add(imagePanel);
		
		// pack(); // not with the null layout?
		setSize(imagePanel.getPreferredSize());
		
		JLabel label = new JLabel(msg);
		label.setFont(font);
		label.setForeground(Color.WHITE);
		label.setBounds(new Rectangle(getWidth()-TEXT_WIDTH, getHeight()-TEXT_HEIGHT, TEXT_WIDTH, TEXT_HEIGHT));
		label.setHorizontalAlignment(JLabel.LEFT);
		label.setVerticalAlignment(JLabel.CENTER);
		add(label);
		
		setComponentZOrder(label, 0);
		setComponentZOrder(imagePanel, 2);
		
		GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment()
				.getDefaultScreenDevice().getDefaultConfiguration();
		Rectangle screenSize = gc.getBounds();
		Insets screenInset = Toolkit.getDefaultToolkit().getScreenInsets(gc);
		
		baseX = (int)screenSize.getMaxX() - getWidth() - screenInset.right;
		baseY = (int)screenSize.getMaxY() - screenInset.bottom;
		targetHeight = imagePanel.getPreferredSize().height;
		// setLocation(baseX, baseY);
	}