/******************************************************************************* * Copyright (c) 2015-2017 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.jsf.reddeer.ui.editor; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.texteditor.ITextEditor; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.reddeer.core.condition.ShellWithTextIsActive; import org.jboss.reddeer.core.lookup.EditorPartLookup; import org.jboss.reddeer.core.util.Display; import org.jboss.reddeer.core.util.ResultRunnable; import org.jboss.reddeer.swt.api.Tree; import org.jboss.reddeer.swt.api.TreeItem; import org.jboss.reddeer.swt.impl.button.FinishButton; import org.jboss.reddeer.swt.impl.button.PushButton; import org.jboss.reddeer.swt.impl.ctab.DefaultCTabItem; import org.jboss.reddeer.swt.impl.shell.DefaultShell; import org.jboss.reddeer.swt.impl.text.DefaultText; import org.jboss.reddeer.swt.impl.tree.DefaultTree; import org.jboss.reddeer.swt.impl.tree.DefaultTreeItem; import org.jboss.reddeer.workbench.impl.editor.DefaultEditor; import org.jboss.tools.common.model.ui.editor.EditorPartWrapper; import org.jboss.tools.jsf.reddeer.ProjectType; public class FacesConfigEditor extends DefaultEditor { public FacesConfigEditor(String title) { super(title); } public void activateSourceTab() { activateEditorCTabItem("Source"); } public void activateTreeTab() { activateEditorCTabItem("Tree"); } public void activateDiagramTab() { activateEditorCTabItem("Source"); } private void activateEditorCTabItem(String tabItemLabel) { activate(); new DefaultCTabItem(tabItemLabel).activate(); } public FacesConfigSourceEditor getFacesConfigSourceEditor() { activateSourceTab(); IEditorPart editorPart = EditorPartLookup.getInstance().getActiveEditor(); final org.jboss.tools.jsf.ui.editor.FacesConfigEditor fce = ((org.jboss.tools.jsf.ui.editor.FacesConfigEditor) ((EditorPartWrapper) editorPart) .getEditor()); ITextEditor iTextEditor = (ITextEditor) Display.syncExec(new ResultRunnable<IEditorPart>() { @Override public IEditorPart run() { return fce.getSourceEditor(); } }); return new FacesConfigSourceEditor(iTextEditor); } public void addManagedBean(ProjectType testProjectType, String facesConfigFileName, String beanName, String beanClass) { selectManagedBeansNode(facesConfigFileName); // Add managed bean new PushButton("Add...").click(); new DefaultShell(FacesConfigEditor.getAddManagedBeanDialogTitle(testProjectType)); new DefaultText(0).setText(beanClass); new DefaultText(1).setText(beanName); new FinishButton().click(); new WaitWhile(new ShellWithTextIsActive(FacesConfigEditor.getAddManagedBeanDialogTitle(testProjectType))); } public void addComponent(String facesConfigFileName, String componentType, String componentClass) { selectComponentsNode(facesConfigFileName); // Add Component new PushButton("Add...").click(); new DefaultShell("Add Component"); new DefaultText(0).setText(componentType); new DefaultText(1).setText(componentClass); new FinishButton().click(); new WaitWhile(new ShellWithTextIsActive("Add Component")); } public void addConverter(String facesConfigFileName, String converterId, String converterClass) { selectConvertersNode(facesConfigFileName); // Add Converter new PushButton("Add...").click(); new DefaultShell("Add Converter"); new DefaultText(0).setText(converterId); new DefaultText(1).setText(converterClass); new FinishButton().click(); new WaitWhile(new ShellWithTextIsActive("Add Converter")); } public void addReferencedBean(String facesConfigFileName, String referencedBeanName, String referecnedBeanClass) { selectReferencedBeansNode(facesConfigFileName); // Add Referenced Bean new PushButton("Add...").click(); new DefaultShell("Add Referenced Bean"); new DefaultText(0).setText(referencedBeanName); new DefaultText(1).setText(referecnedBeanClass); new FinishButton().click(); new WaitWhile(new ShellWithTextIsActive("Add Referenced Bean")); } public void addRenderKit(ProjectType testProjectType,String facesConfigFileName, String renderKitId, String renderKitClass) { selectRenderKitsNode(facesConfigFileName); // Add Render Kit new PushButton("Add...").click(); new DefaultShell(FacesConfigEditor.getAddRenderKitDialogTitle(testProjectType)); new DefaultText(0).setText(renderKitId); new DefaultText(1).setText(renderKitClass); new FinishButton().click(); new WaitWhile(new ShellWithTextIsActive(FacesConfigEditor.getAddRenderKitDialogTitle(testProjectType))); } public void addValidator(String facesConfigFileName, String renderKitId, String renderKitClass) { selectValidatorsNode(facesConfigFileName); // Add Validator new PushButton("Add...").click(); new DefaultShell("Add Validator"); new DefaultText(0).setText(renderKitId); new DefaultText(1).setText(renderKitClass); new FinishButton().click(); new WaitWhile(new ShellWithTextIsActive("Add Validator")); } public void selectManagedBeansNode(String facesConfigFileName) { getFacesConfigTreeItem(facesConfigFileName, "Managed Beans").select(); } public void selectComponentsNode(String facesConfigFileName) { getFacesConfigTreeItem(facesConfigFileName, "Components").select(); } public void selectConvertersNode(String facesConfigFileName) { getFacesConfigTreeItem(facesConfigFileName, "Converters").select(); } public void selectReferencedBeansNode(String facesConfigFileName) { getFacesConfigTreeItem(facesConfigFileName, "Referenced Beans").select(); } public void selectRenderKitsNode(String facesConfigFileName) { getFacesConfigTreeItem(facesConfigFileName, "Render Kits").select(); } public void selectValidatorsNode(String facesConfigFileName) { getFacesConfigTreeItem(facesConfigFileName, "Validators").select(); } public TreeItem getFacesConfigTreeItem(String... path) { return new DefaultTreeItem(getFacesConfigTree(), path); } private Tree getFacesConfigTree() { activateTreeTab(); return new DefaultTree(); } /** * Returns proper Add Managed Bean Dialog Title * * @param testProjectType * @return */ public static String getAddManagedBeanDialogTitle(ProjectType testProjectType) { String result; if (testProjectType.equals(ProjectType.JSF)) { result = "New Managed Bean"; } else if (testProjectType.equals(ProjectType.JSF2)) { result = "Managed Bean..."; } else { throw new IllegalArgumentException("Not supported TestProjectType " + testProjectType); } return result; } /** * Returns proper Add Render Kit Dialog Title * * @param testProjectType * @return */ private static String getAddRenderKitDialogTitle(ProjectType testProjectType) { String result; if (testProjectType.equals(ProjectType.JSF)) { result = "Add Render Kit"; } else if (testProjectType.equals(ProjectType.JSF2)) { result = "New Render Kit"; } else { throw new IllegalArgumentException("Not supported TestProjectType " + testProjectType); } return result; } }