This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 201639
Collapse All | Expand All

(-)editor/src/org/netbeans/modules/editor/impl/ReplaceBar.java (-18 / +15 lines)
Lines 235-242 Link Here
235
        padding.setOpaque(false);
235
        padding.setOpaque(false);
236
        add(padding);
236
        add(padding);
237
237
238
        add(createCloseButton());
239
240
        searchBarFocusTraversalPolicy = createSearchBarFocusTraversalPolicy();
238
        searchBarFocusTraversalPolicy = createSearchBarFocusTraversalPolicy();
241
239
242
        setVisible(false);
240
        setVisible(false);
Lines 542-561 Link Here
542
        return incSearchComboBox;
540
        return incSearchComboBox;
543
    }
541
    }
544
542
545
    private JButton createCloseButton() throws MissingResourceException {
546
        JButton closeButton = new JButton(ImageUtilities.loadImageIcon("org/netbeans/modules/editor/resources/find_close.png", false)); // NOI18N
547
        closeButton.addActionListener(new ActionListener() {
548
549
            @Override
550
            public void actionPerformed(ActionEvent e) {
551
                looseFocus();
552
            }
553
        });
554
        closeButton.setToolTipText(NbBundle.getMessage(SearchBar.class, "TOOLTIP_CloseIncrementalSearchSidebar")); // NOI18N
555
        closeButton.setMargin(BUTTON_INSETS);
556
        return closeButton;
557
    }
558
559
    private void addEscapeKeystrokeFocusBackTo(JPanel jpanel) {
543
    private void addEscapeKeystrokeFocusBackTo(JPanel jpanel) {
560
        jpanel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, true),
544
        jpanel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, true),
561
                "loose-focus"); // NOI18N
545
                "loose-focus"); // NOI18N
Lines 595-602 Link Here
595
        }
579
        }
596
    }
580
    }
597
581
582
    private ActionListener closeButtonListener;
583
    private ActionListener getCloseButtonListener() {
584
        if (closeButtonListener == null)
585
            closeButtonListener = new ActionListener() {
586
587
            @Override
588
            public void actionPerformed(ActionEvent e) {
589
                looseFocus();
590
            }
591
        };
592
        return closeButtonListener;
593
    }
594
    
598
    private void unchangeSearchBarToBeOnlySearchBar() throws MissingResourceException {
595
    private void unchangeSearchBarToBeOnlySearchBar() throws MissingResourceException {
599
        searchBar.getCloseButton().setVisible(true);
596
        searchBar.getCloseButton().removeActionListener(getCloseButtonListener());
600
        Mnemonics.setLocalizedText(searchBar.getFindLabel(), NbBundle.getMessage(SearchBar.class, "CTL_Find")); // NOI18N
597
        Mnemonics.setLocalizedText(searchBar.getFindLabel(), NbBundle.getMessage(SearchBar.class, "CTL_Find")); // NOI18N
601
        searchBar.getFindLabel().setPreferredSize(searchBar.getFindLabel().getMinimumSize());
598
        searchBar.getFindLabel().setPreferredSize(searchBar.getFindLabel().getMinimumSize());
602
        searchBar.addEscapeKeystrokeFocusBackTo(searchBar);
599
        searchBar.addEscapeKeystrokeFocusBackTo(searchBar);
Lines 610-616 Link Here
610
    }
607
    }
611
608
612
    private void changeSearchBarToBePartOfReplaceBar() throws MissingResourceException {
609
    private void changeSearchBarToBePartOfReplaceBar() throws MissingResourceException {
613
        searchBar.getCloseButton().setVisible(false);
610
        searchBar.getCloseButton().addActionListener(getCloseButtonListener());
614
        Mnemonics.setLocalizedText(searchBar.getFindLabel(), NbBundle.getMessage(SearchBar.class, "CTL_Replace_Find")); // NOI18N
611
        Mnemonics.setLocalizedText(searchBar.getFindLabel(), NbBundle.getMessage(SearchBar.class, "CTL_Replace_Find")); // NOI18N
615
        searchBar.getFindLabel().setPreferredSize(new Dimension(replaceLabel.getPreferredSize().width, searchBar.getFindLabel().getPreferredSize().height));
612
        searchBar.getFindLabel().setPreferredSize(new Dimension(replaceLabel.getPreferredSize().width, searchBar.getFindLabel().getPreferredSize().height));
616
        this.addEscapeKeystrokeFocusBackTo(searchBar);
613
        this.addEscapeKeystrokeFocusBackTo(searchBar);
(-)editor/src/org/netbeans/modules/editor/impl/SearchBar.java (-3 / +3 lines)
Lines 102-107 Link Here
102
import javax.swing.text.Keymap;
102
import javax.swing.text.Keymap;
103
import org.netbeans.api.editor.EditorRegistry;
103
import org.netbeans.api.editor.EditorRegistry;
104
import org.netbeans.modules.editor.lib2.search.EditorFindSupport;
104
import org.netbeans.modules.editor.lib2.search.EditorFindSupport;
105
import org.openide.awt.CloseButtonFactory;
105
import org.openide.awt.Mnemonics;
106
import org.openide.awt.Mnemonics;
106
import org.openide.awt.StatusDisplayer;
107
import org.openide.awt.StatusDisplayer;
107
import org.openide.filesystems.FileObject;
108
import org.openide.filesystems.FileObject;
Lines 467-473 Link Here
467
    }
468
    }
468
469
469
    private JButton createCloseButton() throws MissingResourceException {
470
    private JButton createCloseButton() throws MissingResourceException {
470
        JButton button = new JButton(ImageUtilities.loadImageIcon("org/netbeans/modules/editor/resources/find_close.png", false)); // NOI18N
471
        JButton button = CloseButtonFactory.createBigCloseButton();
471
        button.addActionListener(new ActionListener() {
472
        button.addActionListener(new ActionListener() {
472
473
473
            @Override
474
            @Override
Lines 476-482 Link Here
476
            }
477
            }
477
        });
478
        });
478
        button.setToolTipText(NbBundle.getMessage(SearchBar.class, "TOOLTIP_CloseIncrementalSearchSidebar")); // NOI18N
479
        button.setToolTipText(NbBundle.getMessage(SearchBar.class, "TOOLTIP_CloseIncrementalSearchSidebar")); // NOI18N
479
        button.setMargin(BUTTON_INSETS);
480
        return button;
480
        return button;
481
    }
481
    }
482
482
Lines 686-692 Link Here
686
        int parentWidth = this.getParent().getWidth();
686
        int parentWidth = this.getParent().getWidth();
687
        int totalWidth = 0;
687
        int totalWidth = 0;
688
        for (Component c : this.getComponents()) {
688
        for (Component c : this.getComponents()) {
689
            if (c != padding && (c != closeButton || c.isVisible())) {
689
            if (c != padding) {
690
                totalWidth += c.getPreferredSize().width;
690
                totalWidth += c.getPreferredSize().width;
691
            }
691
            }
692
        }
692
        }
(-)openide.awt/apichanges.xml (+14 lines)
Lines 50-55 Link Here
50
<apidef name="awt">AWT API</apidef>
50
<apidef name="awt">AWT API</apidef>
51
</apidefs>
51
</apidefs>
52
<changes>
52
<changes>
53
    <change id="closebutton.api">
54
        <api name="awt"/>
55
        <summary>Close Button API</summary>
56
        <version major="7" minor="38"/>
57
        <date day="6" month="9" year="2011"/>
58
        <author login="mkristofic"/>
59
        <compatibility addition="yes" binary="compatible" deletion="no" semantic="compatible"/>
60
        <description>
61
            <p>
62
                New close button factory to a create close button or a big close button.
63
            </p>
64
        </description>
65
        <issue number="201639"/>
66
    </change>
53
    <change id="mnemonics.in.popup">
67
    <change id="mnemonics.in.popup">
54
        <api name="awt"/>
68
        <api name="awt"/>
55
        <summary>Turn on Mnemonics in Popup Menus</summary>
69
        <summary>Turn on Mnemonics in Popup Menus</summary>
(-)openide.awt/src/org/openide/awt/CloseButtonFactory.java (+233 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * Contributor(s):
28
 *
29
 * The Original Software is NetBeans. The Initial Developer of the Original
30
 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
31
 * Microsystems, Inc. All Rights Reserved.
32
 *
33
 * If you wish your version of this file to be governed by only the CDDL
34
 * or only the GPL Version 2, indicate your decision by adding
35
 * "[Contributor] elects to include this software in this distribution
36
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
37
 * single choice of license, a recipient has the option to distribute
38
 * your version of this file under either the CDDL, the GPL Version 2 or
39
 * to extend the choice of license to its licensees as provided above.
40
 * However, if you add GPL Version 2 code and therefore, elected the GPL
41
 * Version 2 license, then the option applies only if the new code is
42
 * made subject to such option by the copyright holder.
43
 */
44
45
package org.openide.awt;
46
47
import java.awt.Dimension;
48
import java.awt.Image;
49
import java.awt.Toolkit;
50
import javax.swing.BorderFactory;
51
import javax.swing.JButton;
52
import javax.swing.UIManager;
53
import org.openide.util.ImageUtilities;
54
55
/**
56
 * Factory class for Close Buttons.
57
 *
58
 * @author M. Kristofic
59
 * @since 7.38
60
 */
61
public final class CloseButtonFactory{
62
63
    private static Image closeTabImage;
64
    private static Image closeTabPressedImage;
65
    private static Image closeTabMouseOverImage;
66
67
    private CloseButtonFactory() {
68
    }
69
    
70
    /**
71
     * Creates a small 'close' JButton with close icon, rollover icon and pressed icon according to Look and Feel
72
     * 
73
     * @return JButton with close icons.
74
     */
75
    public static JButton createCloseButton() {
76
        JButton closeButton = new JButton();
77
        int size = 16;
78
        closeButton.setPreferredSize(new Dimension(size, size));
79
        closeButton.setContentAreaFilled(false);
80
        closeButton.setFocusable(false);
81
        closeButton.setBorder(BorderFactory.createEmptyBorder());
82
        closeButton.setBorderPainted(false);
83
        closeButton.setRolloverEnabled(true);
84
        closeButton.setIcon(ImageUtilities.image2Icon(getCloseTabImage()));
85
        closeButton.setRolloverIcon(ImageUtilities.image2Icon(getCloseTabRolloverImage()));
86
        closeButton.setPressedIcon(ImageUtilities.image2Icon(getCloseTabPressedImage()));
87
        return closeButton;
88
    }
89
    
90
    /**
91
     * Creates a big 'close' JButton with close icon, rollover icon and pressed icon according to Look and Feel
92
     * 
93
     * @return JButton with close icons.
94
     */
95
    public static JButton createBigCloseButton() {
96
        JButton closeButton = new JButton();
97
        int size = 19;
98
        closeButton.setPreferredSize(new Dimension(size, size));
99
        closeButton.setContentAreaFilled(false);
100
        closeButton.setFocusable(false);
101
        closeButton.setBorder(BorderFactory.createEmptyBorder());
102
        closeButton.setBorderPainted(false);
103
        closeButton.setRolloverEnabled(true);
104
        closeButton.setIcon(ImageUtilities.image2Icon(getBigCloseTabImage()));
105
        closeButton.setRolloverIcon(ImageUtilities.image2Icon(getBigCloseTabRolloverImage()));
106
        closeButton.setPressedIcon(ImageUtilities.image2Icon(getBigCloseTabPressedImage()));
107
        return closeButton;
108
    }
109
110
    private static boolean isWindowsVistaLaF() {
111
        String osName = System.getProperty("os.name");
112
        return osName.indexOf("Vista") >= 0
113
                || (osName.equals("Windows NT (unknown)") && "6.0".equals(System.getProperty("os.version")));
114
    }
115
116
    private static boolean isWindowsXPLaF() {
117
        Boolean isXP = (Boolean) Toolkit.getDefaultToolkit().
118
                getDesktopProperty("win.xpstyle.themeActive"); //NOI18N
119
        return isWindowsLaF() && (isXP == null ? false : isXP.booleanValue());
120
    }
121
122
    private static boolean isWindowsLaF() {
123
        String lfID = UIManager.getLookAndFeel().getID();
124
        return lfID.endsWith("Windows"); //NOI18N
125
    }
126
127
    private static boolean isAquaLaF() {
128
        return "Aqua".equals(UIManager.getLookAndFeel().getID());
129
    }
130
131
    private static Image getCloseTabImage() {
132
        if( null == closeTabImage ) {
133
            if( isWindowsVistaLaF() ) {
134
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_close_enabled.png"); // NOI18N
135
            } else if( isWindowsXPLaF() ) {
136
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_close_enabled.png"); // NOI18N
137
            } else if( isWindowsLaF() ) {
138
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/win_close_enabled.png"); // NOI18N
139
            } else if( isAquaLaF() ) {
140
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_close_enabled.png"); // NOI18N
141
            } else {
142
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_close_enabled.png"); // NOI18N
143
            }
144
        }
145
        return closeTabImage;
146
    }
147
    
148
    private static Image getCloseTabPressedImage() {
149
        if( null == closeTabPressedImage ) {
150
            if( isWindowsVistaLaF() ) {
151
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_close_pressed.png"); // NOI18N
152
            } else if( isWindowsXPLaF() ) {
153
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_close_pressed.png"); // NOI18N
154
            } else if( isWindowsLaF() ) {
155
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/win_close_pressed.png"); // NOI18N
156
            } else if( isAquaLaF() ) {
157
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_close_pressed.png"); // NOI18N
158
            } else {
159
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_close_pressed.png"); // NOI18N
160
            }
161
        }
162
        return closeTabPressedImage;
163
    }
164
    
165
    private static Image getCloseTabRolloverImage() {
166
        if( null == closeTabMouseOverImage ) {
167
            if( isWindowsVistaLaF() ) {
168
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_close_rollover.png"); // NOI18N
169
            } else if( isWindowsXPLaF() ) {
170
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_close_rollover.png"); // NOI18N
171
            } else if( isWindowsLaF() ) {
172
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/win_close_rollover.png"); // NOI18N
173
            } else if( isAquaLaF() ) {
174
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_close_rollover.png"); // NOI18N
175
            } else {
176
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_close_rollover.png"); // NOI18N
177
            }
178
        }
179
        return closeTabMouseOverImage;
180
    }
181
    
182
    
183
    private static Image getBigCloseTabImage() {
184
        if( null == closeTabImage ) {
185
            if( isWindowsVistaLaF() ) {
186
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_bigclose_enabled.png"); // NOI18N
187
            } else if( isWindowsXPLaF() ) {
188
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_bigclose_enabled.png"); // NOI18N
189
            } else if( isWindowsLaF() ) {
190
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/win_bigclose_enabled.png"); // NOI18N
191
            } else if( isAquaLaF() ) {
192
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_bigclose_enabled.png"); // NOI18N
193
            } else {
194
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_bigclose_enabled.png"); // NOI18N
195
            }
196
        }
197
        return closeTabImage;
198
    }
199
    
200
    private static  Image getBigCloseTabPressedImage() {
201
        if( null == closeTabPressedImage ) {
202
            if( isWindowsVistaLaF() ) {
203
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_bigclose_pressed.png"); // NOI18N
204
            } else if( isWindowsXPLaF() ) {
205
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_bigclose_pressed.png"); // NOI18N
206
            } else if( isWindowsLaF() ) {
207
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/win_bigclose_pressed.png"); // NOI18N
208
            } else if( isAquaLaF() ) {
209
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_bigclose_pressed.png"); // NOI18N
210
            } else {
211
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_bigclose_pressed.png"); // NOI18N
212
            }
213
        }
214
        return closeTabPressedImage;
215
    }
216
    
217
    private static Image getBigCloseTabRolloverImage() {
218
        if( null == closeTabMouseOverImage ) {
219
            if( isWindowsVistaLaF() ) {
220
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_bigclose_rollover.png"); // NOI18N
221
            } else if( isWindowsXPLaF() ) {
222
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_bigclose_rollover.png"); // NOI18N
223
            } else if( isWindowsLaF() ) {
224
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/win_bigclose_rollover.png"); // NOI18N
225
            } else if( isAquaLaF() ) {
226
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_bigclose_rollover.png"); // NOI18N
227
            } else {
228
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_bigclose_rollover.png"); // NOI18N
229
            }
230
        }
231
        return closeTabMouseOverImage;
232
    }
233
}
(-)openide.awt/src/org/openide/awt/CloseButtonTabbedPane.java (-68 / +5 lines)
Lines 320-376 Link Here
320
        return "GTK".equals( UIManager.getLookAndFeel().getID() ); //NOI18N
320
        return "GTK".equals( UIManager.getLookAndFeel().getID() ); //NOI18N
321
    }
321
    }
322
    
322
    
323
    private Image getCloseTabImage() {
324
        if( null == closeTabImage ) {
325
            if( isWindowsVistaLaF() ) {
326
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_close_enabled.png"); // NOI18N
327
            } else if( isWindowsXPLaF() ) {
328
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_close_enabled.png"); // NOI18N
329
            } else if( isWindowsLaF() ) {
330
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/win_close_enabled.png"); // NOI18N
331
            } else if( isAquaLaF() ) {
332
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_close_enabled.png"); // NOI18N
333
            } else {
334
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_close_enabled.png"); // NOI18N
335
            }
336
        }
337
        return closeTabImage;
338
    }
339
    
340
    private Image getCloseTabPressedImage() {
341
        if( null == closeTabPressedImage ) {
342
            if( isWindowsVistaLaF() ) {
343
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_close_pressed.png"); // NOI18N
344
            } else if( isWindowsXPLaF() ) {
345
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_close_pressed.png"); // NOI18N
346
            } else if( isWindowsLaF() ) {
347
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/win_close_pressed.png"); // NOI18N
348
            } else if( isAquaLaF() ) {
349
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_close_pressed.png"); // NOI18N
350
            } else {
351
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_close_pressed.png"); // NOI18N
352
            }
353
        }
354
        return closeTabPressedImage;
355
    }
356
    
357
    private Image getCloseTabRolloverImage() {
358
        if( null == closeTabMouseOverImage ) {
359
            if( isWindowsVistaLaF() ) {
360
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_close_rollover.png"); // NOI18N
361
            } else if( isWindowsXPLaF() ) {
362
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_close_rollover.png"); // NOI18N
363
            } else if( isWindowsLaF() ) {
364
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/win_close_rollover.png"); // NOI18N
365
            } else if( isAquaLaF() ) {
366
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_close_rollover.png"); // NOI18N
367
            } else {
368
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_close_rollover.png"); // NOI18N
369
            }
370
        }
371
        return closeTabMouseOverImage;
372
    }
373
    
374
    private void setPressedCloseButtonIndex(int index) {
323
    private void setPressedCloseButtonIndex(int index) {
375
        if (pressedCloseButtonIndex == index)
324
        if (pressedCloseButtonIndex == index)
376
            return;
325
            return;
Lines 564-593 Link Here
564
                }
513
                }
565
            };
514
            };
566
            add(label);
515
            add(label);
567
            add(new TabButton());
516
            JButton tabCloseButton = CloseButtonFactory.createCloseButton();
568
        }
517
            tabCloseButton.addActionListener(new ActionListener() {
569
518
570
        private class TabButton extends JButton implements ActionListener {
519
                @Override
571
            public TabButton() {
572
                int size = 16;
573
                setPreferredSize(new Dimension(size, size));
574
                setContentAreaFilled(false);
575
                setFocusable(false);
576
                setBorder(BorderFactory.createEmptyBorder());
577
                setBorderPainted(false);
578
                setRolloverEnabled(true);
579
                addActionListener(this);
580
                setIcon(ImageUtilities.image2Icon(getCloseTabImage()));
581
                setRolloverIcon(ImageUtilities.image2Icon(getCloseTabRolloverImage()));
582
                setPressedIcon(ImageUtilities.image2Icon(getCloseTabPressedImage()));
583
            }
584
585
            public void actionPerformed(ActionEvent e) {
520
            public void actionPerformed(ActionEvent e) {
586
                int i = indexOfTabComponent(ButtonTab.this);
521
                int i = indexOfTabComponent(ButtonTab.this);
587
                if (i != -1) {
522
                if (i != -1) {
588
                    fireCloseRequest(CloseButtonTabbedPane.this.getComponentAt(i));
523
                    fireCloseRequest(CloseButtonTabbedPane.this.getComponentAt(i));
589
                }
524
                }
590
            }
525
            }
526
            });
527
            add(tabCloseButton);
591
        }
528
        }
592
    }
529
    }
593
530

Return to bug 201639