From 5e4034b5cba89460a62fa958fc78c2b85acb3d5f Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 7 Oct 2014 09:18:33 +0200 Subject: Repackage to org.cristalise --- .../gui/tabs/JTabbedPaneWithCloseIcons.java | 97 ++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/main/java/org/cristalise/gui/tabs/JTabbedPaneWithCloseIcons.java (limited to 'src/main/java/org/cristalise/gui/tabs/JTabbedPaneWithCloseIcons.java') diff --git a/src/main/java/org/cristalise/gui/tabs/JTabbedPaneWithCloseIcons.java b/src/main/java/org/cristalise/gui/tabs/JTabbedPaneWithCloseIcons.java new file mode 100644 index 0000000..ec31e3d --- /dev/null +++ b/src/main/java/org/cristalise/gui/tabs/JTabbedPaneWithCloseIcons.java @@ -0,0 +1,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(); + } +} -- cgit v1.2.3