/*******************************************************************************
* 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.resources.reveal;
import com.google.common.annotations.Beta;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import org.eclipse.che.ide.api.resources.Resource;
import org.eclipse.che.ide.resource.Path;
import static com.google.common.base.Preconditions.checkNotNull;
/**
* Broadcast event to reveal given resource in active focused part.
* <p/>
* Usually, part which handles this event should check if it is focused at this moment and if so, process revealing the resource.
*
* @author Vlad Zhukovskiy
* @since 4.4.0
*/
@Beta
public class RevealResourceEvent extends GwtEvent<RevealResourceEvent.RevealResourceHandler> {
/**
* A listener which notifies third-party components to reveal the specific resource.
* <p/>
* Third-party components should check if their's part is focused at this moment and id so, then process revealing the resource.
*/
public interface RevealResourceHandler extends EventHandler {
/**
* Notifies the listener that given resource should be revealed by handled part.
*
* @param event
* instance of {@link RevealResourceEvent}
* @see RevealResourceEvent
* @since 4.4.0
*/
void onRevealResource(RevealResourceEvent event);
}
private static Type<RevealResourceHandler> TYPE;
public static Type<RevealResourceHandler> getType() {
if (TYPE == null) {
TYPE = new Type<>();
}
return TYPE;
}
private Path location;
public RevealResourceEvent(Resource resource) {
this.location = checkNotNull(resource, "Resource should not be a null").getLocation();
}
public RevealResourceEvent(Path location) {
this.location = checkNotNull(location, "Path should not be a null");
}
/**
* Returns the resource path which should be revealed.
*
* @return the resource path
* @since 4.4.0
*/
public Path getLocation() {
return location;
}
/** {@inheritDoc} */
@Override
public Type<RevealResourceHandler> getAssociatedType() {
return TYPE;
}
/** {@inheritDoc} */
@Override
protected void dispatch(RevealResourceHandler handler) {
handler.onRevealResource(this);
}
}