/* | |
* (c) Copyright IBM Corp. 2000, 2001. | |
* All Rights Reserved. | |
*/ | |
package org.eclipse.jdt.ui.tests.dialogs; | |
import java.util.Iterator; | |
import junit.framework.Assert; | |
import junit.framework.Test; | |
import junit.framework.TestCase; | |
import junit.framework.TestSuite; | |
import org.eclipse.core.resources.ResourcesPlugin; | |
import org.eclipse.core.runtime.IAdaptable; | |
import org.eclipse.core.runtime.IPath; | |
import org.eclipse.swt.widgets.Shell; | |
import org.eclipse.jface.dialogs.Dialog; | |
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.ui.help.WorkbenchHelp; | |
import org.eclipse.ui.internal.IHelpContextIds; | |
import org.eclipse.ui.internal.WorkbenchMessages; | |
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; | |
import org.eclipse.jdt.core.ICompilationUnit; | |
import org.eclipse.jdt.core.IJavaProject; | |
import org.eclipse.jdt.core.IPackageFragment; | |
import org.eclipse.jdt.core.IPackageFragmentRoot; | |
import org.eclipse.jdt.core.IType; | |
import org.eclipse.jdt.core.JavaCore; | |
import org.eclipse.jdt.testplugin.JavaProjectHelper; | |
import org.eclipse.jdt.testplugin.TestPluginLauncher; | |
import org.eclipse.jdt.testplugin.util.DialogCheck; | |
public class PreferencesTest extends TestCase { | |
public static void main(String[] args) { | |
TestPluginLauncher.run(TestPluginLauncher.getLocationFromProperties(), PreferencesTest.class, args); | |
} | |
public static Test suite() { | |
TestSuite suite= new TestSuite(PreferencesTest.class.getName()); | |
suite.addTest(new PreferencesTest("testJavaBasePrefPage")); | |
suite.addTest(new PreferencesTest("testClasspathVarPrefPage")); | |
suite.addTest(new PreferencesTest("testCodeFormatterPrefPage")); | |
suite.addTest(new PreferencesTest("testExecArgPropPage")); | |
suite.addTest(new PreferencesTest("testImportOrganizePrefPage")); | |
suite.addTest(new PreferencesTest("testInfoPropPage")); | |
suite.addTest(new PreferencesTest("testJARSourceAttachmentPropPage")); | |
suite.addTest(new PreferencesTest("testJavaBasePrefPage")); | |
suite.addTest(new PreferencesTest("testJavaCompilerPrefPage")); | |
suite.addTest(new PreferencesTest("testJavaDebugPrefPage")); | |
suite.addTest(new PreferencesTest("testJavaEditorPrefPage")); | |
suite.addTest(new PreferencesTest("testNoExecArgPropPage")); | |
suite.addTest(new PreferencesTest("testRefactoringPrefPage")); | |
suite.addTest(new PreferencesTest("testVMPrefPage")); | |
suite.addTest(new PreferencesTest("testVMPropPage")); | |
suite.addTest(new PreferencesTest("testVSourceLookupPage")); | |
suite.addTest(new PreferencesTest("testVariableSourceAttachmentPropPage")); | |
return suite; | |
} | |
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 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); | |
} | |
} | |
private boolean fIsInteractive= true; | |
private static final String PROJECT_NAME = "DummyProject"; | |
public PreferencesTest(String name) { | |
super(name); | |
} | |
private Shell getShell() { | |
return DialogCheck.getShell(); | |
} | |
public void assertDialog(Dialog dialog, Assert assertTrue) { | |
if (fIsInteractive) { | |
DialogCheck.assertDialog(dialog, this); | |
} else { | |
DialogCheck.assertDialogTexts(dialog, this); | |
} | |
} | |
private PreferenceDialog getPreferenceDialog(String id) { | |
PreferenceDialogWrapper dialog = null; | |
PreferenceManager manager = WorkbenchPlugin.getDefault().getPreferenceManager(); | |
if (manager != null) { | |
dialog = new PreferenceDialogWrapper(getShell(), manager); | |
dialog.create(); | |
WorkbenchHelp.setHelp(dialog.getShell(), IHelpContextIds.PREFERENCE_DIALOG); | |
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; | |
} | |
private 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; | |
} else { | |
title = WorkbenchMessages.format("PropertyDialog.propertyMessage", new Object[] {name}); | |
dialog = new PropertyDialogWrapper(getShell(), manager, new StructuredSelection(element)); | |
dialog.create(); | |
dialog.getShell().setText(title); | |
WorkbenchHelp.setHelp(dialog.getShell(), IHelpContextIds.PROPERTY_DIALOG); | |
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 void testJavaBasePrefPage() { | |
Dialog dialog = getPreferenceDialog("org.eclipse.jdt.ui.preferences.JavaBasePreferencePage"); | |
assertDialog(dialog, this); | |
} | |
public void testImportOrganizePrefPage() { | |
Dialog dialog = getPreferenceDialog("org.eclipse.jdt.ui.preferences.ImportOrganizePreferencePage"); | |
assertDialog(dialog, this); | |
} | |
public void testCodeFormatterPrefPage() { | |
Dialog dialog = getPreferenceDialog("org.eclipse.jdt.ui.preferences.CodeFormatterPreferencePage"); | |
assertDialog(dialog, this); | |
} | |
public void testClasspathVarPrefPage() throws Exception { | |
IPath path= ResourcesPlugin.getWorkspace().getRoot().getLocation(); | |
JavaCore.setClasspathVariable("DUMMY_VAR", path, null); | |
Dialog dialog = getPreferenceDialog("org.eclipse.jdt.ui.preferences.ClasspathVariablesPreferencePage"); | |
assertDialog(dialog, this); | |
JavaCore.removeClasspathVariable("DUMMY_VAR", null); | |
} | |
public void testJavaEditorPrefPage() { | |
Dialog dialog = getPreferenceDialog("org.eclipse.jdt.ui.preferences.JavaEditorPreferencePage"); | |
assertDialog(dialog, this); | |
} | |
public void testJavaCompilerPrefPage() { | |
Dialog dialog = getPreferenceDialog("org.eclipse.jdt.ui.preferences.CompilerPreferencePage"); | |
assertDialog(dialog, this); | |
} | |
public void testJavaDebugPrefPage() { | |
Dialog dialog = getPreferenceDialog("org.eclipse.jdt.ui.JavaDebugPreferencePage"); | |
assertDialog(dialog, this); | |
} | |
public void testRefactoringPrefPage() { | |
Dialog dialog = getPreferenceDialog("org.eclipse.jdt.ui.preferences.RefactoringPreferencePage"); | |
assertDialog(dialog, this); | |
} | |
public void testVMPrefPage() { | |
Dialog dialog = getPreferenceDialog("org.eclipse.jdt.ui.preferences.VMPreferencePage"); | |
assertDialog(dialog, this); | |
} | |
public void testBuildPathPropPage() throws Exception { | |
IJavaProject jproject= JavaProjectHelper.createJavaProject(PROJECT_NAME, "bin"); | |
JavaProjectHelper.addSourceContainer(jproject, "src"); | |
JavaProjectHelper.addRTJar(jproject); | |
IJavaProject dep1= JavaProjectHelper.createJavaProject("OtherProject", "bin"); | |
JavaProjectHelper.addRequiredProject(jproject, dep1); | |
Dialog dialog = getPropertyDialog("org.eclipse.jdt.ui.propertyPages.BuildPathsPropertyPage", jproject); | |
assertDialog(dialog, this); | |
JavaProjectHelper.delete(jproject); | |
JavaProjectHelper.delete(dep1); | |
} | |
public void testJARSourceAttachmentPropPage() throws Exception { | |
IJavaProject jproject= JavaProjectHelper.createJavaProject(PROJECT_NAME, "bin"); | |
IPackageFragmentRoot root= JavaProjectHelper.addRTJar(jproject); | |
assertTrue(root != null); | |
Dialog dialog = getPropertyDialog("org.eclipse.jdt.ui.propertyPages.SourceAttachmentPage1", root); | |
assertDialog(dialog, this); | |
JavaProjectHelper.delete(jproject); | |
} | |
public void testVariableSourceAttachmentPropPage() throws Exception { | |
IJavaProject jproject= JavaProjectHelper.createJavaProject(PROJECT_NAME, "bin"); | |
IPackageFragmentRoot root= JavaProjectHelper.addVariableRTJar(jproject, "VAR_LIB", "VAR_SRC", "VAR_SRCROOT"); | |
assertTrue(root != null); | |
Dialog dialog = getPropertyDialog("org.eclipse.jdt.ui.propertyPages.SourceAttachmentPage1", root); | |
assertDialog(dialog, this); | |
JavaProjectHelper.delete(jproject); | |
JavaCore.removeClasspathVariable("VAR_LIB", null); | |
JavaCore.removeClasspathVariable("VAR_SRC", null); | |
JavaCore.removeClasspathVariable("VAR_SRCROOT", null); | |
} | |
public void testInfoPropPage() throws Exception { | |
IJavaProject jproject= JavaProjectHelper.createJavaProject(PROJECT_NAME, "bin"); | |
IPackageFragmentRoot root= JavaProjectHelper.addSourceContainer(jproject, "src"); | |
IPackageFragment pack= root.createPackageFragment("org.eclipse.jdt.internal.ui.wizards.dummy", true, null); | |
ICompilationUnit cu= pack.getCompilationUnit("DummyCompilationUnitWizard.java"); | |
IType type= cu.createType("public class DummyCompilationUnitWizard {\n\n}\n", null, true, null); | |
Dialog dialog = getPropertyDialog("org.eclipse.jdt.ui.propertyPages.InfoPage", cu); | |
assertDialog(dialog, this); | |
JavaProjectHelper.delete(jproject); | |
} | |
public void testNoExecArgPropPage() throws Exception { | |
IJavaProject jproject= JavaProjectHelper.createJavaProject(PROJECT_NAME, "bin"); | |
IPackageFragmentRoot root= JavaProjectHelper.addSourceContainer(jproject, "src"); | |
IPackageFragment pack= root.createPackageFragment("org.eclipse.jdt.internal.ui.hello", true, null); | |
ICompilationUnit cu= pack.getCompilationUnit("HelloWorld.java"); | |
IType type= cu.createType("public class HelloWorld {\n\n}\n", null, true, null); | |
Dialog dialog = getPropertyDialog("org.eclipse.jdt.ui.propertyPages.ExecutionArgsPage", cu); | |
assertDialog(dialog, this); | |
JavaProjectHelper.delete(jproject); | |
} | |
public void testExecArgPropPage() throws Exception { | |
IJavaProject jproject= JavaProjectHelper.createJavaProject(PROJECT_NAME, "bin"); | |
IPackageFragmentRoot root= JavaProjectHelper.addSourceContainer(jproject, "src"); | |
IPackageFragment pack= root.createPackageFragment("org.eclipse.jdt.internal.ui.hello", true, null); | |
ICompilationUnit cu= pack.getCompilationUnit("HelloWorld.java"); | |
IType type= cu.createType("public class HelloWorld {\npublic static void main(String[] args) {}\n}\n", null, true, null); | |
Dialog dialog = getPropertyDialog("org.eclipse.jdt.ui.propertyPages.ExecutionArgsPage", cu); | |
assertDialog(dialog, this); | |
JavaProjectHelper.delete(jproject); | |
} | |
public void testVMPropPage() throws Exception { | |
IJavaProject jproject= JavaProjectHelper.createJavaProject(PROJECT_NAME, "bin"); | |
Dialog dialog = getPropertyDialog("org.eclipse.jdt.ui.propertyPages.VMPropertyPage", jproject); | |
assertDialog(dialog, this); | |
JavaProjectHelper.delete(jproject); | |
} | |
public void testVSourceLookupPage() throws Exception { | |
IJavaProject jproject= JavaProjectHelper.createJavaProject(PROJECT_NAME, "bin"); | |
IJavaProject dep1= JavaProjectHelper.createJavaProject("OtherProject", "bin"); | |
JavaProjectHelper.addRequiredProject(jproject, dep1); | |
Dialog dialog = getPropertyDialog("org.eclipse.jdt.ui.launching.SourceLookupPage", jproject); | |
assertDialog(dialog, this); | |
JavaProjectHelper.delete(jproject); | |
JavaProjectHelper.delete(dep1); | |
} | |
} | |