/*
* Copyright 2017 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.views.message;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.ui.services.IDisposable;
class ExecutionMessagesStore implements IDisposable {
private final StringBuilder message = new StringBuilder();
private final List<ExecutionMessagesStoreListener> listeners = new ArrayList<>();
void addStoreListener(final ExecutionMessagesStoreListener listener) {
listeners.add(listener);
}
void removeStoreListener(final ExecutionMessagesStoreListener listener) {
listeners.remove(listener);
}
@Override
public void dispose() {
message.setLength(0);
listeners.clear();
}
void append(final String msg) {
message.append(msg);
listeners.forEach(listener -> listener.storeAppended(this, msg));
}
String getMessage() {
return message.toString();
}
@FunctionalInterface
static interface ExecutionMessagesStoreListener {
void storeAppended(ExecutionMessagesStore store, String appendedMsg);
}
}