/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.api.resources.marker;
import com.google.common.annotations.Beta;
import com.google.common.base.MoreObjects;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import org.eclipse.che.ide.api.resources.Resource;
import static com.google.common.base.Preconditions.checkNotNull;
/**
* Marker created event. This event fires when marker has been created.
* Created, means that marker has bound to the resource.
*
* @author Vlad Zhukovskiy
* @see Marker
* @since 4.4.0
*/
@Beta
public class MarkerChangedEvent extends GwtEvent<MarkerChangedEvent.MarkerChangedHandler> {
/**
* A marker create listener is notified of marker creation to the specified resource.
* <p/>
* Third party components may implement this interface to handle marker creation event.
*/
public interface MarkerChangedHandler extends EventHandler {
/**
* Notifies the listener that some marker has been created.
*
* @param event
* instance of {@link MarkerChangedEvent}
* @see MarkerChangedEvent
* @since 4.4.0
*/
void onMarkerChanged(MarkerChangedEvent event);
}
private static Type<MarkerChangedHandler> TYPE;
public static Type<MarkerChangedHandler> getType() {
if (TYPE == null) {
TYPE = new Type<>();
}
return TYPE;
}
private final Resource resource;
private final Marker marker;
private final int status;
public MarkerChangedEvent(Resource resource, Marker marker, int status) {
this.status = status;
this.resource = checkNotNull(resource, "Resource should not be a null");
this.marker = checkNotNull(marker, "Marker should not be a null");
}
/**
* Returns the resource which is the host of specified marker.
*
* @return the resource
* @since 4.4.0
*/
public final Resource getResource() {
return resource;
}
/**
* Returns the marker which is bounded to resource provided by {@link #getResource()}.
*
* @return the marker
* @see Marker
* @since 4.4.0
*/
public Marker getMarker() {
return marker;
}
/**
* Returns the status of event.
*
* @return the status
* @see Marker#CREATED
* @see Marker#REMOVED
* @see Marker#UPDATED
* @since 4.4.0
*/
public int getStatus() {
return status;
}
/** {@inheritDoc} */
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("resource", resource)
.add("marker", marker)
.add("status", status)
.toString();
}
/** {@inheritDoc} */
@Override
public Type<MarkerChangedHandler> getAssociatedType() {
return TYPE;
}
/** {@inheritDoc} */
@Override
protected void dispatch(MarkerChangedHandler handler) {
handler.onMarkerChanged(this);
}
}