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/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