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 222406
Collapse All | Expand All

(-)a/api.search/apichanges.xml (+21 lines)
Lines 105-110 Link Here
105
    <!-- ACTUAL CHANGES BEGIN HERE: -->
105
    <!-- ACTUAL CHANGES BEGIN HERE: -->
106
106
107
    <changes>
107
    <changes>
108
        <change id="SearchScopeDefinition_getIcon">
109
            <api name="api.search"/>
110
            <summary>Added method getIcon to class SearchScopeDefinition</summary>
111
            <version major="1" minor="10"/>
112
            <date day="29" month="1" year="2013"/>
113
            <author login="jhavlin"/>
114
            <compatibility addition="yes"/>
115
            <description>
116
                <p>
117
                    Search scope can define an icon that will be shown in the
118
                    UI, usually in the combo box for search scope selection.
119
                </p>
120
                <p>
121
                    To use a custom scope icon, override method
122
                    SearchScopeDefinition.getIcon().
123
                </p>
124
            </description>
125
            <class package="org.netbeans.spi.search" name="SearchScopeDefinition"/>
126
            <issue number="222406"/>
127
        </change>
128
108
        <change id="ReplaceHistory">
129
        <change id="ReplaceHistory">
109
            <api name="api.search"/>
130
            <api name="api.search"/>
110
            <summary>Added ReplacePattern and replace history to SearchHistory class</summary>
131
            <summary>Added ReplacePattern and replace history to SearchHistory class</summary>
(-)a/api.search/manifest.mf (-1 / +1 lines)
Lines 1-5 Link Here
1
Manifest-Version: 1.0
1
Manifest-Version: 1.0
2
OpenIDE-Module: org.netbeans.api.search
2
OpenIDE-Module: org.netbeans.api.search
3
OpenIDE-Module-Localizing-Bundle: org/netbeans/api/search/Bundle.properties
3
OpenIDE-Module-Localizing-Bundle: org/netbeans/api/search/Bundle.properties
4
OpenIDE-Module-Specification-Version: 1.9
4
OpenIDE-Module-Specification-Version: 1.10
5
5
(-)a/api.search/src/org/netbeans/api/search/ui/ScopeController.java (+23 lines)
Lines 41-52 Link Here
41
 */
41
 */
42
package org.netbeans.api.search.ui;
42
package org.netbeans.api.search.ui;
43
43
44
import java.awt.Component;
44
import java.awt.Dialog;
45
import java.awt.Dialog;
45
import java.awt.event.ActionEvent;
46
import java.awt.event.ActionEvent;
46
import java.awt.event.ActionListener;
47
import java.awt.event.ActionListener;
47
import java.awt.event.HierarchyEvent;
48
import java.awt.event.HierarchyEvent;
48
import java.awt.event.HierarchyListener;
49
import java.awt.event.HierarchyListener;
50
import javax.swing.DefaultListCellRenderer;
49
import javax.swing.JComboBox;
51
import javax.swing.JComboBox;
52
import javax.swing.JLabel;
53
import javax.swing.JList;
50
import javax.swing.SwingUtilities;
54
import javax.swing.SwingUtilities;
51
import javax.swing.event.ChangeEvent;
55
import javax.swing.event.ChangeEvent;
52
import javax.swing.event.ChangeListener;
56
import javax.swing.event.ChangeListener;
Lines 84-89 Link Here
84
        this.extraSearchScopes = extraSearchScopes;
88
        this.extraSearchScopes = extraSearchScopes;
85
        component.addHierarchyListener(new ScopeComboBoxHierarchyListener());
89
        component.addHierarchyListener(new ScopeComboBoxHierarchyListener());
86
        component.setEditable(false);
90
        component.setEditable(false);
91
        component.setRenderer(new ScopeCellRenderer());
87
    }
92
    }
88
93
89
    private String chooseId() {
94
    private String chooseId() {
Lines 294-297 Link Here
294
            active = false;
299
            active = false;
295
        }
300
        }
296
    }
301
    }
302
303
    private static class ScopeCellRenderer extends DefaultListCellRenderer {
304
305
        @Override
306
        public Component getListCellRendererComponent(JList list, Object value,
307
                int index, boolean isSelected, boolean cellHasFocus) {
308
            Component component = super.getListCellRendererComponent(
309
                    list, value, index, isSelected, cellHasFocus);
310
            if (component instanceof JLabel) {
311
                JLabel label = (JLabel) component;
312
                if (value instanceof ScopeItem) {
313
                    ScopeItem item = (ScopeItem) value;
314
                    label.setIcon(item.getSearchScope().getIcon());
315
                }
316
            }
317
            return component;
318
        }
319
    }
297
};
320
};
(-)a/api.search/src/org/netbeans/modules/search/SearchScopeBrowse.java (+26 lines)
Lines 46-51 Link Here
46
import java.util.Iterator;
46
import java.util.Iterator;
47
import java.util.List;
47
import java.util.List;
48
import java.util.concurrent.atomic.AtomicBoolean;
48
import java.util.concurrent.atomic.AtomicBoolean;
49
import javax.swing.Icon;
50
import javax.swing.UIManager;
49
import org.netbeans.api.search.SearchRoot;
51
import org.netbeans.api.search.SearchRoot;
50
import org.netbeans.api.search.SearchScopeOptions;
52
import org.netbeans.api.search.SearchScopeOptions;
51
import org.netbeans.api.search.provider.SearchInfo;
53
import org.netbeans.api.search.provider.SearchInfo;
Lines 59-64 Link Here
59
import org.openide.filesystems.FileChooserBuilder;
61
import org.openide.filesystems.FileChooserBuilder;
60
import org.openide.filesystems.FileObject;
62
import org.openide.filesystems.FileObject;
61
import org.openide.filesystems.FileUtil;
63
import org.openide.filesystems.FileUtil;
64
import org.openide.util.ImageUtilities;
62
import org.openide.util.NbBundle;
65
import org.openide.util.NbBundle;
63
66
64
/**
67
/**
Lines 71-80 Link Here
71
 */
74
 */
72
public class SearchScopeBrowse {
75
public class SearchScopeBrowse {
73
76
77
    private static final String ICON_KEY_UIMANAGER_NB =
78
            "Nb.Explorer.Folder.openedIcon";                            //NOI18N
79
    private static final Icon ICON;
80
74
    private static FileObject[] roots = null;
81
    private static FileObject[] roots = null;
75
    private SearchScopeDefinition browseScope = new BrowseScope();
82
    private SearchScopeDefinition browseScope = new BrowseScope();
76
    private SearchScopeDefinition getLastScope = new GetLastScope();
83
    private SearchScopeDefinition getLastScope = new GetLastScope();
77
84
85
    static {
86
        Icon icon = UIManager.getIcon(ICON_KEY_UIMANAGER_NB);
87
        if (icon == null) {
88
            icon = ImageUtilities.loadImageIcon(
89
                    "org/openide/loaders/defaultFolder.gif", false);    //NOI18N
90
        }
91
        ICON = icon;
92
    }
93
78
    /**
94
    /**
79
     * Search Scope with title "Browse..." that can open file chooser to get
95
     * Search Scope with title "Browse..." that can open file chooser to get
80
     * search roots.
96
     * search roots.
Lines 123-128 Link Here
123
            chooseRoots();
139
            chooseRoots();
124
            notifyListeners();
140
            notifyListeners();
125
        }
141
        }
142
143
        @Override
144
        public Icon getIcon() {
145
            return ICON;
146
        }
126
    }
147
    }
127
148
128
    /**
149
    /**
Lines 164-169 Link Here
164
        @Override
185
        @Override
165
        public void clean() {
186
        public void clean() {
166
        }
187
        }
188
189
        @Override
190
        public Icon getIcon() {
191
            return ICON;
192
        }
167
    }
193
    }
168
194
169
    /**
195
    /**
(-)a/api.search/src/org/netbeans/spi/search/SearchScopeDefinition.java (+12 lines)
Lines 46-51 Link Here
46
46
47
import java.util.ArrayList;
47
import java.util.ArrayList;
48
import java.util.List;
48
import java.util.List;
49
import javax.swing.Icon;
49
import javax.swing.event.ChangeEvent;
50
import javax.swing.event.ChangeEvent;
50
import javax.swing.event.ChangeListener;
51
import javax.swing.event.ChangeListener;
51
import org.netbeans.api.annotations.common.CheckForNull;
52
import org.netbeans.api.annotations.common.CheckForNull;
Lines 170-173 Link Here
170
     */
171
     */
171
    public void selected() {
172
    public void selected() {
172
    }
173
    }
174
175
    /**
176
     * Get icon to show in the combo box. The default implementation returns
177
     * null.
178
     *
179
     * @since api.search/1.10
180
     * @return The icon, or null.
181
     */
182
    public @CheckForNull Icon getIcon() {
183
        return null;
184
    }
173
}
185
}
(-)a/utilities.project/nbproject/project.xml (-1 / +1 lines)
Lines 63-69 Link Here
63
                    <build-prerequisite/>
63
                    <build-prerequisite/>
64
                    <compile-dependency/>
64
                    <compile-dependency/>
65
                    <run-dependency>
65
                    <run-dependency>
66
                        <specification-version>1.0</specification-version>
66
                        <specification-version>1.10</specification-version>
67
                    </run-dependency>
67
                    </run-dependency>
68
                </dependency>
68
                </dependency>
69
                <dependency>
69
                <dependency>
(-)a/utilities.project/src/org/netbeans/modules/search/project/SearchScopeCurrentProject.java (+9 lines)
Lines 43-48 Link Here
43
43
44
import java.beans.PropertyChangeEvent;
44
import java.beans.PropertyChangeEvent;
45
import java.beans.PropertyChangeListener;
45
import java.beans.PropertyChangeListener;
46
import javax.swing.Icon;
46
import org.netbeans.api.project.FileOwnerQuery;
47
import org.netbeans.api.project.FileOwnerQuery;
47
import org.netbeans.api.project.Project;
48
import org.netbeans.api.project.Project;
48
import org.netbeans.api.project.ProjectInformation;
49
import org.netbeans.api.project.ProjectInformation;
Lines 66-71 Link Here
66
    private PropertyChangeListener pcl;
67
    private PropertyChangeListener pcl;
67
    private boolean applicable = true;
68
    private boolean applicable = true;
68
    private String name = null;
69
    private String name = null;
70
    private Icon icon;
69
    private Project project = null;
71
    private Project project = null;
70
72
71
    public SearchScopeCurrentProject() {
73
    public SearchScopeCurrentProject() {
Lines 104-112 Link Here
104
            applicable = true;
106
            applicable = true;
105
            name = NbBundle.getMessage(SearchScopeCurrentProject.class,
107
            name = NbBundle.getMessage(SearchScopeCurrentProject.class,
106
                    "SearchScopeCurrentProject", shortName(project));   //NOI18N
108
                    "SearchScopeCurrentProject", shortName(project));   //NOI18N
109
            icon = ProjectUtils.getInformation(project).getIcon();
107
        } else {
110
        } else {
108
            applicable = false;
111
            applicable = false;
109
            name = "";                                                  //NOI18N
112
            name = "";                                                  //NOI18N
113
            icon = null;
110
        }
114
        }
111
        notifyListeners();
115
        notifyListeners();
112
    }
116
    }
Lines 164-167 Link Here
164
        name = null;
168
        name = null;
165
        project = null;
169
        project = null;
166
    }
170
    }
171
172
    @Override
173
    public Icon getIcon() {
174
        return icon;
175
    }
167
}
176
}
(-)a/utilities.project/src/org/netbeans/modules/search/project/SearchScopeMainProject.java (-1 / +15 lines)
Lines 44-50 Link Here
44
44
45
package org.netbeans.modules.search.project;
45
package org.netbeans.modules.search.project;
46
46
47
import javax.swing.Icon;
47
import org.netbeans.api.project.Project;
48
import org.netbeans.api.project.Project;
49
import org.netbeans.api.project.ProjectInformation;
50
import org.netbeans.api.project.ProjectUtils;
48
import org.netbeans.api.project.ui.OpenProjects;
51
import org.netbeans.api.project.ui.OpenProjects;
49
import org.netbeans.api.search.provider.SearchInfo;
52
import org.netbeans.api.search.provider.SearchInfo;
50
import org.netbeans.api.search.provider.SearchInfoUtils;
53
import org.netbeans.api.search.provider.SearchInfoUtils;
Lines 103-107 Link Here
103
    public int getPriority() {
106
    public int getPriority() {
104
        return 100;
107
        return 100;
105
    }
108
    }
106
    
109
110
    @Override
111
    public Icon getIcon() {
112
        Project p = OpenProjects.getDefault().getMainProject();
113
        if (p != null) {
114
            ProjectInformation pi = ProjectUtils.getInformation(p);
115
            if (pi != null) {
116
                return pi.getIcon();
117
            }
118
        }
119
        return null;
120
    }
107
}
121
}
(-)a/utilities.project/src/org/netbeans/modules/search/project/SearchScopeNodeSelection.java (-1 / +38 lines)
Lines 44-58 Link Here
44
44
45
package org.netbeans.modules.search.project;
45
package org.netbeans.modules.search.project;
46
46
47
import java.awt.Image;
48
import java.awt.image.BufferedImage;
49
import java.beans.BeanInfo;
47
import java.util.ArrayList;
50
import java.util.ArrayList;
48
import java.util.Collection;
51
import java.util.Collection;
49
import java.util.HashMap;
52
import java.util.HashMap;
50
import java.util.List;
53
import java.util.List;
51
import java.util.Map;
54
import java.util.Map;
55
import javax.swing.Icon;
56
import org.netbeans.api.annotations.common.StaticResource;
52
import org.netbeans.api.search.provider.SearchInfo;
57
import org.netbeans.api.search.provider.SearchInfo;
53
import org.netbeans.api.search.provider.SearchInfoUtils;
58
import org.netbeans.api.search.provider.SearchInfoUtils;
54
import org.netbeans.spi.search.SearchScopeDefinition;
59
import org.netbeans.spi.search.SearchScopeDefinition;
55
import org.openide.nodes.Node;
60
import org.openide.nodes.Node;
61
import org.openide.util.ImageUtilities;
56
import org.openide.util.Lookup;
62
import org.openide.util.Lookup;
57
import org.openide.util.LookupEvent;
63
import org.openide.util.LookupEvent;
58
import org.openide.util.LookupListener;
64
import org.openide.util.LookupListener;
Lines 69-78 Link Here
69
 */
75
 */
70
final class SearchScopeNodeSelection extends SearchScopeDefinition
76
final class SearchScopeNodeSelection extends SearchScopeDefinition
71
                                     implements LookupListener {
77
                                     implements LookupListener {
72
    
78
    @StaticResource
79
    private static final String MORE_ICON_ID =
80
            "org/netbeans/modules/search/project/resources/more.png";   //NOI18N
81
82
    @StaticResource
83
    private static final String MULTI_SELECTION_ID =
84
            "org/netbeans/modules/search/project/resources/pages_qualifier.png";   //NOI18N
85
    private static final Icon MULTI_SELECTION_ICON;
86
73
    private final Lookup.Result<Node> lookupResult;
87
    private final Lookup.Result<Node> lookupResult;
74
    private LookupListener lookupListener;
88
    private LookupListener lookupListener;
75
89
90
    static {
91
        MULTI_SELECTION_ICON = ImageUtilities.loadImageIcon(
92
                MULTI_SELECTION_ID, false);
93
    }
94
76
    public SearchScopeNodeSelection() {
95
    public SearchScopeNodeSelection() {
77
        Lookup lookup = Utilities.actionsGlobalContext();
96
        Lookup lookup = Utilities.actionsGlobalContext();
78
        lookupResult = lookup.lookupResult(Node.class);
97
        lookupResult = lookup.lookupResult(Node.class);
Lines 324-327 Link Here
324
    public void resultChanged(LookupEvent ev) {
343
    public void resultChanged(LookupEvent ev) {
325
        notifyListeners();
344
        notifyListeners();
326
    }
345
    }
346
347
    @Override
348
    public Icon getIcon() {
349
        Node[] nodes = getNodes();
350
        if (nodes.length > 1) {
351
            return MULTI_SELECTION_ICON;
352
        } else if (nodes.length == 1 && nodes[0] != null) {
353
            Node n = nodes[0];
354
            Image image = n.getIcon(BeanInfo.ICON_COLOR_16x16);
355
            if (image != null) {
356
                return ImageUtilities.image2Icon(image);
357
            } else {
358
                return null;
359
            }
360
        } else {
361
            return null;
362
        }
363
    }
327
}
364
}
(-)a/utilities.project/src/org/netbeans/modules/search/project/SearchScopeOpenProjects.java (-1 / +18 lines)
Lines 44-53 Link Here
44
44
45
package org.netbeans.modules.search.project;
45
package org.netbeans.modules.search.project;
46
46
47
import javax.swing.Icon;
48
import org.netbeans.api.annotations.common.StaticResource;
47
import org.netbeans.api.project.Project;
49
import org.netbeans.api.project.Project;
48
import org.netbeans.api.project.ui.OpenProjects;
50
import org.netbeans.api.project.ui.OpenProjects;
49
import org.netbeans.api.search.provider.SearchInfo;
51
import org.netbeans.api.search.provider.SearchInfo;
50
import org.netbeans.api.search.provider.SearchInfoUtils;
52
import org.netbeans.api.search.provider.SearchInfoUtils;
53
import org.openide.util.ImageUtilities;
51
import org.openide.util.NbBundle;
54
import org.openide.util.NbBundle;
52
55
53
/**
56
/**
Lines 56-62 Link Here
56
 * @author  Marian Petras
59
 * @author  Marian Petras
57
 */
60
 */
58
final class SearchScopeOpenProjects extends AbstractProjectSearchScope {
61
final class SearchScopeOpenProjects extends AbstractProjectSearchScope {
59
    
62
63
    @StaticResource
64
    private static final String ALL_PROJECTS_ICON =
65
            "org/netbeans/modules/search/project/resources/all_projects.png"; //NOI18N
66
    private static final Icon ICON;
67
68
    static {
69
        ICON = ImageUtilities.loadImageIcon(ALL_PROJECTS_ICON, false);
70
    }
71
60
    SearchScopeOpenProjects() {
72
    SearchScopeOpenProjects() {
61
        super(OpenProjects.PROPERTY_OPEN_PROJECTS);
73
        super(OpenProjects.PROPERTY_OPEN_PROJECTS);
62
    }
74
    }
Lines 111-114 Link Here
111
    public int getPriority() {
123
    public int getPriority() {
112
        return 200;
124
        return 200;
113
    }
125
    }
126
127
    @Override
128
    public Icon getIcon() {
129
        return ICON;
130
    }
114
}
131
}

Return to bug 222406