001/*
002 * ============================================================================
003 * Copyright © 2002-2023 by Thomas Thrien.
004 * All Rights Reserved.
005 * ============================================================================
006 * Licensed to the public under the agreements of the GNU Lesser General Public
007 * License, version 3.0 (the "License"). You may obtain a copy of the License at
008 *
009 *      http://www.gnu.org/licenses/lgpl.html
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
013 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
014 * License for the specific language governing permissions and limitations
015 * under the License.
016 */
017
018package org.tquadrat.foundation.svg;
019
020import static org.apiguardian.api.API.Status.STABLE;
021import static org.tquadrat.foundation.svg.SVGUtils.SVGATTRIBUTE_OnActivate;
022import static org.tquadrat.foundation.svg.SVGUtils.SVGATTRIBUTE_OnFocusIn;
023import static org.tquadrat.foundation.svg.SVGUtils.SVGATTRIBUTE_OnFocusOut;
024
025import java.util.List;
026
027import org.apiguardian.api.API;
028import org.tquadrat.foundation.annotation.ClassVersion;
029
030/**
031 *  SVG elements that allow the graphical event attributes
032 *  {@value SVGUtils#SVGATTRIBUTE_OnActivate},
033 *  {@value SVGUtils#SVGATTRIBUTE_OnFocusIn},
034 *  and
035 *  {@value SVGUtils#SVGATTRIBUTE_OnFocusOut}
036 *  will implement this interface.
037 *
038 *  @extauthor Thomas Thrien - thomas.thrien@tquadrat.org
039 *  @version $Id: AllowsGraphicalEventAttributes.java 1074 2023-10-02 12:05:06Z tquadrat $
040 *  @since 0.0.5
041 *
042 *  @UMLGraph.link
043 */
044@ClassVersion( sourceVersion = "$Id: AllowsGraphicalEventAttributes.java 1074 2023-10-02 12:05:06Z tquadrat $" )
045@API( status = STABLE, since = "0.0.5" )
046public sealed interface AllowsGraphicalEventAttributes
047    permits SVG, SVGGroup, SVGLine, SVGPath, SVGRectangle, SVGSymbol, SVGTSpan, SVGText, SVGUse
048{
049        /*------------------------*\
050    ====** Static Initialisations **===========================================
051        \*------------------------*/
052    /**
053     *  The graphical event attributes.
054     */
055    @SuppressWarnings( "StaticCollection" )
056    public static final List<String> GRAPHICALEVENT_ATTRIBUTES = List.of( SVGATTRIBUTE_OnActivate, SVGATTRIBUTE_OnFocusIn, SVGATTRIBUTE_OnFocusOut );
057
058        /*---------*\
059    ====** Methods **==========================================================
060        \*---------*/
061    /**
062     *  Sets the activation handler for this SVG element.
063     *
064     *  @param  value   The activation handler.
065     *
066     *  @see SVGUtils#SVGATTRIBUTE_OnActivate
067     */
068    public void setActivationHandler( final String value );
069
070    /**
071     *  Sets the focus-in handler for this SVG element.
072     *
073     *  @param  value   The focus-in handler.
074     *
075     *  @see SVGUtils#SVGATTRIBUTE_OnFocusIn
076     */
077    public void setFocusInHandler( final String value );
078
079    /**
080     *  Sets the focus-out handler for this SVG element.
081     *
082     *  @param  value   The focus-out handler.
083     *
084     *  @see SVGUtils#SVGATTRIBUTE_OnFocusOut
085     */
086    public void setFocusOutHandler( final String value );
087}
088//  interface AllowsGraphicalEventAttributes
089
090/*
091 *  End of File
092 */