summaryrefslogtreecommitdiff
path: root/src/main/java/org/cristalise/gui/tabs/JTabbedPaneWithCloseIcons.java
blob: ec31e3dc6f188857ed0ba41ac7716a7bce183dfe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package org.cristalise.gui.tabs;
import java.awt.Component;
import java.awt.Rectangle;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.Icon;
import javax.swing.JTabbedPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import org.cristalise.gui.ItemDetails;


/**
 * @author Developpement
 *
 * Allows a close icone in JTabbePane
 */
public class JTabbedPaneWithCloseIcons extends JTabbedPane implements MouseListener, ChangeListener
{
	/**
	 *
	 */
	public JTabbedPaneWithCloseIcons()
	{
		super();
		addMouseListener(this);
		addChangeListener(this);
	}
	/**
	 * @see javax.swing.JTabbedPane#addTab(String, Icon, Component, String)
	 */
	@Override
	public void addTab(String title, Icon arg2, Component component, String arg3)
	{
		super.addTab(title, new CloseTabIcon(arg2), component, arg3);
	}
	/**
	 * @see java.awt.event.MouseListener#mouseClicked(MouseEvent)
	 */
	@Override
	public void mouseClicked(MouseEvent e)
	{
        int tabNumber = getUI().tabForCoordinate(this, e.getX(), e.getY());
		Component cp = null;
		if (tabNumber < 0)
			return;
		Rectangle rect = ((CloseTabIcon) getIconAt(tabNumber)).getBounds();
        if (rect.contains(e.getX(), e.getY())||(e.getModifiers()& InputEvent.CTRL_MASK) != 0)
		{ //the tab is being closed
			cp = this.getComponent(tabNumber);
			//if (getComponentCount() != 1)
				if (cp instanceof ItemDetails)
				{
					((ItemDetails) cp).closeTab();
                    remove(cp);
				}
		}
		stateChanged(new ChangeEvent(this));
	}
	/**
	 * @see java.awt.event.MouseListener#mouseEntered(MouseEvent)
	 */
	@Override
	public void mouseEntered(MouseEvent e)
	{
	}
	/**
	 * @see java.awt.event.MouseListener#mouseExited(MouseEvent)
	 */
	@Override
	public void mouseExited(MouseEvent e)
	{
	}
	/**
	 * @see java.awt.event.MouseListener#mousePressed(MouseEvent)
	 */
	@Override
	public void mousePressed(MouseEvent e)
	{
	}
	/**
	 * @see java.awt.event.MouseListener#mouseReleased(MouseEvent)
	 */
	@Override
	public void mouseReleased(MouseEvent e)
	{
	}
	@Override
	public void stateChanged(ChangeEvent e)
	{
		if (getSelectedComponent()!= null)
        ((ItemDetails) getSelectedComponent()).refresh();
	}
}