package org.zend.php.zendserver.deployment.ui.editors;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.window.Window;
import org.eclipse.ui.dialogs.ListDialog;
import org.zend.php.zendserver.deployment.core.descriptor.IDeploymentDescriptor;
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.internal.descriptor.Parameter;
import org.zend.php.zendserver.deployment.core.internal.descriptor.Variable;
import org.zend.php.zendserver.deployment.ui.Messages;
public class VarsAndParamsMasterDetailsProvider implements MasterDetailsProvider {
private static final Object[] EMPTY = new Object[0];
public String getDescription() {
return Messages.VarsAndParamsMasterDetailsProvider_DefineVarsAndParams;
}
public Object[] doGetElements(Object input) {
if (input instanceof IDeploymentDescriptor) {
IDeploymentDescriptor descr = (IDeploymentDescriptor) input;
Object[] vars = descr.getVariables().toArray();
Object[] params = descr.getParameters().toArray();
Object[] result = new Object[vars.length + params.length];
System.arraycopy(vars, 0, result, 0, vars.length);
System.arraycopy(params, 0, result, vars.length, params.length);
return result;
}
if (input instanceof Object[]) {
return (Object[]) input;
}
return EMPTY;
}
public Object addElment(IDeploymentDescriptor model, DescriptorMasterDetailsBlock block) {
IVariable var = new Variable();
var.setName(Messages.VariablesMasterDetailsProvider_DefaultVariableName);
IParameter param = new Parameter();
param.setId(Messages.ParametersMasterDetailsProvider_newParamName);
param.setType(IParameter.STRING);
Object[] input = new Object[] { var, param };
ListDialog sd = new ListDialog(block.viewer.getControl().getShell());
sd.setInput(input);
sd.setContentProvider((IStructuredContentProvider) block.viewer.getContentProvider());
sd.setLabelProvider(new DeploymentDescriptorLabelProvider());
sd.setMessage(Messages.VarsAndParamsMasterDetailsProvider_SelectItemToAdd);
sd.setTitle(Messages.VarsAndParamsMasterDetailsProvider_AddVariableOrParam);
if (sd.open() == Window.CANCEL) {
return null;
}
return sd.getResult()[0];
}
public Class getType() {
return null;
}
public Object doGetParent(Object element) {
return null;
}
}