/** @author <a href="mailto:[email protected]">Konstantin Komissarchik</a> */ public final class ContactImageService extends ImageService { private static final ImageServiceData IMG_PERSON = new ImageServiceData(ImageData.readFromClassLoader(Contact.class, "Contact.png")); private static final ImageServiceData IMG_PERSON_FADED = new ImageServiceData(ImageData.readFromClassLoader(Contact.class, "ContactFaded.png")); private Listener listener; @Override protected void initImageService() { this.listener = new FilteredListener<PropertyContentEvent>() { @Override protected void handleTypedEvent(final PropertyContentEvent event) { refresh(); } }; context(IModelElement.class).attach(this.listener, "EMail"); } @Override protected ImageServiceData compute() { if (context(Contact.class).getEMail().getContent() == null) { return IMG_PERSON_FADED; } else { return IMG_PERSON; } } @Override public void dispose() { super.dispose(); context(IModelElement.class).detach(this.listener, "EMail"); } }