KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > help > ui > internal > dynamic > FilterResolverExtension


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 package org.eclipse.help.ui.internal.dynamic;
12
13 import org.eclipse.help.internal.dynamic.FilterResolver.Extension;
14 import org.eclipse.ui.PlatformUI;
15 import org.eclipse.ui.activities.IActivityManager;
16 import org.eclipse.ui.activities.IWorkbenchActivitySupport;
17 import org.eclipse.ui.activities.WorkbenchActivityHelper;
18
19 /*
20  * An extension to the FilterResolver to handle UI-related filters, namely
21  * activities and activity categories.
22  */

23 public class FilterResolverExtension implements Extension {
24
25     private static final String JavaDoc NAME_ACTIVITY = "activity"; //$NON-NLS-1$
26
private static final String JavaDoc NAME_CATEGORY = "category"; //$NON-NLS-1$
27

28     /* (non-Javadoc)
29      * @see org.eclipse.help.internal.dynamic.FilterResolver.Extension#isHandled(java.lang.String)
30      */

31     public boolean isHandled(String JavaDoc name) {
32         return (name.equals(NAME_ACTIVITY) || name.equals(NAME_CATEGORY));
33     }
34     
35     /* (non-Javadoc)
36      * @see org.eclipse.help.internal.dynamic.FilterResolver.Extension#isFiltered(java.lang.String, java.lang.String)
37      */

38     public boolean isFiltered(String JavaDoc name, String JavaDoc value) {
39         if (name.equals(NAME_ACTIVITY)) {
40             return filterByActivity(value);
41         }
42         else if (name.equals(NAME_CATEGORY)) {
43             return filterByCategory(value);
44         }
45         return false;
46     }
47
48     /*
49      * Evaluates the "category" filter.
50      */

51     private static boolean filterByCategory(String JavaDoc categoryId) {
52         try {
53             IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport();
54             IActivityManager activityManager = workbenchActivitySupport.getActivityManager();
55             if (activityManager.getCategory(categoryId).isDefined()) {
56                 return !WorkbenchActivityHelper.isEnabled(activityManager, categoryId);
57             }
58             return true;
59         }
60         catch (Exception JavaDoc e) {
61             // no workbench available (standalone mode)
62
return false;
63         }
64     }
65
66     /*
67      * Evaluates the "activity" filter.
68      */

69     private static boolean filterByActivity(String JavaDoc activityId) {
70         try {
71             IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport();
72             IActivityManager activityManager = workbenchActivitySupport.getActivityManager();
73             if (activityManager.getActivity(activityId).isDefined()) {
74                 return !activityManager.getActivity(activityId).isEnabled();
75             }
76             return true;
77         }
78         catch (Exception JavaDoc e) {
79             // no workbench available (standalone mode)
80
return false;
81         }
82     }
83 }
84
Popular Tags