...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
public class ExampleFavouriteHandler implements FavouriteHandler { @Override public boolean supports(String type) { return "test".equals(type) || "test-sub".equals(type); } @Override public Collection<Definition> getDefinitions() { List<Definition> definitions = new ArrayList<Definition>(); Definition definition = new Definition("test"); definition.setName("TEST - Nazwa"); definition.setDescription("TEST - Opis"); definition.setTypeDescription("TEST - Typ"); definition.setCountable(false); definitions.add(definition); NestedDefinition nestedDefinition = new NestedDefinition(definition.getType(), "test-sub"); nestedDefinition.setName("TEST-SUB - Nazwa"); nestedDefinition.setDescription("TEST-SUB - Opis"); nestedDefinition.setTypeDescription("TEST-SUB - Typ"); nestedDefinition.setCountable(true); nestedDefinition.setParameter(RandomStringUtils.randomAlphabetic(5)); definitions.add(nestedDefinition); return definitions; } @Override public FavouritesRenderer getRenderer(FavouriteElement favourite) { ExampleFavouriteRenderer renderer = new ExampleFavouriteRendererplugin.getContext().getBean(ExampleFavouriteRenderer.class); renderer.setFavourite(favourite); return renderer; } } |
...
24: zapisujemy dowolne dodatkowe informacje w parametrze, który później może służyć np. do budowania linków
32-34: tworzymy obiekt, który narysuje podany element ulubionych.pobieramy obiekt renderera z kontekstu (komponent ma scope=prototype)
Tip |
---|
Klasa handlera zdefiniowana w module <favourites> zostanie stworzona z wykorzystaniem kontekstu wtyczki, dzięki czemu możliwe jest standardowe korzystanie z adnotacji @Component. |
...
Tip | ||
---|---|---|
Istnieje obiekt pomocniczy który dostarcza domyślne zachowanie rysowania pozwalając na łatwe przeciążenie.
|
Implementacja takiego obiektu może wyglądać tak:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
@Component
@Scope(value="prototype")
public class ExampleFavouriteRenderer extends FavouritesRendererSupport {
@Override
public boolean shouldRender() {
return true;
}
@Override
public String renderDescription() {
return "Parametr:" + getFavourite().getParameter();
}
@Override
public String renderCount() {
return RandomStringUtils.randomNumeric(3);
}
@Override
public String renderAction() {
FavouriteElement element = getFavourite();
if("test".equals(element.getType())){
return "";
}
return getAnchor("Logout.do", "Logout");
}
} |
Komentarze do pliku:
10: 1-2: komponent prototype
12: odczytujemy parametr tego elementu
2123-2426: możemy podejmować decyzje na podstawie aktualnego elementu
Wyświetlana lista ulubionych
Tak skonfigurowany zestaw ulubionych:
Tak wygląda w gadżecie pulpitu:
Deklaracja modułu <favourites>
...