KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > ui > internal > navigator > filters > CommonFilterDescriptorManager


1 /*******************************************************************************
2  * Copyright (c) 2006 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  ******************************************************************************/

11
12 package org.eclipse.ui.internal.navigator.filters;
13
14 import java.util.ArrayList JavaDoc;
15 import java.util.HashSet JavaDoc;
16 import java.util.Iterator JavaDoc;
17 import java.util.List JavaDoc;
18 import java.util.Set JavaDoc;
19
20 import org.eclipse.core.runtime.IConfigurationElement;
21 import org.eclipse.ui.internal.navigator.extensions.NavigatorContentRegistryReader;
22 import org.eclipse.ui.navigator.INavigatorContentService;
23
24 /**
25  * @since 3.2
26  *
27  */

28 public class CommonFilterDescriptorManager {
29
30     private static final CommonFilterDescriptorManager INSTANCE = new CommonFilterDescriptorManager();
31
32     private static final CommonFilterDescriptor[] NO_FILTER_DESCRIPTORS = new CommonFilterDescriptor[0];
33
34     private final Set JavaDoc filters = new HashSet JavaDoc();
35
36     /**
37      *
38      * @return An initialized singleton instance of the
39      * CommonFilterDescriptorManager.
40      */

41     public static CommonFilterDescriptorManager getInstance() {
42         return INSTANCE;
43     }
44
45     private CommonFilterDescriptorManager() {
46         new CommonFilterDescriptorRegistry().readRegistry();
47     }
48
49     /**
50      *
51      * @param contentService
52      * A content service to filter the visible filters.
53      * @return The set of filters that are 'visible' to the given viewer
54      * descriptor.
55      */

56     public CommonFilterDescriptor[] findVisibleFilters(INavigatorContentService contentService) {
57
58         List JavaDoc visibleFilters = new ArrayList JavaDoc();
59         CommonFilterDescriptor descriptor;
60         for (Iterator JavaDoc filtersItr = filters.iterator(); filtersItr.hasNext();) {
61             descriptor = (CommonFilterDescriptor) filtersItr.next();
62             if (contentService.isVisible(descriptor.getId())) {
63                 visibleFilters.add(descriptor);
64             }
65         }
66         if (visibleFilters.size() == 0) {
67             return NO_FILTER_DESCRIPTORS;
68         }
69         return (CommonFilterDescriptor[]) visibleFilters
70                 .toArray(new CommonFilterDescriptor[visibleFilters.size()]);
71     }
72
73     /**
74      * @param aDescriptor
75      * A non-null descriptor
76      */

77     private void addCommonFilter(CommonFilterDescriptor aDescriptor) {
78         filters.add(aDescriptor);
79     }
80
81     private class CommonFilterDescriptorRegistry extends
82             NavigatorContentRegistryReader {
83
84         /*
85          * (non-Javadoc)
86          *
87          * @see org.eclipse.ui.internal.navigator.extensions.NavigatorContentRegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
88          */

89         protected boolean readElement(IConfigurationElement element) {
90             if (TAG_COMMON_FILTER.equals(element.getName())) {
91                 addCommonFilter(new CommonFilterDescriptor(element));
92                 return true;
93             }
94             return super.readElement(element);
95         }
96
97     }
98
99 }
100
Popular Tags