Search the FirstSpirit Knowledge Base
Hi,
ich hatte das Problem, dass ich zur Vorfilterung in einem DAP die Sprache des aktuellen Tabs brauchte. Nach ein wenig suchen habe ich die Lösung gefunden und möchte sie euch nicht vorenthalten.
Zur Lösung benötigt man eine eigenes registriertes Permanent Plugin.
Der folgenden Code sorgt dafür, dass man über context.requireSpecialist(ServicesBroker.TYPE).getService(LanguageService.class).getCurrentLang() auf die Sprache des aktuellen Tabs zugreifen kann.
LanguagePermanentPlugin.java
public class LanguagePermanentPlugin implements JavaClientPermanentPlugin {
@Override
public void setUp(BaseContext context) {ClientServiceRegistryAgent clientServiceRegistryAgent = context.requestSpecialist(ClientServiceRegistryAgent.TYPE);
LanguageService languageService = new LanguageServiceImpl();
clientServiceRegistryAgent.registerClientService(LanguageService.class, languageService);
ModelService modelService = context.requireSpecialist(ServicesBroker.TYPE).getService(ModelService.class);
modelService.addModelListener(EditorialLanguageModel.EDITORIAL_LANGUAGE, new LanguageModelModelListener(languageService));
}@Override
public void tearDown() {}
}
LanguageModelModelListener.java
public class LanguageModelModelListener implements ModelListener<EditorialLanguageModel> {
private final LanguageService languageService;
public LanguageModelModelListener(LanguageService languageService) {this.languageService = languageService;
}@Override
public void modelChanged(EditorialLanguageModel editorialLanguageModel) {languageService.setCurrentLang(editorialLanguageModel.getLanguage());
}
}
LanguageService.java
public interface LanguageService {
void setCurrentLang(Language language);
Language getCurrentLang();
}
LanguageServiceImpl.java
public class LanguageServiceImpl implements LanguageService {
private Language language = null;
@Override
public void setCurrentLang(Language language) {this.language = language;
}@Override
public Language getCurrentLang() {return language;
}
Dann nur noch in der module.xml als PermanentPlugin registrieren.
<components>
<public>
<name>LanguagePermanentPlugin</name>
<displayname>LanguagePermanentPlugin</displayname>
<class>PATH TO LanguagePermanentPlugin</class>
<hidden>false</hidden>
</public>
</components>
Ich hoffe ich konnte jemandem damit helfen.
Hi Lars,
da sollte nicht unerwähnt bleiben das de.espirit.firstspirit.client.gui.model.ModelService weder Teil der Access- noch Developer-API ist
Gruß, Hendrik
Hallo Hendrik,
doch, der ist Teil der DEV-API: ModelService (FirstSpirit Developer-API)
Viele Grüße
Michael
Hallo mbergmann,
stimmt - trotz doppelter Prüfung hatte ich die Klasse nicht gefunden :smileyconfused:
Danke für die Korrektur
Gruß, Hendrik