blob: 283d096e876a2f1ff612e2aae75d6a5a7682ea82 [file] [log] [blame]
/*
* Copyright (c) 2014 Eike Stepper (Loehne, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.oomph.targlets.doc.guide;
import org.eclipse.oomph.targlets.core.ITargletContainer;
import org.eclipse.oomph.targlets.core.ITargletContainerListener;
import org.eclipse.oomph.targlets.core.TargletContainerEvent;
import org.eclipse.oomph.targlets.core.TargletContainerEvent.IDChangedEvent;
import org.eclipse.oomph.targlets.core.TargletContainerEvent.ProfileUpdateFailedEvent;
import org.eclipse.oomph.targlets.core.TargletContainerEvent.ProfileUpdateSucceededEvent;
import org.eclipse.oomph.targlets.core.TargletContainerEvent.TargletsChangedEvent;
import org.eclipse.oomph.targlets.core.TargletContainerEvent.WorkspaceUpdateFinishedEvent;
import org.eclipse.core.runtime.IProgressMonitor;
/**
* Listening To Targlet Container Events
* <p>
* When the state of a {@link ITargletContainer targlet container} changes registered {@link ITargletContainerListener listeners} are sent one of the following {@link TargletContainerEvent events}:
* <p>
* <ul>
* <li> {@link IDChangedEvent}
* <li> {@link TargletsChangedEvent}
* <li> {@link ProfileUpdateSucceededEvent}
* <li> {@link ProfileUpdateFailedEvent}
* <li> {@link WorkspaceUpdateFinishedEvent}
* </ul>
* <p>
* Listeners can be registered programmatically or declaratively:
* <p>
* <ul>
* <li> The {@link org.eclipse.oomph.targlets.core.ITargletContainerListener.Registry listener registry} provides methods to add or remove listeners.
* <li> The <a href="../../schemadoc/org_eclipse_oomph_targlets_core_targletContainerListeners.html"><code>org.eclipse.oomph.targlets.core.targletContainerListeners</code></a> extension point accepts declarative listener contributions.
* </ul>
* <p>
* The following example shows a listener that prints information about all received events to the console:
* <p>
* {@link TargletContainerEventLogger}.
* <p>
*
* @number 200
* @author Eike Stepper
* @see UnderstandingTargletContainers
*/
public class ListeningToEvents
{
}
/**
* @snip
*/
class TargletContainerEventLogger implements ITargletContainerListener
{
public TargletContainerEventLogger()
{
}
@Override
@SuppressWarnings("nls")
public void handleTargletContainerEvent(TargletContainerEvent event, IProgressMonitor monitor) throws Exception
{
ITargletContainer container = event.getSource();
if (event instanceof IDChangedEvent)
{
System.out.println("IDChangedEvent: " + container);
System.out.println(" oldID: " + ((IDChangedEvent)event).getOldID());
}
else if (event instanceof TargletsChangedEvent)
{
System.out.println("TargletsChangedEvent: " + container);
}
else if (event instanceof ProfileUpdateSucceededEvent)
{
System.out.println("ProfileUpdateSucceededEvent: " + container);
System.out.println(" metadataRepositories: " + ((ProfileUpdateSucceededEvent)event).getMetadataRepositories());
System.out.println(" workspaceIUInfos: " + ((ProfileUpdateSucceededEvent)event).getWorkspaceIUInfos());
System.out.println(" provisioningPlan: " + ((ProfileUpdateSucceededEvent)event).getProvisioningPlan());
System.out.println(" profile: " + ((ProfileUpdateSucceededEvent)event).getProfile());
}
else if (event instanceof ProfileUpdateFailedEvent)
{
System.out.println("ProfileUpdateFailedEvent: " + container);
System.out.println(" updateProblem: " + ((ProfileUpdateFailedEvent)event).getUpdateProblem());
}
else if (event instanceof WorkspaceUpdateFinishedEvent)
{
System.out.println("WorkspaceUpdateFinishedEvent: " + container);
System.out.println(" importResults: " + ((WorkspaceUpdateFinishedEvent)event).getImportResults());
}
else
{
System.out.println(event);
}
}
}