package com.mobilesorcery.sdk.ui.targetphone.internal;
import java.io.File;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.window.IShellProvider;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import com.mobilesorcery.sdk.core.CoreMoSyncPlugin;
import com.mobilesorcery.sdk.core.IBuildVariant;
import com.mobilesorcery.sdk.core.MoSyncProject;
import com.mobilesorcery.sdk.profiles.IDeviceFilter;
import com.mobilesorcery.sdk.ui.targetphone.ITargetPhone;
import com.mobilesorcery.sdk.ui.targetphone.ITargetPhoneTransport;
import com.mobilesorcery.sdk.ui.targetphone.ITargetPhoneTransportDelegate;
public class TargetPhoneTransportProxy implements ITargetPhoneTransport {
private String id;
private IConfigurationElement transportExtension;
private ITargetPhoneTransportDelegate delegate;
private ImageDescriptor icon;
public TargetPhoneTransportProxy(IConfigurationElement transportExtension) {
this.id = transportExtension.getAttribute("id");
String iconId = transportExtension.getAttribute("icon");
String declaringPlugin = transportExtension.getDeclaringExtension()
.getNamespaceIdentifier();
if (iconId != null) {
try {
icon = AbstractUIPlugin.imageDescriptorFromPlugin(
declaringPlugin, iconId);
} catch (Exception e) {
CoreMoSyncPlugin.getDefault().log(e);
}
}
this.transportExtension = transportExtension;
}
private void initDelegate() {
if (delegate == null) {
try {
delegate = (ITargetPhoneTransportDelegate) transportExtension
.createExecutableExtension("implementation");
} catch (CoreException e) {
CoreMoSyncPlugin.getDefault().log(e);
}
transportExtension = null;
}
}
public String getId() {
return id;
}
public ITargetPhone load(IMemento memento, String name) {
initDelegate();
return delegate.load(memento, name);
}
public boolean store(ITargetPhone phone, IMemento memento) {
initDelegate();
return delegate.store(phone, memento);
}
public void send(IShellProvider shell, MoSyncProject project, IBuildVariant variant,
ITargetPhone phone, File packageToSend, IProgressMonitor monitor)
throws CoreException {
initDelegate();
delegate.send(shell, project, variant, phone, packageToSend, monitor);
}
public ITargetPhone scan(IShellProvider shell, IProgressMonitor monitor)
throws CoreException {
initDelegate();
return delegate.scan(shell, monitor);
}
public ImageDescriptor getIcon() {
return icon;
}
public String getDescription(String context) {
initDelegate();
return delegate.getDescription(context);
}
public boolean isAvailable() {
initDelegate();
return delegate.isAvailable();
}
public IDeviceFilter getAcceptedProfiles() {
initDelegate();
return delegate.getAcceptedProfiles();
}
}