/** * Builds a conversation model. * * @param view view containing this conversation * @param wavelet wavelet on which to build the conversation * @param manifest manifest describing the conversation structure * @param idGenerator generator for new identifiers * @return a new conversation model */ static WaveletBasedConversation create(WaveBasedConversationView view, ObservableWavelet wavelet, ObservableManifest manifest, IdGenerator idGenerator) { WaveletBasedConversation conversation = new WaveletBasedConversation(view, wavelet, manifest, idGenerator); wavelet.addListener(conversation.waveletListener); manifest.addListener(conversation.manifestListener); conversation.observe(conversation.rootThread); return conversation; }