/******************************************************************************* * Copyright (c) 2012 BREDEX GmbH. * 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: * BREDEX GmbH - initial API and implementation *******************************************************************************/ package org.eclipse.jubula.rc.common.adapter; import org.eclipse.jubula.rc.common.adaptable.IAdapterFactory; import org.eclipse.jubula.rc.common.tester.adapter.interfaces.IComponent; import org.eclipse.jubula.rc.swt.tester.adapter.ButtonAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.CComboAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.CLabelAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.CTabFolderAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.ComboAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.ControlAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.LabelAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.ListAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.MenuAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.MenuItemAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.SliderAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.StyledTextAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.TabFolderAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.TableAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.TextComponentAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.ToolItemAdapter; import org.eclipse.jubula.rc.swt.tester.adapter.TreeAdapter; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.DateTime; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.ProgressBar; import org.eclipse.swt.widgets.Scale; import org.eclipse.swt.widgets.Slider; import org.eclipse.swt.widgets.Spinner; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.swt.widgets.Tree; /** * This factory constructs the specific adapter out of the incoming graphics * component from the AUT. * * @author BREDEX GmbH */ public class SWTAdapterFactory implements IAdapterFactory { /** */ private static final Class[] SUPPORTEDCLASSES = new Class[] { Button.class, Menu.class, MenuItem.class, Tree.class, Table.class, List.class, Text.class, StyledText.class, Combo.class, CCombo.class, Label.class, CLabel.class, TabFolder.class, CTabFolder.class, ToolItem.class, DateTime.class, Scale.class, Slider.class, Spinner.class, Link.class, ProgressBar.class, Canvas.class, Control.class }; /** * {@inheritDoc} */ public Object getAdapter(Class targetedClass, Object objectToAdapt) { if (targetedClass.isAssignableFrom(IComponent.class)) { IComponent returnvalue = null; if (objectToAdapt instanceof Button) { returnvalue = new ButtonAdapter(objectToAdapt); } else if (objectToAdapt instanceof Menu) { returnvalue = new MenuAdapter(objectToAdapt); } else if (objectToAdapt instanceof MenuItem) { returnvalue = new MenuItemAdapter(objectToAdapt); } else if (objectToAdapt instanceof Tree) { returnvalue = new TreeAdapter(objectToAdapt); } else if (objectToAdapt instanceof Table) { returnvalue = new TableAdapter(objectToAdapt); } else if (objectToAdapt instanceof List) { returnvalue = new ListAdapter(objectToAdapt); } else if (objectToAdapt instanceof Text) { returnvalue = new TextComponentAdapter(objectToAdapt); } else if (objectToAdapt instanceof StyledText) { returnvalue = new StyledTextAdapter(objectToAdapt); } else if (objectToAdapt instanceof Combo) { returnvalue = new ComboAdapter(objectToAdapt); } else if (objectToAdapt instanceof CCombo) { returnvalue = new CComboAdapter(objectToAdapt); } else if (objectToAdapt instanceof Label) { returnvalue = new LabelAdapter(objectToAdapt); } else if (objectToAdapt instanceof CLabel) { returnvalue = new CLabelAdapter(objectToAdapt); } else if (objectToAdapt instanceof TabFolder) { returnvalue = new TabFolderAdapter(objectToAdapt); } else if (objectToAdapt instanceof CTabFolder) { returnvalue = new CTabFolderAdapter(objectToAdapt); } else if (objectToAdapt instanceof Link) { returnvalue = new ControlAdapter(objectToAdapt); } else if (objectToAdapt instanceof Spinner) { returnvalue = new ControlAdapter(objectToAdapt); } else if (objectToAdapt instanceof Slider) { returnvalue = new SliderAdapter(objectToAdapt); } else if (objectToAdapt instanceof Scale) { returnvalue = new ControlAdapter(objectToAdapt); } else if (objectToAdapt instanceof DateTime) { returnvalue = new ControlAdapter(objectToAdapt); } else if (objectToAdapt instanceof ToolItem) { returnvalue = new ToolItemAdapter(objectToAdapt); } else if (objectToAdapt instanceof ProgressBar) { returnvalue = new ControlAdapter(objectToAdapt); } else if (objectToAdapt instanceof Canvas) { returnvalue = new ControlAdapter(objectToAdapt); // FALLBACK! Leave at the end } else if (objectToAdapt instanceof Control) { returnvalue = new ControlAdapter(objectToAdapt); } return returnvalue; } return null; } /** * {@inheritDoc} */ public Class[] getSupportedClasses() { return SUPPORTEDCLASSES; } }