示例#1
0
  @Override
  public <T extends Enum> void squelch(EventListener<T, ?> el, T... events) {
    if (events == null || events.length == 0) {
      throw new IllegalArgumentException("Must unsubscribe from at least one event type");
    }

    final Set<EventListenerDescriptor> listenerSet =
        listenerMap.get(new ComparableClassWrapper<Enum>(events[0].getClass()));

    if (listenerSet != null) {
      final Iterator<EventListenerDescriptor> itr = listenerSet.iterator();

      while (itr.hasNext()) {
        final EventListenerDescriptor<T> elw = itr.next();

        if (elw.getListener() == el) {
          if (elw.silence(Arrays.asList(events))) {
            itr.remove();
          }

          break;
        }
      }
    }
  }
示例#2
0
  @Override
  public <T extends Enum> void squelch(EventListener<T, ?> el, Class<T> events) {
    final Set<EventListenerDescriptor> listenerSet =
        listenerMap.get(new ComparableClassWrapper<Enum>(events));

    if (listenerSet != null) {
      final Iterator<EventListenerDescriptor> itr = listenerSet.iterator();

      while (itr.hasNext()) {
        final EventListenerDescriptor<T> elw = itr.next();

        if (elw.getListener() == el) {
          itr.remove();
          break;
        }
      }
    }
  }
示例#3
0
  private <T extends Enum> void regsiterListener(
      EventListener<T, ?> el, Class<T> enumClass, Collection<T> events) {
    boolean found = false;

    final Set<EventListenerDescriptor> descriptorSet = getOrCreateListenerSet(enumClass);

    for (EventListenerDescriptor<T> descriptor : descriptorSet) {
      if (descriptor.getListener() == el) {
        descriptor.listenFor(events);
        found = true;

        break;
      }
    }

    if (!found) {
      descriptorSet.add(new EventListenerDescriptor<T>(el, events));
    }
  }