/* * 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.execution; import java.util.ArrayList; import java.util.List; import org.eclipse.ui.services.IDisposable; import org.rf.ide.core.execution.ExecutionElement; class ExecutionElementsStore implements IDisposable { private final List<ExecutionElement> elements = new ArrayList<>(); private final List<ExecutionElementsStoreListener> listeners = new ArrayList<>(); void addStoreListener(final ExecutionElementsStoreListener listener) { listeners.add(listener); } void removeStoreListener(final ExecutionElementsStoreListener storeListener) { listeners.remove(storeListener); } @Override public void dispose() { elements.clear(); listeners.clear(); } void addElement(final ExecutionElement element) { elements.add(element); listeners.forEach(listener -> listener.storeChanged(this, element)); } List<ExecutionElement> getElements() { return elements; } @FunctionalInterface static interface ExecutionElementsStoreListener { void storeChanged(ExecutionElementsStore store, ExecutionElement element); } }