package com.mobilesorcery.sdk.ui.internal.launch;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.swt.widgets.Composite;
import com.mobilesorcery.sdk.core.CoreMoSyncPlugin;
import com.mobilesorcery.sdk.ui.UpdateListener.IUpdatableControl;
import com.mobilesorcery.sdk.ui.launch.IEmulatorLaunchConfigurationPart;
public class EmulatorLaunchConfigurationPartProxy implements IEmulatorLaunchConfigurationPart {
private IConfigurationElement element;
private IEmulatorLaunchConfigurationPart delegate;
public EmulatorLaunchConfigurationPartProxy(IConfigurationElement element) {
this.element = element;
}
@Override
public void init(ILaunchConfiguration config) throws CoreException {
initDelegate();
delegate.init(config);
}
@Override
public Composite createControl(Composite parent, IUpdatableControl updatable) {
initDelegate();
return delegate.createControl(parent, updatable);
}
@Override
public void apply(ILaunchConfigurationWorkingCopy copy) {
initDelegate();
delegate.apply(copy);
}
private void initDelegate() {
if (element != null) {
try {
delegate = (IEmulatorLaunchConfigurationPart) element.createExecutableExtension("part");
} catch (Exception e) {
CoreMoSyncPlugin.getDefault().log(e);
} finally {
element = null;
}
}
}
@Override
public IMessageProvider validate() {
initDelegate();
return delegate.validate();
}
}