use of org.obeonetwork.graal.Actor in project InformationSystem by ObeoNetwork.
the class ActorUtils method getVisibleLinksToActorsFromTask.
/**
* Get the list of actors that should be visually connected to a task
* The list depends on inherited actors and already visible tasks on diagram
* @param task The task for which we want the actors list
* @param tasksOnDiagram List of visible tasks on diagram
* @return List of Actors
*/
private Collection<Actor> getVisibleLinksToActorsFromTask(Task task, final List<Task> tasksOnDiagram) {
if (task.getActors().isEmpty()) {
// Get using tasks that are displayed on diagram
List<Task> usingTasksOnDiagram = Lists.newArrayList(task.getUsedBy());
Iterables.retainAll(usingTasksOnDiagram, tasksOnDiagram);
// Filter the related actors to keep those not already associated with a displayed using task
List<Actor> relatedActors = Lists.newArrayList(task.getRelatedActors());
for (Task usingTask : usingTasksOnDiagram) {
if (!relatedActors.isEmpty()) {
Iterables.removeAll(relatedActors, usingTask.getRelatedActors());
} else {
break;
}
}
// we then have to display the whole actors list to prevent from misunderstanding
if (!relatedActors.isEmpty()) {
return task.getRelatedActors();
} else {
return Collections.emptyList();
}
} else {
return task.getActors();
}
}
use of org.obeonetwork.graal.Actor in project InformationSystem by ObeoNetwork.
the class ActorUtils method getVisibleActors.
/**
* Returns the visible actors for a use case
* @param useCase
* @return
*/
public Set<Actor> getVisibleActors(UseCase useCase) {
HashMap<Task, Set<Actor>> cache = new HashMap<Task, Set<Actor>>();
Set<Actor> actors = new LinkedHashSet<Actor>();
List<Actor> actorsLeft = getAllActorsInContext(useCase);
for (AbstractTask abstractTask : useCase.getTasks()) {
actors.addAll(internalGetVisibleActors(abstractTask, cache, actorsLeft));
}
return actors;
}
use of org.obeonetwork.graal.Actor in project InformationSystem by ObeoNetwork.
the class ActorUtils method internalGetVisibleActors.
/**
* Collect the visible actors for a task, using an internal cache
* @param abstractTask
* @param cache Map to store already calculated links between Tasks and Actors
* @param actorsLeft List of actors not yet in the final list (used to improve performance)
* @return
*/
private Set<Actor> internalGetVisibleActors(AbstractTask abstractTask, Map<Task, Set<Actor>> cache, List<Actor> actorsLeft) {
if (!actorsLeft.isEmpty()) {
if (abstractTask instanceof Task) {
Task task = (Task) abstractTask;
if (cache.containsKey(task)) {
return cache.get(task);
} else {
Set<Actor> actors = new LinkedHashSet<Actor>();
cache.put(task, actors);
if (task.getActors().isEmpty()) {
for (Task usingTask : task.getUsedBy()) {
if (!cache.containsKey(usingTask) && !actorsLeft.isEmpty()) {
actors.addAll(internalGetVisibleActors(usingTask, cache, actorsLeft));
}
}
} else {
actors.addAll(task.getActors());
actorsLeft.removeAll(actors);
}
cache.put(task, actors);
return actors;
}
} else if (abstractTask instanceof TasksGroup) {
Set<Actor> actors = new LinkedHashSet<Actor>();
TasksGroup group = (TasksGroup) abstractTask;
for (AbstractTask subTask : group.getTasks()) {
if (!actorsLeft.isEmpty()) {
actors.addAll(internalGetVisibleActors(subTask, cache, actorsLeft));
}
}
return actors;
}
}
return new LinkedHashSet<Actor>();
}
use of org.obeonetwork.graal.Actor in project InformationSystem by ObeoNetwork.
the class ActorUtils method getVisibleActors.
/**
* Returns the visible actors for a system
* @param system
* @return
*/
public Set<Actor> getVisibleActors(System system) {
HashMap<Task, Set<Actor>> cache = new HashMap<Task, Set<Actor>>();
Set<Actor> actors = new LinkedHashSet<Actor>();
List<Actor> actorsLeft = getAllActorsInContext(system);
for (AbstractTask abstractTask : system.getTasks()) {
actors.addAll(internalGetVisibleActors(abstractTask, cache, actorsLeft));
}
return actors;
}
use of org.obeonetwork.graal.Actor in project InformationSystem by ObeoNetwork.
the class ActorActorPropertiesEditionComponent method initPart.
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#initPart(java.lang.Object, int, org.eclipse.emf.ecore.EObject,
* org.eclipse.emf.ecore.resource.ResourceSet)
*/
public void initPart(Object key, int kind, EObject elt, ResourceSet allResource) {
setInitializing(true);
if (editingPart != null && key == partKey) {
editingPart.setContext(elt, allResource);
final Actor actor = (Actor) elt;
final ActorPropertiesEditionPart actorPart = (ActorPropertiesEditionPart) editingPart;
// init values
if (isAccessible(GraalViewsRepository.Actor.Properties.description))
actorPart.setDescription(EcoreUtil.convertToString(EcorePackage.Literals.ESTRING, actor.getDescription()));
if (isAccessible(GraalViewsRepository.Actor.Properties.subActors)) {
subActorsSettings = new ReferencesTableSettings(actor, GraalPackage.eINSTANCE.getActor_SubActors());
actorPart.initSubActors(subActorsSettings);
}
if (isAccessible(GraalViewsRepository.Actor.Properties.superActor)) {
// init part
superActorSettings = new EObjectFlatComboSettings(actor, GraalPackage.eINSTANCE.getActor_SuperActor());
actorPart.initSuperActor(superActorSettings);
// set the button mode
actorPart.setSuperActorButtonMode(ButtonsModeEnum.BROWSE);
}
if (isAccessible(GraalViewsRepository.Actor.Properties.name))
actorPart.setName(EEFConverterUtil.convertToString(EcorePackage.Literals.ESTRING, actor.getName()));
if (isAccessible(GraalViewsRepository.Actor.Properties.subActors)) {
actorPart.addFilterToSubActors(new EObjectFilter(GraalPackage.Literals.ACTOR));
// Start of user code for additional businessfilters for subActors
// End of user code
}
if (isAccessible(GraalViewsRepository.Actor.Properties.superActor)) {
actorPart.addFilterToSuperActor(new ViewerFilter() {
/**
* {@inheritDoc}
*
* @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
public boolean select(Viewer viewer, Object parentElement, Object element) {
// $NON-NLS-1$
return (element instanceof String && element.equals("")) || (element instanceof Actor);
}
});
// Start of user code for additional businessfilters for superActor
// End of user code
}
// init values for referenced views
// init filters for referenced views
}
setInitializing(false);
}
Aggregations