/**
*
*/
package org.nightlabs.jfire.trade.admin.ui.editor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorMatchingStrategy;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.PartInitException;
import org.nightlabs.jfire.base.jdo.JDOObjectID2PCClassMap;
import org.nightlabs.jfire.store.ProductType;
import org.nightlabs.jfire.store.id.ProductTypeID;
/**
* @author Daniel Mazurek - daniel [at] nightlabs [dot] de
*
*/
public abstract class AbstractProductTypeAdminEditorMatchingStrategy
implements IEditorMatchingStrategy
{
/* (non-Javadoc)
* @see org.eclipse.ui.IEditorMatchingStrategy#matches(org.eclipse.ui.IEditorReference, org.eclipse.ui.IEditorInput)
*/
public boolean matches(IEditorReference editorRef, IEditorInput input)
{
if (input instanceof ProductTypeEditorInput) {
ProductTypeEditorInput productTypeEditorInput = (ProductTypeEditorInput) input;
ProductTypeID productTypeID = productTypeEditorInput.getJDOObjectID();
Class<?> clazz = JDOObjectID2PCClassMap.sharedInstance().getPersistenceCapableClass(productTypeID);
// if (clazz != null && clazz.equals(getProductTypeClass())) {
// added assignable from check so that matching strategy also works for subclasses
if (clazz != null && getProductTypeClass().isAssignableFrom(clazz)) {
if (editorRef == null)
return true;
else
try {
if (editorRef.getEditorInput().equals(input)) {
return true;
}
} catch (PartInitException e) {
return false;
}
}
}
return false;
}
/**
* Returns the Class of the ProductType the editor of the strategy is used for.
* @return the Class of the ProductType the editor of the strategy is used for
*/
public abstract Class<? extends ProductType> getProductTypeClass();
}