lquitsch
I'm new here

Sprache des aktuellen Tabs auslesen

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.

3 Replies
Hendrik
New Responder

Hi Lars,

da sollte nicht unerwähnt bleiben das de.espirit.firstspirit.client.gui.model.ModelService weder Teil der Access- noch Developer-API ist Smiley Wink

Gruß, Hendrik

0 Kudos

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 Smiley Happy

Gruß, Hendrik

0 Kudos