01: /*******************************************************************************
02: * Copyright (c) 2004, 2006 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.ui.internal.dialogs;
11:
12: import org.eclipse.jface.viewers.AbstractTreeViewer;
13: import org.eclipse.jface.viewers.ITreeContentProvider;
14: import org.eclipse.jface.viewers.Viewer;
15: import org.eclipse.jface.viewers.ViewerFilter;
16: import org.eclipse.ui.wizards.IWizardDescriptor;
17:
18: /**
19: * A viewer filter that will exclude all IWizardDescriptors that do not have at
20: * least one tag in a provided set.
21: *
22: * @since 3.1
23: */
24: public class WizardTagFilter extends ViewerFilter {
25:
26: private String[] myTags;
27:
28: /**
29: * Create a new instance of this filter
30: * @param tags the wizard tags to allow
31: */
32: public WizardTagFilter(String[] tags) {
33: myTags = tags;
34: }
35:
36: /* (non-Javadoc)
37: * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
38: */
39: public boolean select(Viewer viewer, Object parentElement,
40: Object element) {
41: if (element instanceof IWizardDescriptor) {
42: IWizardDescriptor desc = (IWizardDescriptor) element;
43: String[] tags = desc.getTags();
44: for (int i = 0; i < tags.length; i++) {
45: for (int j = 0; j < myTags.length; j++) {
46: if (tags[i].equals(myTags[j])) {
47: return true;
48: }
49: }
50: }
51: return false;
52: }
53: Object[] children = ((ITreeContentProvider) ((AbstractTreeViewer) viewer)
54: .getContentProvider()).getChildren(element);
55: if (children.length > 0) {
56: return filter(viewer, element, children).length > 0;
57: }
58:
59: return false;
60: }
61: }
|