use of org.eclipse.ecf.pubsub.PublishedServiceDescriptor in project ecf by eclipse.
the class DiscoveryAgent method deactivated.
protected void deactivated(ID sharedObjectID) {
if (isPrimary())
return;
ISharedObjectContext ctx = config.getContext();
Object object = ctx.getSharedObjectManager().getSharedObject(sharedObjectID);
if (object instanceof IPublishedService) {
IPublishedService svc = (IPublishedService) object;
Map props = svc.getProperties();
PublishedServiceDescriptor desc = new PublishedServiceDescriptor(ctx.getLocalContainerID(), sharedObjectID, props);
try {
ctx.sendMessage(config.getHomeContainerID(), SerializationUtil.serialize(new DiscoveryMessage(DiscoveryMessage.REMOVED, desc)));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
use of org.eclipse.ecf.pubsub.PublishedServiceDescriptor in project ecf by eclipse.
the class PublishedServiceDirectory method disconnected.
protected void disconnected(IContainerDisconnectedEvent event) {
ID containerID = event.getTargetID();
if (!containerID.equals(event.getLocalContainerID())) {
synchronized (this) {
Collection values = (Collection) services.remove(event.getTargetID());
if (values != null) {
PublishedServiceDescriptor[] buf = new PublishedServiceDescriptor[values.size()];
values.toArray(buf);
fireServiceChangedEvent(new PublishedServiceDirectoryChangeEvent(this, PublishedServiceDirectoryChangeEvent.REMOVED, buf));
}
}
}
}
use of org.eclipse.ecf.pubsub.PublishedServiceDescriptor in project ecf by eclipse.
the class PublishedServiceDirectory method handleDiscovery.
void handleDiscovery(ID containerID, DiscoveryMessage msg) {
PublishedServiceDescriptor[] descriptors = msg.getDescriptors();
synchronized (this) {
Collection values = (Collection) services.get(containerID);
if (values == null) {
values = new HashSet();
services.put(containerID, values);
}
if (msg.getKind() == DiscoveryMessage.ADDED) {
values.addAll(Arrays.asList(descriptors));
} else {
values.removeAll(Arrays.asList(descriptors));
if (values.isEmpty())
services.remove(containerID);
}
int kind = msg.getKind() == DiscoveryMessage.ADDED ? PublishedServiceDirectoryChangeEvent.ADDED : PublishedServiceDirectoryChangeEvent.REMOVED;
fireServiceChangedEvent(new PublishedServiceDirectoryChangeEvent(this, kind, descriptors));
}
}
use of org.eclipse.ecf.pubsub.PublishedServiceDescriptor in project ecf by eclipse.
the class PubSubView method init.
public void init(IViewSite site) throws PartInitException {
super.init(site);
final Action shareSomethingAction = new Action("Share something") {
public void run() {
try {
IMasterModel sds = SharedModelFactory.getInstance().createSharedDataSource(container, IDFactory.getDefault().createGUID(), new AppendableList(), ListAppender.ID);
if (sds == null)
MessageDialog.openError(getSite().getShell(), "Error", "Could not share anything.");
else {
sharedLists.add(sds);
sharedListViewer.add(sds);
}
} catch (SharedObjectCreateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IDCreateException e) {
throw new RuntimeException(e);
}
}
};
shareSomethingAction.setEnabled(false);
IMenuManager mgr = site.getActionBars().getMenuManager();
mgr.add(new Action("Start") {
public void run() {
container = CollabClient.getContainer(ResourcesPlugin.getWorkspace().getRoot());
if (container == null) {
MessageDialog.openError(getSite().getShell(), "Error", "Collaboration environment not found.");
return;
}
IPublishedServiceDirectory directory = (IPublishedServiceDirectory) container.getAdapter(IPublishedServiceDirectory.class);
viewer.setInput(directory);
setEnabled(false);
shareSomethingAction.setEnabled(true);
}
});
mgr.add(shareSomethingAction);
menuManager = new MenuManager();
subscribeAction = new BaseSelectionListenerAction("Subscribe") {
public void run() {
PublishedServiceDescriptor desc = (PublishedServiceDescriptor) getStructuredSelection().getFirstElement();
IPublishedServiceRequestor requestor = (IPublishedServiceRequestor) container.getAdapter(IPublishedServiceRequestor.class);
requestor.subscribe(desc.getContainerID(), desc.getSharedObjectID(), new SubscriptionViewOpener());
}
protected boolean updateSelection(IStructuredSelection selection) {
return !selection.isEmpty();
}
};
subscribeAction.setEnabled(false);
menuManager.add(subscribeAction);
sharedListMenuManager = new MenuManager();
appendAction = new BaseSelectionListenerAction("Append...") {
public void run() {
InputDialog dlg = new InputDialog(getSite().getShell(), "Append to Shared List", "Enter element to append:", null, null);
dlg.open();
String value = dlg.getValue();
if (value != null) {
LocalAgent model = (LocalAgent) getStructuredSelection().getFirstElement();
AppendableList list = (AppendableList) model.getData();
if (list.add(value)) {
try {
model.update(value);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
protected boolean updateSelection(IStructuredSelection selection) {
return !selection.isEmpty();
}
};
appendAction.setEnabled(false);
sharedListMenuManager.add(appendAction);
}
use of org.eclipse.ecf.pubsub.PublishedServiceDescriptor in project ecf by eclipse.
the class DiscoveryAgent method activated.
protected void activated(ID sharedObjectID) {
if (isPrimary())
return;
ISharedObjectContext ctx = config.getContext();
Object object = ctx.getSharedObjectManager().getSharedObject(sharedObjectID);
if (object instanceof IPublishedService) {
IPublishedService svc = (IPublishedService) object;
Map props = svc.getProperties();
PublishedServiceDescriptor desc = new PublishedServiceDescriptor(ctx.getLocalContainerID(), sharedObjectID, props);
try {
ctx.sendMessage(config.getHomeContainerID(), SerializationUtil.serialize(new DiscoveryMessage(DiscoveryMessage.ADDED, desc)));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Aggregations