/******************************************************************************* * Copyright (c) 2012 VMware, Inc. * 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: * VMware, Inc. - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.config.tests.ui.editors; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor; import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable; import org.eclipse.swtbot.swt.finder.results.VoidResult; import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; import org.eclipse.swtbot.swt.finder.widgets.SWTBotText; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement; import org.springframework.ide.eclipse.config.core.schemas.AopSchemaConstants; import org.springframework.ide.eclipse.config.core.schemas.BatchSchemaConstants; import org.springframework.ide.eclipse.config.core.schemas.BeansSchemaConstants; import org.springframework.ide.eclipse.config.tests.AbstractConfigUiTestCase; import org.springframework.ide.eclipse.config.ui.editors.AbstractConfigFormPage; import org.springsource.ide.eclipse.commons.tests.util.swtbot.SWTBotHyperlink; /** * @author Leo Dos Santos * @author Steffen Pingel */ @SuppressWarnings("restriction") public class AbstractNamespaceDetailsPartUiTest extends AbstractConfigUiTestCase { public void testBeanAttributeLink() throws Exception { cEditor = openFileInEditor("src/beans-config.xml"); UIThreadRunnable.syncExec(new VoidResult() { public void run() { AbstractConfigFormPage page = cEditor.getFormPageForUri(AopSchemaConstants.URI); cEditor.setActivePage(page.getId()); assertNotNull("Could not load aop page.", page.getMasterPart()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); treeViewer.expandAll(); TreeItem root = treeViewer.getTree().getItem(0); TreeItem aspectItem = root.getItem(0).getItem(1); page.setSelection(new StructuredSelection(aspectItem.getData())); } }); bot.hyperlink(AopSchemaConstants.ATTR_REF.concat(":")).click(); UIThreadRunnable.syncExec(new VoidResult() { public void run() { AbstractConfigFormPage page = cEditor.getFormPageForUri(BeansSchemaConstants.URI); assertEquals(page, cEditor.getSelectedPage()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); TreeItem[] items = treeViewer.getTree().getSelection(); IDOMElement selection = (IDOMElement) items[0].getData(); assertEquals(BeansSchemaConstants.ELEM_BEAN, selection.getLocalName()); } }); } public void testBeanIdContentProposalProvider() throws Exception { cEditor = openFileInEditor("src/beans-config.xml"); final AbstractConfigFormPage page = cEditor.getFormPageForUri(BeansSchemaConstants.URI); UIThreadRunnable.syncExec(new VoidResult() { public void run() { cEditor.setActivePage(page.getId()); assertNotNull("Could not load beans page.", page.getMasterPart()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); TreeItem root = treeViewer.getTree().getItem(0); TreeItem beanItem = root.getItem(1); page.setSelection(new StructuredSelection(beanItem.getData())); } }); SWTBotText text = bot.text("myConcreteClass"); text.setText(""); text.pressShortcut(SWT.CTRL, ' '); SWTBotShell shell = bot.activeShell(); assertTrue(shell.isOpen()); // Weak test? } public void testBeanReferenceContentProposalProvider() throws Exception { cEditor = openFileInEditor("src/beans-config.xml"); final AbstractConfigFormPage page = cEditor.getFormPageForUri(AopSchemaConstants.URI); UIThreadRunnable.syncExec(new VoidResult() { public void run() { cEditor.setActivePage(page.getId()); assertNotNull("Could not load aop page.", page.getMasterPart()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); treeViewer.expandAll(); TreeItem root = treeViewer.getTree().getItem(0); TreeItem aspectItem = root.getItem(0).getItem(1); page.setSelection(new StructuredSelection(aspectItem.getData())); } }); SWTBotText text = bot.text("propertyChangeTracker"); text.setText(""); text.pressShortcut(SWT.CTRL, ' '); SWTBotShell shell = bot.activeShell(); assertTrue(shell.isOpen()); // Weak test? } public void testClassAttributeButton() throws Exception { cEditor = openFileInEditor("src/beans-config.xml"); final AbstractConfigFormPage page = cEditor.getFormPageForUri(BeansSchemaConstants.URI); UIThreadRunnable.syncExec(new VoidResult() { public void run() { cEditor.setActivePage(page.getId()); assertNotNull("Could not load beans page.", page.getMasterPart()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); TreeItem root = treeViewer.getTree().getItem(0); TreeItem beanItem = root.getItem(1); page.setSelection(new StructuredSelection(beanItem.getData())); } }); bot.flatButton("Browse...").click(); SWTBotShell typeDialog = bot.shell("Select Type"); assertTrue(typeDialog.isOpen()); typeDialog.close(); } public void testClassAttributeLink() throws Exception { cEditor = openFileInEditor("src/beans-config.xml"); final AbstractConfigFormPage page = cEditor.getFormPageForUri(BeansSchemaConstants.URI); UIThreadRunnable.syncExec(new VoidResult() { public void run() { cEditor.setActivePage(page.getId()); assertNotNull("Could not load beans page.", page.getMasterPart()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); TreeItem root = treeViewer.getTree().getItem(0); TreeItem beanItem = root.getItem(1); page.setSelection(new StructuredSelection(beanItem.getData())); } }); SWTBotHyperlink link = bot.hyperlink(BeansSchemaConstants.ATTR_CLASS.concat(":")); link.click(); SWTBotEditor editor = bot.editorByTitle("MyConcreteClass.java"); assertTrue(editor.isActive()); editor.close(); bot.cTabItem("beans").activate().show(); bot.text("com.test.MyConcreteClass").setText(""); link.click(); SWTBotShell classDialog = bot.shell("New Java Class"); assertTrue(classDialog.isOpen()); classDialog.close(); } public void testClassContentProposalProvider() throws Exception { cEditor = openFileInEditor("src/beans-config.xml"); final AbstractConfigFormPage page = cEditor.getFormPageForUri(BeansSchemaConstants.URI); UIThreadRunnable.syncExec(new VoidResult() { public void run() { cEditor.setActivePage(page.getId()); assertNotNull("Could not load beans page.", page.getMasterPart()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); TreeItem root = treeViewer.getTree().getItem(0); TreeItem beanItem = root.getItem(1); page.setSelection(new StructuredSelection(beanItem.getData())); } }); SWTBotText text = bot.text("com.test.MyConcreteClass"); text.setText("com"); text.pressShortcut(SWT.CTRL, ' '); SWTBotShell shell = bot.activeShell(); assertTrue(shell.isOpen()); // Weak test? } public void testPointCutAttributeLink() throws Exception { cEditor = openFileInEditor("src/beans-config.xml"); final AbstractConfigFormPage page = cEditor.getFormPageForUri(AopSchemaConstants.URI); UIThreadRunnable.syncExec(new VoidResult() { public void run() { cEditor.setActivePage(page.getId()); assertNotNull("Could not load aop page.", page.getMasterPart()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); treeViewer.expandAll(); TreeItem root = treeViewer.getTree().getItem(0); TreeItem item = root.getItem(0).getItem(1).getItem(0); page.setSelection(new StructuredSelection(item.getData())); } }); bot.hyperlink(AopSchemaConstants.ATTR_POINTCUT_REF.concat(":")).click(); UIThreadRunnable.syncExec(new VoidResult() { public void run() { TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); TreeItem[] items = treeViewer.getTree().getSelection(); IDOMElement selection = (IDOMElement) items[0].getData(); assertEquals(AopSchemaConstants.ELEM_POINTCUT, selection.getLocalName()); } }); } public void testPointcutReferenceContentProposalProvider() throws Exception { cEditor = openFileInEditor("src/beans-config.xml"); final AbstractConfigFormPage page = cEditor.getFormPageForUri(AopSchemaConstants.URI); UIThreadRunnable.syncExec(new VoidResult() { public void run() { cEditor.setActivePage(page.getId()); assertNotNull("Could not load aop page.", page.getMasterPart()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); treeViewer.expandAll(); TreeItem root = treeViewer.getTree().getItem(0); TreeItem item = root.getItem(0).getItem(1).getItem(0); page.setSelection(new StructuredSelection(item.getData())); } }); SWTBotText text = bot.text("setterMethod"); text.setText(""); text.pressShortcut(SWT.CTRL, ' '); SWTBotShell shell = bot.activeShell(); assertTrue(shell.isOpen()); // Weak test? } public void testStepAttributeLink() throws Exception { cEditor = openFileInEditor("src/batch-config.xml"); final AbstractConfigFormPage page = cEditor.getFormPageForUri(BatchSchemaConstants.URI); UIThreadRunnable.syncExec(new VoidResult() { public void run() { cEditor.setActivePage(page.getId()); assertNotNull("Could not load batch page.", page.getMasterPart()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); treeViewer.expandAll(); TreeItem root = treeViewer.getTree().getItem(0); TreeItem item = root.getItem(0).getItem(0); IDOMElement selection = (IDOMElement) item.getData(); page.setSelection(new StructuredSelection(selection)); assertEquals("step1", selection.getAttribute(BatchSchemaConstants.ATTR_ID)); } }); bot.hyperlink(BatchSchemaConstants.ATTR_NEXT.concat(":")).click(); UIThreadRunnable.syncExec(new VoidResult() { public void run() { TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); TreeItem[] items = treeViewer.getTree().getSelection(); IDOMElement selection = (IDOMElement) items[0].getData(); assertEquals(BatchSchemaConstants.ELEM_STEP, selection.getLocalName()); assertEquals("step2", selection.getAttribute(BatchSchemaConstants.ATTR_ID)); } }); } public void testStepReferenceContentProposalProvider() throws Exception { cEditor = openFileInEditor("src/batch-config.xml"); final AbstractConfigFormPage page = cEditor.getFormPageForUri(BatchSchemaConstants.URI); UIThreadRunnable.syncExec(new VoidResult() { public void run() { cEditor.setActivePage(page.getId()); assertNotNull("Could not load batch page.", page.getMasterPart()); TreeViewer treeViewer = (TreeViewer) page.getMasterPart().getViewer(); treeViewer.expandAll(); TreeItem root = treeViewer.getTree().getItem(0); TreeItem item = root.getItem(0).getItem(0); page.setSelection(new StructuredSelection(item.getData())); } }); SWTBotText text = bot.text("step2"); text.setText(""); text.pressShortcut(SWT.CTRL, ' '); SWTBotShell shell = bot.activeShell(); assertTrue(shell.isOpen()); // Weak test? cleanUp(); } }