tn5250j/src/org/tn5250j/gui TN5250jTabbedPane.java,1.1,1.2
"Kenneth J. Pouncey" <[email protected]> Mon, 05 Jul 2004 19:12:57 +0000
| Newsgroups | gmane.comp.java.tn5250j.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/tn5250j/tn5250j/src/org/tn5250j/gui
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16254/src/org/tn5250j/gui
Modified Files:
TN5250jTabbedPane.java
Log Message:
Do not like the custom UI for the tabbed pane
Index: TN5250jTabbedPane.java
===================================================================
RCS file: /cvsroot/tn5250j/tn5250j/src/org/tn5250j/gui/TN5250jTabbedPane.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TN5250jTabbedPane.java 5 Jul 2004 05:02:28 -0000 1.1
--- TN5250jTabbedPane.java 5 Jul 2004 19:12:54 -0000 1.2
***************
*** 1,220 ****
! /*
! * @(#)TN5250jTabbedPane.java Copyright: Copyright (c) 2001
! * @author Kenneth J. Pouncey
! *
! * This program is free software; you can redistribute it and/or modify it under
! * the terms of the GNU General Public License as published by the Free Software
! * Foundation; either version 2, or (at your option) any later version.
! *
! * This program is distributed in the hope that it will be useful, but WITHOUT
! * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
! * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
! * details.
! *
! * You should have received a copy of the GNU General Public License along with
! * this software; see the file COPYING. If not, write to the Free Software
! * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
! *
! */
! package org.tn5250j.gui;
!
! import javax.swing.*;
! import java.awt.*;
! import java.awt.event.*;
! import java.util.Vector;
!
! import javax.swing.plaf.basic.BasicTabbedPaneUI;
!
! import org.tn5250j.event.TabClosedListener;
!
! /**
! *
! * This class provides an instance of the a JTabbedPane that paints a closable
! * (X) on each tab when the cursor enters a tab.
! *
! */
! public class TN5250jTabbedPane extends JTabbedPane implements MouseListener,
! MouseMotionListener{
!
! // the currectly drawn tab that an X is drawn on
! int tabNumber;
! // the region that the X is drawn in the tab
! Rectangle closeRect;
! // closable tab listener.
! private Vector closeListeners;
!
! public TN5250jTabbedPane() {
! super();
! this.setUI(new MyBasicTabbedPaneUI());
! addMouseListener(this);
! addMouseMotionListener(this);
! }
!
! public void mouseClicked(MouseEvent e) {
! int tabNumber = getUI().tabForCoordinate(this, e.getX(), e.getY());
! if (tabNumber < 0)
! return;
! if (closeRect.contains(e.getX(), e.getY())) {
! //the tab is being closed
! fireTabClosed(tabNumber);
!
! }
! }
!
! public void mouseDragged(MouseEvent e) {
!
! }
!
! public void mouseMoved(MouseEvent e) {
!
! int stabNumber = getUI().tabForCoordinate(this, e.getX(), e.getY());
!
! if (stabNumber >= 0) {
!
! if (stabNumber != tabNumber) {
!
! repaint();
! }
!
! tabNumber = stabNumber;
!
! Rectangle tabRect = getUI().getTabBounds(this,tabNumber);
!
! // System.out.println(tabNumber + " " + tabRect.x
! // + " " + tabRect.y
! // + " " + tabRect.width
! // + " " + tabRect.height);
!
! Graphics g = this.getGraphics();
! closeRect = new Rectangle(tabRect.x + tabRect.width - 18,tabRect.y,16,16);
!
! if (closeRect.contains(e.getX(), e.getY()))
! paintClosableX(g,tabRect.x + tabRect.width - 18,tabRect.y,Color.red);
! else
! paintClosableX(g,tabRect.x + tabRect.width - 18,tabRect.y,Color.black);
!
! }
!
! else {
! repaint();
! }
! }
!
! private void paintClosableX(Graphics g, int x, int y, Color x_color) {
!
! int x_pos = x;
! int y_pos = y;
!
! Color col = g.getColor();
!
! g.setColor(x_color);
!
! int y_p = y + 2;
! g.drawLine(x + 1, y_p, x + 12, y_p);
! g.drawLine(x + 1, y_p + 13, x + 12, y_p + 13);
! g.drawLine(x, y_p + 1, x, y_p + 12);
! g.drawLine(x + 13, y_p + 1, x + 13, y_p + 12);
! g.drawLine(x + 3, y_p + 3, x + 10, y_p + 10);
! g.drawLine(x + 3, y_p + 4, x + 9, y_p + 10);
! g.drawLine(x + 4, y_p + 3, x + 10, y_p + 9);
! g.drawLine(x + 10, y_p + 3, x + 3, y_p + 10);
! g.drawLine(x + 10, y_p + 4, x + 4, y_p + 10);
! g.drawLine(x + 9, y_p + 3, x + 3, y_p + 9);
! g.setColor(col);
!
! }
! public void mouseEntered(MouseEvent e) {
!
!
! }
!
! public void mouseExited(MouseEvent e) {
! tabNumber = -1;
! repaint();
!
! }
!
! public void mousePressed(MouseEvent e) {
! }
!
! public void mouseReleased(MouseEvent e) {
!
! }
!
! /**
! * Add a TabClosedListener to the listener list.
! *
! * @param listener The TabClosedListener to be added
! */
! public synchronized void addtabCloseListener(TabClosedListener listener) {
!
! if (closeListeners == null) {
! closeListeners = new java.util.Vector(3);
! }
! closeListeners.addElement(listener);
!
! }
!
! /**
! * Remove a TabClosedListener from the listener list.
! *
! * @param listener The TabClosedListener to be removed
! */
! public synchronized void removeTabCloseListener(TabClosedListener listener) {
! if (closeListeners == null) {
! return;
! }
! closeListeners.removeElement(listener);
!
! }
!
! public void fireTabClosed(int tabToClose) {
! if (closeListeners != null) {
! int size = closeListeners.size();
! for (int i = 0; i < size; i++) {
! TabClosedListener target =
! (TabClosedListener)closeListeners.elementAt(i);
! target.tabClosed(tabToClose);
! }
! }
!
!
! }
!
! /**
! *
! * This makes sure the icon and label are left justified in the tabs
! */
! class MyBasicTabbedPaneUI extends BasicTabbedPaneUI {
!
! // not supported right now but maybe in the future. Right now text is
! // on the right and the icon is on the left with both left justified in
! // in the tab. Not changeble.
!
! private int horizontalTextPosition = SwingUtilities.RIGHT;
!
! public MyBasicTabbedPaneUI() {
! }
!
! public MyBasicTabbedPaneUI(int horTextPosition) {
! horizontalTextPosition = horTextPosition;
! }
!
! protected void layoutLabel(int tabPlacement, FontMetrics metrics,
! int tabIndex, String title, Icon icon, Rectangle tabRect,
! Rectangle iconRect, Rectangle textRect, boolean isSelected) {
!
! textRect.x = 0;
! textRect.y = 0;
! iconRect.x = 0;
! iconRect.y = 0;
!
! SwingUtilities.layoutCompoundLabel((JComponent) tabPane, metrics,
! title, icon, SwingUtilities.CENTER, SwingUtilities.LEFT,
! SwingUtilities.CENTER, horizontalTextPosition, tabRect,
! iconRect, textRect, textIconGap + 2);
!
! }
! }
!
}
\ No newline at end of file
--- 1,220 ----
! /*
! * @(#)TN5250jTabbedPane.java Copyright: Copyright (c) 2001
! * @author Kenneth J. Pouncey
! *
! * This program is free software; you can redistribute it and/or modify it under
! * the terms of the GNU General Public License as published by the Free Software
! * Foundation; either version 2, or (at your option) any later version.
! *
! * This program is distributed in the hope that it will be useful, but WITHOUT
! * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
! * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
! * details.
! *
! * You should have received a copy of the GNU General Public License along with
! * this software; see the file COPYING. If not, write to the Free Software
! * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
! *
! */
! package org.tn5250j.gui;
!
! import javax.swing.*;
! import java.awt.*;
! import java.awt.event.*;
! import java.util.Vector;
!
! import javax.swing.plaf.basic.BasicTabbedPaneUI;
!
! import org.tn5250j.event.TabClosedListener;
!
! /**
! *
! * This class provides an instance of the a JTabbedPane that paints a closable
! * (X) on each tab when the cursor enters a tab.
! *
! */
! public class TN5250jTabbedPane extends JTabbedPane implements MouseListener,
! MouseMotionListener{
!
! // the currectly drawn tab that an X is drawn on
! int tabNumber;
! // the region that the X is drawn in the tab
! Rectangle closeRect;
! // closable tab listener.
! private Vector closeListeners;
!
! public TN5250jTabbedPane() {
! super();
! // this.setUI(new MyBasicTabbedPaneUI());
! addMouseListener(this);
! addMouseMotionListener(this);
! }
!
! public void mouseClicked(MouseEvent e) {
! int tabNumber = getUI().tabForCoordinate(this, e.getX(), e.getY());
! if (tabNumber < 0)
! return;
! if (closeRect.contains(e.getX(), e.getY())) {
! //the tab is being closed
! fireTabClosed(tabNumber);
!
! }
! }
!
! public void mouseDragged(MouseEvent e) {
!
! }
!
! public void mouseMoved(MouseEvent e) {
!
! int stabNumber = getUI().tabForCoordinate(this, e.getX(), e.getY());
!
! if (stabNumber >= 0) {
!
! if (stabNumber != tabNumber) {
!
! repaint();
! }
!
! tabNumber = stabNumber;
!
! Rectangle tabRect = getUI().getTabBounds(this,tabNumber);
!
! // System.out.println(tabNumber + " " + tabRect.x
! // + " " + tabRect.y
! // + " " + tabRect.width
! // + " " + tabRect.height);
!
! Graphics g = this.getGraphics();
! closeRect = new Rectangle(tabRect.x + tabRect.width - 18,tabRect.y,16,16);
!
! if (closeRect.contains(e.getX(), e.getY()))
! paintClosableX(g,tabRect.x + tabRect.width - 18,tabRect.y,Color.red);
! else
! paintClosableX(g,tabRect.x + tabRect.width - 18,tabRect.y,Color.black);
!
! }
!
! else {
! repaint();
! }
! }
!
! private void paintClosableX(Graphics g, int x, int y, Color x_color) {
!
! int x_pos = x;
! int y_pos = y;
!
! Color col = g.getColor();
!
! g.setColor(x_color);
!
! int y_p = y + 2;
! g.drawLine(x + 1, y_p, x + 12, y_p);
! g.drawLine(x + 1, y_p + 13, x + 12, y_p + 13);
! g.drawLine(x, y_p + 1, x, y_p + 12);
! g.drawLine(x + 13, y_p + 1, x + 13, y_p + 12);
! g.drawLine(x + 3, y_p + 3, x + 10, y_p + 10);
! g.drawLine(x + 3, y_p + 4, x + 9, y_p + 10);
! g.drawLine(x + 4, y_p + 3, x + 10, y_p + 9);
! g.drawLine(x + 10, y_p + 3, x + 3, y_p + 10);
! g.drawLine(x + 10, y_p + 4, x + 4, y_p + 10);
! g.drawLine(x + 9, y_p + 3, x + 3, y_p + 9);
! g.setColor(col);
!
! }
! public void mouseEntered(MouseEvent e) {
!
!
! }
!
! public void mouseExited(MouseEvent e) {
! tabNumber = -1;
! repaint();
!
! }
!
! public void mousePressed(MouseEvent e) {
! }
!
! public void mouseReleased(MouseEvent e) {
!
! }
!
! /**
! * Add a TabClosedListener to the listener list.
! *
! * @param listener The TabClosedListener to be added
! */
! public synchronized void addtabCloseListener(TabClosedListener listener) {
!
! if (closeListeners == null) {
! closeListeners = new java.util.Vector(3);
! }
! closeListeners.addElement(listener);
!
! }
!
! /**
! * Remove a TabClosedListener from the listener list.
! *
! * @param listener The TabClosedListener to be removed
! */
! public synchronized void removeTabCloseListener(TabClosedListener listener) {
! if (closeListeners == null) {
! return;
! }
! closeListeners.removeElement(listener);
!
! }
!
! public void fireTabClosed(int tabToClose) {
! if (closeListeners != null) {
! int size = closeListeners.size();
! for (int i = 0; i < size; i++) {
! TabClosedListener target =
! (TabClosedListener)closeListeners.elementAt(i);
! target.tabClosed(tabToClose);
! }
! }
!
!
! }
!
! /**
! *
! * This makes sure the icon and label are left justified in the tabs
! */
! class MyBasicTabbedPaneUI extends BasicTabbedPaneUI {
!
! // not supported right now but maybe in the future. Right now text is
! // on the right and the icon is on the left with both left justified in
! // in the tab. Not changeble.
!
! private int horizontalTextPosition = SwingUtilities.RIGHT;
!
! public MyBasicTabbedPaneUI() {
! }
!
! public MyBasicTabbedPaneUI(int horTextPosition) {
! horizontalTextPosition = horTextPosition;
! }
!
! protected void layoutLabel(int tabPlacement, FontMetrics metrics,
! int tabIndex, String title, Icon icon, Rectangle tabRect,
! Rectangle iconRect, Rectangle textRect, boolean isSelected) {
!
! textRect.x = 0;
! textRect.y = 0;
! iconRect.x = 0;
! iconRect.y = 0;
!
! SwingUtilities.layoutCompoundLabel((JComponent) tabPane, metrics,
! title, icon, SwingUtilities.CENTER, SwingUtilities.LEFT,
! SwingUtilities.CENTER, horizontalTextPosition, tabRect,
! iconRect, textRect, textIconGap + 2);
!
! }
! }
!
}
\ No newline at end of file
-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 -
digital self defense, top technical experts, no vendor pitches,
unmatched networking opportunities. Visit www.blackhat.com