summaryrefslogtreecommitdiff
path: root/src/main/java/org/cristalise/gui/tabs/JTabbedPaneWithCloseIcons.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/cristalise/gui/tabs/JTabbedPaneWithCloseIcons.java')
-rw-r--r--src/main/java/org/cristalise/gui/tabs/JTabbedPaneWithCloseIcons.java97
1 files changed, 97 insertions, 0 deletions
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();
+ }
+}