TabHighlighter.java
01 /*
02  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
03  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
04  *
05  *  This file is part of GATE (see http://gate.ac.uk/), and is free
06  *  software, licenced under the GNU Library General Public License,
07  *  Version 2, June 1991 (in the distribution as file licence.html,
08  *  and also available at http://gate.ac.uk/gate/licence.html).
09  *
10  *  Valentin Tablan 07/11/2001
11  *
12  *  $Id: TabHighlighter.java 17530 2014-03-04 15:57:43Z markagreenwood $
13  */
14 package gate.gui;
15 
16 
17 import java.awt.Color;
18 import java.awt.Component;
19 import java.awt.event.MouseAdapter;
20 import java.awt.event.MouseEvent;
21 
22 import javax.swing.JTabbedPane;
23 import javax.swing.event.ChangeEvent;
24 import javax.swing.event.ChangeListener;
25 
26 /**
27  * Highligts a tab in a JTabbedPane. Removes the highlight automatically when
28  * the highlighted tab is selected.
29  */
30 public class TabHighlighter {
31   public TabHighlighter(JTabbedPane pane, Component comp,
32                         Color highlightColour){
33     this.tPane = pane;
34     this.tab = tPane.indexOfComponent(comp);
35     this.highlightColour = highlightColour;
36     tPane.getModel().addChangeListener(new ChangeListener() {
37       @Override
38       public void stateChanged(ChangeEvent e) {
39         if(tPane.getSelectedIndex() == tabremoveHighlight();
40       }
41     });
42 
43     tPane.addMouseListener(new MouseAdapter() {
44       @Override
45       public void mouseClicked(MouseEvent e) {
46         if(tPane.getSelectedIndex() == tabremoveHighlight();
47       }
48     });
49 
50   }// TabBlinker(JTabbedPane pane, Component comp, Color blinkColor)
51 
52   /**
53    * Highlights the tab unless is selected
54    */
55   public void highlight(){
56     if(tPane.getSelectedIndex() != tab){
57       if(tPane.getBackgroundAt(tab).equals(highlightColour)) return;
58 
59       oldColour = tPane.getBackgroundAt(tab);
60       tPane.setBackgroundAt(tab, highlightColour);
61     }
62   }//public void highlight()
63 
64 
65   /**
66    * Restores the tab to the normal colour
67    */
68   public void removeHighlight(){
69     tPane.setBackgroundAt(tab, oldColour);
70   }// public void removeHighlight()
71 
72   JTabbedPane tPane;
73   int tab;
74   Color highlightColour;
75   Color oldColour;
76 }