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

(-)a/editor/nbproject/project.xml (-1 / +1 lines)
Lines 151-157 Link Here
151
                    <build-prerequisite/>
151
                    <build-prerequisite/>
152
                    <compile-dependency/>
152
                    <compile-dependency/>
153
                    <run-dependency>
153
                    <run-dependency>
154
                        <specification-version>7.7</specification-version>
154
                        <specification-version>7.38</specification-version>
155
                    </run-dependency>
155
                    </run-dependency>
156
                </dependency>
156
                </dependency>
157
                <dependency>
157
                <dependency>
(-)a/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);
(-)a/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
        }
(-)a/openide.awt/apichanges.xml (+15 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="14" 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
        <class package="org.openide.awt" name="CloseButtonFactory"/>
66
        <issue number="201639"/>
67
    </change>
53
    <change id="mnemonics.in.popup">
68
    <change id="mnemonics.in.popup">
54
        <api name="awt"/>
69
        <api name="awt"/>
55
        <summary>Turn on Mnemonics in Popup Menus</summary>
70
        <summary>Turn on Mnemonics in Popup Menus</summary>
(-)a/openide.awt/manifest.mf (-1 / +1 lines)
Lines 2-6 Link Here
2
OpenIDE-Module: org.openide.awt
2
OpenIDE-Module: org.openide.awt
3
OpenIDE-Module-Localizing-Bundle: org/openide/awt/Bundle.properties
3
OpenIDE-Module-Localizing-Bundle: org/openide/awt/Bundle.properties
4
AutoUpdate-Essential-Module: true
4
AutoUpdate-Essential-Module: true
5
OpenIDE-Module-Specification-Version: 7.37
5
OpenIDE-Module-Specification-Version: 7.38
6
6
(-)a/openide.awt/src/org/openide/awt/CloseButtonFactory.java (+252 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
    private static Image bigCloseTabImage;
67
    private static Image bigCloseTabPressedImage;
68
    private static Image bigCloseTabMouseOverImage;
69
70
    private CloseButtonFactory() {
71
    }
72
    
73
    /**
74
     * Creates a small 'close' JButton with close icon, rollover icon and pressed icon according to Look and Feel
75
     * 
76
     * @return JButton with close icons.
77
     */
78
    public static JButton createCloseButton() {
79
        JButton closeButton = new JButton();
80
        int size = 16;
81
        closeButton.setPreferredSize(new Dimension(size, size));
82
        closeButton.setContentAreaFilled(false);
83
        closeButton.setFocusable(false);
84
        closeButton.setBorder(BorderFactory.createEmptyBorder());
85
        closeButton.setBorderPainted(false);
86
        closeButton.setRolloverEnabled(true);
87
        closeButton.setIcon(ImageUtilities.image2Icon(getCloseTabImage()));
88
        closeButton.setRolloverIcon(ImageUtilities.image2Icon(getCloseTabRolloverImage()));
89
        closeButton.setPressedIcon(ImageUtilities.image2Icon(getCloseTabPressedImage()));
90
        return closeButton;
91
    }
92
    
93
    /**
94
     * Creates a big 'close' JButton with close icon, rollover icon and pressed icon according to Look and Feel
95
     * 
96
     * @return JButton with close icons.
97
     */
98
    public static JButton createBigCloseButton() {
99
        JButton closeButton = new JButton();
100
        int size = 19;
101
        closeButton.setPreferredSize(new Dimension(size, size));
102
        closeButton.setContentAreaFilled(false);
103
        closeButton.setFocusable(false);
104
        closeButton.setBorder(BorderFactory.createEmptyBorder());
105
        closeButton.setBorderPainted(false);
106
        closeButton.setRolloverEnabled(true);
107
        closeButton.setIcon(ImageUtilities.image2Icon(getBigCloseTabImage()));
108
        closeButton.setRolloverIcon(ImageUtilities.image2Icon(getBigCloseTabRolloverImage()));
109
        closeButton.setPressedIcon(ImageUtilities.image2Icon(getBigCloseTabPressedImage()));
110
        return closeButton;
111
    }
112
113
    private static boolean isWindowsVistaLaF() {
114
        String osName = System.getProperty("os.name");
115
        return osName.indexOf("Vista") >= 0
116
                || (osName.equals("Windows NT (unknown)") && "6.0".equals(System.getProperty("os.version")));
117
    }
118
119
    private static boolean isWindowsXPLaF() {
120
        Boolean isXP = (Boolean) Toolkit.getDefaultToolkit().
121
                getDesktopProperty("win.xpstyle.themeActive"); //NOI18N
122
        return isWindowsLaF() && (isXP == null ? false : isXP.booleanValue());
123
    }
124
125
    private static boolean isWindowsLaF() {
126
        String lfID = UIManager.getLookAndFeel().getID();
127
        return lfID.endsWith("Windows"); //NOI18N
128
    }
129
130
    private static boolean isAquaLaF() {
131
        return "Aqua".equals(UIManager.getLookAndFeel().getID());
132
    }
133
    
134
    private static boolean isGTKLaF () {
135
        return "GTK".equals( UIManager.getLookAndFeel().getID() ); //NOI18N
136
    }
137
138
    private static Image getCloseTabImage() {
139
        if( null == closeTabImage ) {
140
            if( isWindowsVistaLaF() ) {
141
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_close_enabled.png"); // NOI18N
142
            } else if( isWindowsXPLaF() ) {
143
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_close_enabled.png"); // NOI18N
144
            } else if( isWindowsLaF() ) {
145
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/win_close_enabled.png"); // NOI18N
146
            } else if( isAquaLaF() ) {
147
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_close_enabled.png"); // NOI18N
148
            } else if( isGTKLaF() ) {
149
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/gtk_close_enabled.png"); // NOI18N
150
            } else {
151
                closeTabImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_close_enabled.png"); // NOI18N
152
            }
153
        }
154
        return closeTabImage;
155
    }
156
    
157
    private static Image getCloseTabPressedImage() {
158
        if( null == closeTabPressedImage ) {
159
            if( isWindowsVistaLaF() ) {
160
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_close_pressed.png"); // NOI18N
161
            } else if( isWindowsXPLaF() ) {
162
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_close_pressed.png"); // NOI18N
163
            } else if( isWindowsLaF() ) {
164
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/win_close_pressed.png"); // NOI18N
165
            } else if( isAquaLaF() ) {
166
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_close_pressed.png"); // NOI18N
167
            } else if( isGTKLaF() ) {
168
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/gtk_close_pressed.png"); // NOI18N
169
            } else {
170
                closeTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_close_pressed.png"); // NOI18N
171
            }
172
        }
173
        return closeTabPressedImage;
174
    }
175
    
176
    private static Image getCloseTabRolloverImage() {
177
        if( null == closeTabMouseOverImage ) {
178
            if( isWindowsVistaLaF() ) {
179
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_close_rollover.png"); // NOI18N
180
            } else if( isWindowsXPLaF() ) {
181
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_close_rollover.png"); // NOI18N
182
            } else if( isWindowsLaF() ) {
183
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/win_close_rollover.png"); // NOI18N
184
            } else if( isAquaLaF() ) {
185
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_close_rollover.png"); // NOI18N
186
            } else if( isGTKLaF() ) {
187
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/gtk_close_rollover.png"); // NOI18N
188
            } else {
189
                closeTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_close_rollover.png"); // NOI18N
190
            }
191
        }
192
        return closeTabMouseOverImage;
193
    }
194
    
195
    
196
    private static Image getBigCloseTabImage() {
197
        if( null == bigCloseTabImage ) {
198
            if( isWindowsVistaLaF() ) {
199
                bigCloseTabImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_bigclose_enabled.png"); // NOI18N
200
            } else if( isWindowsXPLaF() ) {
201
                bigCloseTabImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_bigclose_enabled.png"); // NOI18N
202
            } else if( isWindowsLaF() ) {
203
                bigCloseTabImage = ImageUtilities.loadImage("org/openide/awt/resources/win_bigclose_enabled.png"); // NOI18N
204
            } else if( isAquaLaF() ) {
205
                bigCloseTabImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_bigclose_enabled.png"); // NOI18N
206
            } else if( isGTKLaF() ) {
207
                bigCloseTabImage = ImageUtilities.loadImage("org/openide/awt/resources/gtk_bigclose_enabled.png"); // NOI18N
208
            } else {
209
                bigCloseTabImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_bigclose_enabled.png"); // NOI18N
210
            }
211
        }
212
        return bigCloseTabImage;
213
    }
214
    
215
    private static  Image getBigCloseTabPressedImage() {
216
        if( null == bigCloseTabPressedImage ) {
217
            if( isWindowsVistaLaF() ) {
218
                bigCloseTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_bigclose_pressed.png"); // NOI18N
219
            } else if( isWindowsXPLaF() ) {
220
                bigCloseTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_bigclose_pressed.png"); // NOI18N
221
            } else if( isWindowsLaF() ) {
222
                bigCloseTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/win_bigclose_pressed.png"); // NOI18N
223
            } else if( isAquaLaF() ) {
224
                bigCloseTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_bigclose_pressed.png"); // NOI18N
225
            } else if( isGTKLaF() ) {
226
                bigCloseTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/gtk_bigclose_pressed.png"); // NOI18N
227
            } else {
228
                bigCloseTabPressedImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_bigclose_pressed.png"); // NOI18N
229
            }
230
        }
231
        return bigCloseTabPressedImage;
232
    }
233
    
234
    private static Image getBigCloseTabRolloverImage() {
235
        if( null == bigCloseTabMouseOverImage ) {
236
            if( isWindowsVistaLaF() ) {
237
                bigCloseTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/vista_bigclose_rollover.png"); // NOI18N
238
            } else if( isWindowsXPLaF() ) {
239
                bigCloseTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/xp_bigclose_rollover.png"); // NOI18N
240
            } else if( isWindowsLaF() ) {
241
                bigCloseTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/win_bigclose_rollover.png"); // NOI18N
242
            } else if( isAquaLaF() ) {
243
                bigCloseTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/mac_bigclose_rollover.png"); // NOI18N
244
            } else if( isGTKLaF() ) {
245
                bigCloseTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/gtk_bigclose_rollover.png"); // NOI18N
246
            } else {
247
                bigCloseTabMouseOverImage = ImageUtilities.loadImage("org/openide/awt/resources/metal_bigclose_rollover.png"); // NOI18N
248
            }
249
        }
250
        return bigCloseTabMouseOverImage;
251
    }
252
}
(-)a/openide.awt/src/org/openide/awt/CloseButtonTabbedPane.java (-73 / +10 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() {
520
                public void actionPerformed(ActionEvent e) {
572
                int size = 16;
521
                    int i = indexOfTabComponent(ButtonTab.this);
573
                setPreferredSize(new Dimension(size, size));
522
                    if (i != -1) {
574
                setContentAreaFilled(false);
523
                        fireCloseRequest(CloseButtonTabbedPane.this.getComponentAt(i));
575
                setFocusable(false);
524
                    }
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) {
586
                int i = indexOfTabComponent(ButtonTab.this);
587
                if (i != -1) {
588
                    fireCloseRequest(CloseButtonTabbedPane.this.getComponentAt(i));
589
                }
525
                }
590
            }
526
            });
527
            add(tabCloseButton);
591
        }
528
        }
592
    }
529
    }
593
530

Return to bug 201639