package org.xmind.ui.util;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.runtime.IProduct;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IPluginContribution;
import org.eclipse.ui.dialogs.PreferencesUtil;
public class PrefUtils {
public static final String GENERAL_PREF_PAGE_ID = "org.xmind.ui.prefPage.General"; //$NON-NLS-1$
private static final Set<String> HIDDEN_PAGE_IDS = new HashSet<String>(
Arrays.<String> asList(
"org.eclipse.equinox.security.ui.category", //$NON-NLS-1$
"org.eclipse.equinox.security.ui.storage" //$NON-NLS-1$
));
public static void openPrefDialog(Shell shell, String prefPageId,
Object data) {
PreferenceDialog dialog = PreferencesUtil
.createPreferenceDialogOn(shell, prefPageId, null, data);
IProduct product = Platform.getProduct();
if (product != null && "org.xmind.cathy.application" //$NON-NLS-1$
.equals(product.getApplication())) {
configTreeViewerFilter(dialog);
dialog.getTreeViewer().setExpandPreCheckFilters(true);
dialog.getTreeViewer().expandAll();
}
dialog.open();
}
private static void configTreeViewerFilter(PreferenceDialog dialog) {
dialog.getTreeViewer().addFilter(new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElement,
Object element) {
if (element instanceof IPluginContribution) {
String id = ((IPluginContribution) element).getLocalId();
if (HIDDEN_PAGE_IDS.contains(id))
return false;
}
return true;
}
});
}
public static void openPrefDialog(Shell shell, String prefPageId) {
openPrefDialog(shell, prefPageId, null);
}
}