/* ****************************************************************************** * Copyright (c) 2006-2012 XMind Ltd. and others. * * This file is a part of XMind 3. XMind releases 3 and * above are dual-licensed under the Eclipse Public License (EPL), * which is available at http://www.eclipse.org/legal/epl-v10.html * and the GNU Lesser General Public License (LGPL), * which is available at http://www.gnu.org/licenses/lgpl.html * See http://www.xmind.net/license.html for details. * * Contributors: * XMind Ltd. - initial API and implementation *******************************************************************************/ package net.xmind.signin.internal; import java.util.ArrayList; import java.util.List; import net.xmind.signin.ILicenseInfo; import net.xmind.signin.ILicenseListener; import org.eclipse.core.runtime.SafeRunner; import org.eclipse.jface.util.SafeRunnable; public class XMindLicenseAgent { private ILicenseInfo info = new LicenseInfo(); private List<ILicenseListener> listeners = new ArrayList<ILicenseListener>( 3); protected XMindLicenseAgent() { } public ILicenseInfo getLicenseInfo() { return info; } public void addLicenseListener(ILicenseListener listener) { listeners.add(listener); } public void removeLicenseListener(ILicenseListener listener) { listeners.remove(listener); } public void licenseVerified(ILicenseInfo info) { if (info == null) return; this.info = info; fireLicenseVerified(info); } private void fireLicenseVerified(final ILicenseInfo info) { for (final Object listener : listeners.toArray()) { SafeRunner.run(new SafeRunnable() { public void run() throws Exception { ((ILicenseListener) listener).licenseVerified(info); } }); } } }