package com.netifera.platform.ui.probe;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.jface.action.IAction;
import com.netifera.platform.api.log.ILogManager;
import com.netifera.platform.api.log.ILogger;
import com.netifera.platform.api.model.IShadowEntity;
import com.netifera.platform.api.probe.IProbe;
import com.netifera.platform.api.probe.IProbe.ConnectState;
import com.netifera.platform.model.ProbeEntity;
import com.netifera.platform.ui.actions.SpaceAction;
import com.netifera.platform.ui.api.actions.IEntityActionProvider;
import com.netifera.platform.ui.api.actions.ISpaceAction;
public class ProbeActionProvider implements IEntityActionProvider {
private ILogger logger;
public List<IAction> getActions(IShadowEntity shadow) {
return Collections.emptyList();
}
private void addProbeActions(List<IAction> actions, ProbeEntity probeEntity) {
final IProbe probe = Activator.getDefault().getProbeManager().getProbeById(probeEntity.getProbeId());
if(probe == null)
return;
if(probe.getConnectState() == ConnectState.CONNECTED) {
ISpaceAction disconnectAction = new SpaceAction("Disconnect Probe") {
public void run() {
probe.disconnect();
}
};
disconnectAction.setImageDescriptor(Activator.getDefault().getImageCache().getDescriptor("icons/disconnect.png"));
actions.add(disconnectAction);
actions.add(new OpenSpaceAction(probe, logger));
}
if(probe.getConnectState() == ConnectState.DISCONNECTED) {
ISpaceAction connectAction = new SpaceAction("Connect Probe") {
public void run() {
probe.connect();
}
};
connectAction.setImageDescriptor(Activator.getDefault().getImageCache().getDescriptor("icons/connect.png"));
actions.add(connectAction);
}
}
public List<IAction> getQuickActions(IShadowEntity shadow) {
List<IAction> actions = new ArrayList<IAction>();
if(shadow instanceof ProbeEntity) {
addProbeActions(actions, (ProbeEntity) shadow);
}
return actions;
}
protected void setLogManager(ILogManager logManager) {
logger = logManager.getLogger("Probe Action");
}
protected void unsetLogManager(ILogManager logManager) {
}
}