jairo-s
9/15/2017 - 3:29 PM

Lookup Global, LookupListener NetBeans RCP 5.5

Implementacion de un LookupListener para estar escuchando cuando se agregan nuevos eventos al LookupGlobal

En esta parte del codigo, indicas que el lookup listener escuche al momento de abrir el TopComponent. El actionsGlobalContext() sirve para localizar el objeto que tiene el foco (el que esta seleccionado)

private Lookup.Result result;

@Override
public void componentOpened() {
  Lookup.Template template = new Lookup.Template(Eventos.class);
  result = Utilities.actionsGlobalContext().lookup(template);
  result.addLookupListener(this);
  result.allInstances();
}

En esta parte de codigo, indicas que deje de escuchar el LookupListener al TopComponent, es decir, romper el Listener al cerrar el TopComponent

@Override
public void componentClosed() {
  result.removeLookupListener(this);
}

En este codigo le indicas que hacer cuando se anadan eventos al lookup global, notificara al LookupListener y entrara a esta parte del codigo

@Override
public void resultChanged(LookupEvent ev) {
  Collection<? extends Eventos> allEvents = result.allInstances();
  if(!allEvents.isEmpty()) {
    Eventos event = allEvents.iterator().next();
    jLabel1.setText(Integer.toString(event.getIndex()));
    jLabel2.setText(event.getDate().toString());
  } else {
    jLabel1.setText("No hay nada seleccionado");
    jLabel2.setText("");
  }
}

Esta es la forma de agregar objetos al Lookup Global, se genera la instancia de la clase y se crea el Lookup (Singleton, Fixed, Proxy, Abstract) con la instancia como parametro y se asocia al LookupGlobal

Eventos obj = new Eventos();
associateLookup(Lookups.singleton(obj));