/**
*
*/
package de.urszeidler.eclipse.shr5.util;
import java.util.Locale;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EReference;
import de.urszeidler.eclipse.shr5.provider.Shr5ItemProviderAdapterFactory;
/**
* Exteds the normal item adapter factory to supply some custom implentations
*
* @author urs
*/
public class ExtendedShadowrunAdapterFactory extends Shr5ItemProviderAdapterFactory {
private String iso3Country;
private boolean doLocalize;
/**
* The singleton reflective instance.
*/
protected ModifikatorItemProvider reflectiveItemProviderAdapter;
public ExtendedShadowrunAdapterFactory() {
super();
Locale default1 = Locale.getDefault();
iso3Country = default1.getLanguage();// default1.getISO3Country();
if (iso3Country.equals("de"))
doLocalize = true;
doLocalize = false;
}
/**
*/
public Adapter createModifikatorItemProvider() {
if (reflectiveItemProviderAdapter == null) {
reflectiveItemProviderAdapter = new ModifikatorItemProvider(this);
}
return reflectiveItemProviderAdapter;
}
/**
* Returns whether this factory is applicable for the type of the object.
* <!-- begin-user-doc --> This implementation returns <code>true</code> if
* the object is either the model's package or is an instance object of the
* model. <!-- end-user-doc -->
*
* @return whether this factory is applicable for the type of the object.
* @generated
*/
@Override
public boolean isFactoryForType(Object object) {
// if (object instanceof EClass) {
// EClass ec = (EClass)object;
// return Shr5Package.eINSTANCE.equals(ec.getEPackage());
// }
// if (object == EcorePackage.eINSTANCE) {
// return true;
// }
return super.isFactoryForType(object);
}
/**
* Creates an adapter for the <code>target</code>. <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @param target
* the object to adapt.
* @return the adapter for the <code>target</code>.
* @generated
*/
@Override
public Adapter createAdapter(Notifier target) {
if (target instanceof EAttribute) {
return createModifikatorItemProvider();
}
if (target instanceof EReference) {
return createModifikatorItemProvider();
}
if (target instanceof EClass) {
return createModifikatorItemProvider();
}
// if (target instanceof EAttribute) {
// if ( ((EAttribute)target).getEContainingClass().getEPackage().equals(Shr5Package.eINSTANCE))
// return createModifikatorItemProvider();
// }
// if (target instanceof EReference) {
// if ( ((EReference)target).getEContainingClass().getEPackage().equals(Shr5Package.eINSTANCE))
// return createModifikatorItemProvider();
// }
//
// if (target instanceof EClass) {
// if ( ((EClass)target).getEPackage().equals(Shr5Package.eINSTANCE))
// return createModifikatorItemProvider();
// }
// Adapter doSwitch = modelSwitch.doSwitch((EObject)target);
// if (doLocalize)
// if (target instanceof Identifiable) {
// return new AdapterItemProviderDelegator((ItemProviderAdapter)doSwitch) {
// @Override
// public String getText(Object object) {
// if (object instanceof Identifiable) {
// Identifiable id = (Identifiable)object;
//
// EObject eObject = (EObject)object;
// EClass eClass = eObject.eClass();
// // EStructuralFeature feature = getLabelFeature(eClass);
//
// String className = getClassName(eClass);
// EList<Localization> localizations = id.getLocalizations();
// for (Localization localization : localizations) {
// if (iso3Country.equals(localization.getLocal())) {
// return className + " " + localization.getName();
// }
// }
// }
// return super.getText(object);
// }
// };
// }
return super.createAdapter(target);//doSwitch;
}
protected String getClassName(EClass object) {
if (reflectiveItemProviderAdapter == null)
createModifikatorItemProvider();
return reflectiveItemProviderAdapter.getClassName(object);
}
public void dispose() {
if (reflectiveItemProviderAdapter != null) {
reflectiveItemProviderAdapter.dispose();
}
super.dispose();
}
}