package org.zend.php.zendserver.deployment.ui.editors;
import org.eclipse.ui.forms.IDetailsPage;
import org.eclipse.ui.forms.IDetailsPageProvider;
import org.zend.php.zendserver.deployment.core.descriptor.IDirectiveDependency;
import org.zend.php.zendserver.deployment.core.descriptor.IExtensionDependency;
import org.zend.php.zendserver.deployment.core.descriptor.IPHPDependency;
import org.zend.php.zendserver.deployment.core.descriptor.IPHPLibraryDependency;
import org.zend.php.zendserver.deployment.core.descriptor.IParameter;
import org.zend.php.zendserver.deployment.core.descriptor.IVariable;
import org.zend.php.zendserver.deployment.core.descriptor.IZendComponentDependency;
import org.zend.php.zendserver.deployment.core.descriptor.IZendFramework2Dependency;
import org.zend.php.zendserver.deployment.core.descriptor.IZendFrameworkDependency;
import org.zend.php.zendserver.deployment.core.descriptor.IZendServerDependency;
public class DetailsPageProvider implements IDetailsPageProvider {
private IDetailsPage phpPage;
private IDetailsPage dirPage;
private IDetailsPage extensionPage;
private IDetailsPage zsPage;
private IDetailsPage zfPage;
private IDetailsPage zscompPage;
private IDetailsPage paramsPage;
private IDetailsPage varPage;
private IDetailsPage libraryPage;
private DeploymentDescriptorEditor editor;
private Class type;
public DetailsPageProvider(DeploymentDescriptorEditor editor, Class type) {
this.editor = editor;
this.type = type;
}
public Object getPageKey(Object object) {
return object.getClass();
}
public IDetailsPage getPage(Object key) {
Class clazz = (Class) key;
if ((type != null) && (!type.isAssignableFrom(clazz))) {
return null;
}
if (IVariable.class.isAssignableFrom(clazz)) {
if (varPage == null) {
varPage = new VariableDetailsPage(editor);
}
return varPage;
}
if (IParameter.class.isAssignableFrom(clazz)) {
if (paramsPage == null) {
paramsPage = new ParameterDetailsPage(editor);
}
return paramsPage;
}
if (IPHPDependency.class.isAssignableFrom(clazz)) {
if (phpPage == null) {
phpPage = new PHPDependencyDetailsPage(editor);
}
return phpPage;
}
if (IPHPLibraryDependency.class.isAssignableFrom(clazz)) {
if (libraryPage == null) {
libraryPage = new PHPLibraryDependencyDetailsPage(editor);
}
return libraryPage;
}
if (IExtensionDependency.class.isAssignableFrom(clazz)) {
if (extensionPage == null) {
extensionPage = new ExtensionDependencyDetailsPage(editor);
}
return extensionPage;
}
if (IDirectiveDependency.class.isAssignableFrom(clazz)) {
if (dirPage == null) {
dirPage = new DirectiveDependencyDetailsPage(editor);
}
return dirPage;
}
if (IZendServerDependency.class.isAssignableFrom(clazz)) {
if (zsPage == null) {
zsPage = new ZendServerDependencyDetailsPage(editor);
}
return zsPage;
}
if (IZendFramework2Dependency.class.isAssignableFrom(clazz)) {
if (zfPage == null) {
zfPage = new ZendFramework2DependencyDetailsPage(editor);
}
return zfPage;
}
if (IZendFrameworkDependency.class.isAssignableFrom(clazz)) {
if (zfPage == null) {
zfPage = new ZendFrameworkDependencyDetailsPage(editor);
}
return zfPage;
}
if (IZendComponentDependency.class.isAssignableFrom(clazz)) {
if (zscompPage == null) {
zscompPage = new ZendComponentDependencyDetailsPage(editor);
}
return zscompPage;
}
return null;
}
}