package eu.jucy.gui.settings;
import java.util.ArrayList;
import java.util.List;
import logger.LoggerFactory;
import org.apache.log4j.Logger;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.handlers.HandlerUtil;
public class PreferencesHandler extends AbstractHandler implements IHandler {
private static final Logger logger = LoggerFactory.make();
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(
window.getShell(),
PersonalInformationPreferencePage.ID,
getValidPreferenceIDs(), null);
dialog.open();
return null;
}
@Override
public void dispose() {
}
/**
* remove the unwanted preferences..
*/
private static String[] getValidPreferenceIDs() {
List<String> validIds = new ArrayList<String>();
IConfigurationElement[] ce= Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.ui.preferencePages");
for (IConfigurationElement cele:ce) {
String s = cele.getAttribute("id");
validIds.add(s);
logger.debug(s);
}
logger.debug("current size: "+validIds.size());
validIds.remove("org.eclipse.help.ui.browsersPreferencePage");
validIds.remove("org.eclipse.help.ui.contentPreferencePage");
// validIds.remove("org.eclipse.update.internal.ui.preferences.MainPreferencePage");
validIds.remove("org.eclipse.equinox.security.ui.category");
validIds.remove("org.eclipse.equinox.security.ui.storage");
logger.debug("current size: "+validIds.size());
return validIds.toArray(new String[0]);
}
/* public static class OpenPrefsAction extends Action implements IWorkbenchAction {
private IWorkbenchWindow window;
public OpenPrefsAction(IWorkbenchWindow window) {
super("", AbstractUIPlugin.imageDescriptorFromPlugin(
Application.PLUGIN_ID, IImageKeys.SETTINGS));
Action a = (Action)ActionFactory.PREFERENCES.create(window);
setText(a.getText());
setId(a.getId());
setActionDefinitionId(a.getActionDefinitionId());
setAccelerator(a.getAccelerator());
}
@Override
public void run() {
PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(
window.getShell(),
PersonalInformationPreferencePage.ID,
getValidPreferenceIDs(), null);
dialog.open();
}
public void dispose() {}
} */
}