blob: 23513403b8af8a350688db3bbc1849abef24dcc7 [file] [log] [blame]
package org.eclipse.jst.jsf.ui.tests.util;
import java.util.Iterator;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.preference.IPreferenceNode;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.jface.preference.PreferenceManager;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.dialogs.PropertyDialog;
import org.eclipse.ui.internal.dialogs.PropertyPageContributorManager;
import org.eclipse.ui.internal.dialogs.PropertyPageManager;
import org.eclipse.ui.model.IWorkbenchAdapter;
/**
* Borrowed from UITestHelper in org.eclipse.wst.internet.monitor.ui.tests
*
* @author YCHEN3
*/
public class JSFUITestHelper {
private static class PreferenceDialogWrapper extends PreferenceDialog {
public PreferenceDialogWrapper(Shell parentShell, PreferenceManager manager) {
super(parentShell, manager);
}
protected boolean showPage(IPreferenceNode node) {
return super.showPage(node);
}
}
private static class PropertyDialogWrapper extends PropertyDialog {
public PropertyDialogWrapper(Shell parentShell, PreferenceManager manager, ISelection selection) {
super(parentShell, manager, selection);
}
protected boolean showPage(IPreferenceNode node) {
return super.showPage(node);
}
}
public static PreferenceDialog getPreferenceDialog(String id) {
PreferenceDialogWrapper dialog = null;
PreferenceManager manager = WorkbenchPlugin.getDefault().getPreferenceManager();
if (manager != null) {
dialog = new PreferenceDialogWrapper(getShell(), manager);
dialog.create();
for (Iterator iterator = manager.getElements(PreferenceManager.PRE_ORDER).iterator();
iterator.hasNext();)
{
IPreferenceNode node = (IPreferenceNode)iterator.next();
if ( node.getId().equals(id) ) {
dialog.showPage(node);
break;
}
}
}
return dialog;
}
public static PropertyDialog getPropertyDialog(String id, IAdaptable element) {
PropertyDialogWrapper dialog = null;
PropertyPageManager manager = new PropertyPageManager();
String title = "";
String name = "";
// load pages for the selection
// fill the manager with contributions from the matching contributors
PropertyPageContributorManager.getManager().contribute(manager, element);
IWorkbenchAdapter adapter = (IWorkbenchAdapter)element.getAdapter(IWorkbenchAdapter.class);
if (adapter != null) {
name = adapter.getLabel(element);
}
// testing if there are pages in the manager
Iterator pages = manager.getElements(PreferenceManager.PRE_ORDER).iterator();
if (!pages.hasNext())
return null;
title = "Title: " + name;
dialog = new PropertyDialogWrapper(getShell(), manager, new StructuredSelection(element));
dialog.create();
dialog.getShell().setText(title);
for (Iterator iterator = manager.getElements(PreferenceManager.PRE_ORDER).iterator();
iterator.hasNext();) {
IPreferenceNode node = (IPreferenceNode)iterator.next();
if ( node.getId().equals(id) ) {
dialog.showPage(node);
break;
}
}
return dialog;
}
protected static Shell getShell() {
return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
} // end of UITestHelper