/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2015 Geosparc nv, http://www.geosparc.com/, Belgium.
*
* The program is available in open source according to the GNU Affero
* General Public License. All contributions in this program are covered
* by the Geomajas Contributors License Agreement. For full licensing
* details, see LICENSE.txt in the project root.
*/
package org.geomajas.gwt2.client.event;
import org.geomajas.annotation.Api;
import org.geomajas.annotation.UserImplemented;
import com.google.gwt.event.shared.EventHandler;
import com.google.web.bindery.event.shared.Event.Type;
/**
* Interface for handling layer visibility events.
*
* @author Pieter De Graef
* @since 2.0.0
*/
@Api(allMethods = true)
@UserImplemented
public interface LayerLabeledHandler extends EventHandler {
/**
* The type of the handler.
*/
Type<LayerLabeledHandler> TYPE = new Type<LayerLabeledHandler>();
/**
* Called when labels are shown on the layer. This event gives you no doubt, if this method is called,you can see
* the labels with your own eyes.
*
* @param event
* The event that signals the labels are currently visible.
*/
void onLabelShow(LayerLabelShowEvent event);
/**
* Called when labels for a layer have become invisible. This can be due to the fact that is as marked as invisible,
* or due to the fact that the layer itself became invisible for some reason.
*
* @param event
* The event that signals the labels are currently invisible.
*/
void onLabelHide(LayerLabelHideEvent event);
/**
* <p>
* Called when the labels of a layer have been marked as visible or invisible. Note that when labels have been
* marked as invisible at a moment when they where actually visible, than you can expect a call to
* <code>onLabelHide</code> shortly.
* </p>
* <p>
* On the other hand marking labels as visible does not necessarily mean that they will become visible. For labels
* to becomes visible, they must be invisible and their layer must be visible. Only if those requirements are met
* will the labels truly become visible and can you expect a call to <code>onLabelShow</code> to follow this method.
* </p>
*
* @param event
* The event that signals the labels have been marked as visible or invisible. The event contain the
* layer, so ask him which it is.
*/
void onLabelMarked(LayerLabelMarkedEvent event);
}