/* * WPCleaner: A tool to help on Wikipedia maintenance tasks. * Copyright (C) 2013 Nicolas Vervelle * * See README.txt file for licensing information. */ package org.wikipediacleaner.gui.swing.component; import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.Icon; import javax.swing.JTabbedPane; /** * A close icon for JTabbedPane. */ public class JTabbedPaneCloseIcon implements Icon { private final static int SIZE = 10; transient Rectangle position = null; /** * @param pane Pane component. * @param component Page. */ public JTabbedPaneCloseIcon(final JTabbedPane pane, final Component component) { MouseAdapter adapter = new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (!e.isConsumed() && (position != null) && (e.getButton() == MouseEvent.BUTTON1)) { if ((e.getClickCount() == 1) && (position.contains(e.getX(), e.getY()))) { for (int i = pane.getComponentCount(); i > 0; i--) { if (pane.getComponent(i - 1) == component) { pane.remove(i - 1); pane.removeMouseListener(this); e.consume(); return; } } } } } }; pane.addMouseListener(adapter); } @Override public int getIconHeight() { return SIZE; } @Override public int getIconWidth() { return SIZE; } /* (non-Javadoc) * @see javax.swing.Icon#paintIcon(java.awt.Component, java.awt.Graphics, int, int) */ @Override public void paintIcon(@SuppressWarnings("unused") Component c, Graphics g, int x, int y) { if (g instanceof Graphics2D) { Graphics2D g2 = (Graphics2D) g.create(); g2.draw3DRect(x, y, getIconWidth() - 1, getIconHeight() - 1, false); g2.drawLine(x + 2, y + 2, x + getIconWidth() - 3, y + getIconHeight() - 3); g2.drawLine(x + 2, y + getIconHeight() - 3, x + getIconWidth() - 3, y + 2); g2.dispose(); } position = new Rectangle(x, y, getIconWidth(), getIconHeight()); } }