/*******************************************************************************
* 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 javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JProgressBar;
import javax.swing.JRadioButton;
import javax.swing.JSlider;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.text.JTextComponent;
import org.eclipse.jubula.rc.common.adaptable.IAdapterFactory;
import org.eclipse.jubula.rc.common.tester.adapter.interfaces.IComponent;
import org.eclipse.jubula.rc.swing.tester.adapter.AbstractButtonAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JComboBoxAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JComponentAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JLabelAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JListAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JMenuBarAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JMenuItemAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JPopupMenuAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JSliderAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JTabbedPaneAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JTableAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JTextComponentAdapter;
import org.eclipse.jubula.rc.swing.tester.adapter.JTreeAdapter;
/**
* This is the adapter factory for all swing components. It is
* creating the specific adapter for a swing component.
*
* Since we are using adapter here, it is a adapter factory. But this must not
* be the case. It is only relevant that the object is implementing the
* specific interface.
* @author BREDEX GmbH
*
*/
public class SwingAdapterFactory implements IAdapterFactory {
/**
* the supported classes
*/
private static final Class[] SUPPORTEDCLASSES = new Class[] {
AbstractButton.class, JButton.class, JCheckBox.class,
JRadioButton.class,
JMenuBar.class, JMenuItem.class, JTree.class,
JCheckBox.class, JRadioButton.class, JTable.class,
JPopupMenu.class, JSlider.class,
JList.class, JTextComponent.class, JComboBox.class,
JLabel.class, JTabbedPane.class, JProgressBar.class,
JComponent.class};
/** {@inheritDoc} */
public Class[] getSupportedClasses() {
return SUPPORTEDCLASSES;
}
/** {@inheritDoc} */
public Object getAdapter(Class targetedClass, Object objectToAdapt) {
if (targetedClass.isAssignableFrom(IComponent.class)) {
IComponent returnvalue = null;
if (objectToAdapt instanceof JButton) {
returnvalue = new AbstractButtonAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JRadioButton) {
returnvalue = new AbstractButtonAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JCheckBox) {
returnvalue = new AbstractButtonAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JMenuBar) {
returnvalue = new JMenuBarAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JMenuItem) {
returnvalue = new JMenuItemAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JTree) {
returnvalue = new JTreeAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JTable) {
returnvalue = new JTableAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JList) {
returnvalue = new JListAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JPopupMenu) {
returnvalue = new JPopupMenuAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JTextComponent) {
returnvalue = new JTextComponentAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JComboBox) {
returnvalue = new JComboBoxAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JLabel) {
returnvalue = new JLabelAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JTabbedPane) {
returnvalue = new JTabbedPaneAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JSlider) {
returnvalue = new JSliderAdapter(objectToAdapt);
} else if (objectToAdapt instanceof AbstractButton) {
// pick up every button which is not specialized
returnvalue = new AbstractButtonAdapter(objectToAdapt);
} else if (objectToAdapt instanceof JProgressBar) {
returnvalue = new JComponentAdapter(objectToAdapt);
// FALLBACK! Leave at the end
} else if (objectToAdapt instanceof JComponent) {
returnvalue = new JComponentAdapter(objectToAdapt);
}
return returnvalue;
}
return null;
}
}