LanguageSelectionPane.java 文件源码

java
阅读 22 收藏 0 点赞 0 评论 0

项目:arma-dialog-creator 作者:
public void setToKey(@Nullable StringTableKey key) {
    getChildren().clear();
    links.clear();
    setDisable(key == null);

    //force an update to null so that if the Language is the same as the previous in this observer, the listeners will get notified below at comment marked with: ****
    chosenLanguageObserver.updateValue(null);

    if (key == null) {
        return;
    }

    key.getLanguageTokenMap().addListener(new MapChangeListener<Language, String>() {
        @Override
        public void onChanged(Change<? extends Language, ? extends String> change) {
            if (change.wasAdded()) {
                addLanguage(change.getKey());
                if (links.size() == 1) {
                    chosenLanguageObserver.updateValue(null);
                    chosenLanguageObserver.updateValue(change.getKey());
                }
            } else if (change.wasRemoved()) {
                removeLanguage(change.getKey());
            } else {
                throw new IllegalStateException("unexpected change type:" + change);
            }
        }
    });
    for (Map.Entry<Language, String> token : key.getLanguageTokenMap().entrySet()) {
        addLanguage(token.getKey());
    }

    chosenLanguageObserver.updateValue(defaultLanguage); //**** (see above comment with valueObserver.updateValue(null))
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号