Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
titleExampleFavouriteHandler.java
linenumberstrue
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 ExampleFavouriteRenderer();
		renderer.setFavourite(favourite);
		return renderer;
	}
}

...

12-17: element ulubiony typu test

19-2425: element ulubiony typu test-sub - jest on zagnieżdżony w elemencie test, co spowoduje stworzenie struktury drzewa z oknie wyboru

31-3324: 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.

...

Tip

Istnieje obiekt pomocniczy który dostarcza domyślne zachowanie rysowania pozwalając na łatwe przeciążenie.

Warningnote

Obiekt FavouritesRendererSupport nie jest ThreadSafe - zawsze musimy stworzyć nową instancję tej klasy zwracając ją w metodzie getRenderer(FavouriteElement favourite)

...

Code Block
languagejava
titleExampleFavouriteRenderer.java
linenumberstrue
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: odczytujemy parametr tego elementu

21-24: możemy podejmować decyzje na podstawie aktualnego elementu




Deklaracja modułu <favourites>

...