blob: 59295699b947a959f7986402d555836b426eb6ac [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2016 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.help.ui.internal.dynamic;
import org.eclipse.help.internal.dynamic.FilterResolver.Extension;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.activities.IActivityManager;
import org.eclipse.ui.activities.IWorkbenchActivitySupport;
import org.eclipse.ui.activities.WorkbenchActivityHelper;
/*
* An extension to the FilterResolver to handle UI-related filters, namely
* activities and activity categories.
*/
public class FilterResolverExtension implements Extension {
private static final String NAME_ACTIVITY = "activity"; //$NON-NLS-1$
private static final String NAME_CATEGORY = "category"; //$NON-NLS-1$
@Override
public boolean isHandled(String name) {
return (name.equals(NAME_ACTIVITY) || name.equals(NAME_CATEGORY));
}
@Override
public boolean isFiltered(String name, String value) {
if (name.equals(NAME_ACTIVITY)) {
return filterByActivity(value);
}
else if (name.equals(NAME_CATEGORY)) {
return filterByCategory(value);
}
return false;
}
/*
* Evaluates the "category" filter.
*/
private static boolean filterByCategory(String categoryId) {
try {
IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport();
IActivityManager activityManager = workbenchActivitySupport.getActivityManager();
if (activityManager.getCategory(categoryId).isDefined()) {
return !WorkbenchActivityHelper.isEnabled(activityManager, categoryId);
}
return true;
}
catch (Exception e) {
// no workbench available (standalone mode)
return false;
}
}
/*
* Evaluates the "activity" filter.
*/
private static boolean filterByActivity(String activityId) {
try {
IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport();
IActivityManager activityManager = workbenchActivitySupport.getActivityManager();
if (activityManager.getActivity(activityId).isDefined()) {
return !activityManager.getActivity(activityId).isEnabled();
}
return true;
}
catch (Exception e) {
// no workbench available (standalone mode)
return false;
}
}
}