public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { this.viewer = viewer; if (oldInput != null) { IExecutionContext oldContext = (IExecutionContext) oldInput; oldContext.removeExecutionContextListener(this); } if (newInput != null) { IExecutionContext newContext = (IExecutionContext) newInput; newContext.addExecutionContextListener(this); } }
public Object[] getElements(Object inputElement) { if (inputElement == null) { return new Object[] {}; } if (inputElement instanceof IExecutionContext) { Set<Container> scopes = new HashSet<Container>(); Container defaultContainer = new Container(); scopes.add(defaultContainer); Container timeEventContainer = new Container("Time Events"); scopes.add(timeEventContainer); IExecutionContext context = (IExecutionContext) inputElement; Iterable<AbstractSlot> slotelements = Iterables.concat(context.getDeclaredEvents(), context.getVariables()); for (AbstractSlot abstractSlot : slotelements) { if (abstractSlot.getScopeSegment() != null) { Container newScope = new Container(); newScope.name = abstractSlot.getScopeSegment(); newScope.slots.add(abstractSlot); scopes.add(newScope); } } for (AbstractSlot abstractSlot : slotelements) { if (abstractSlot.getScopeSegment() == null) { if (abstractSlot.getSimpleName().contains("time_event")) { if (!hideTimeEvents()) { timeEventContainer.slots.add(abstractSlot); } } else { defaultContainer.slots.add(abstractSlot); } } else { for (Container container : scopes) { if (abstractSlot.getScopeSegment().equals(container.name)) { container.slots.add(abstractSlot); break; } } } } return Iterables.toArray( Iterables.filter( scopes, new Predicate<Container>() { public boolean apply(Container input) { return input.slots.size() > 0; } }), Container.class); } return new Object[] {}; }