001/*******************************************************************************
002 * This software is provided as a supplement to the authors' textbooks on digital
003 * image processing published by Springer-Verlag in various languages and editions.
004 * Permission to use and distribute this software is granted under the BSD 2-Clause
005 * "Simplified" License (see http://opensource.org/licenses/BSD-2-Clause).
006 * Copyright (c) 2006-2023 Wilhelm Burger, Mark J. Burge. All rights reserved.
007 * Visit https://imagingbook.com for additional details.
008 ******************************************************************************/
009package imagingbook.core.plugin;
010
011import java.lang.annotation.Retention;
012import java.lang.annotation.Target;
013
014import static java.lang.annotation.ElementType.PACKAGE;
015import static java.lang.annotation.ElementType.TYPE;
016import static java.lang.annotation.RetentionPolicy.RUNTIME;
017
018/**
019 * Annotation to specify the menu path (tree branch) of the associated plugin class or an entire plugin package. Takes a
020 * {@link String} argument e.g.,
021 * <pre>
022 * {@literal @}IjMenuPath("Plugins&gt;My Stuff")
023 * {@literal @}IjMenuEntry("My Plugin")
024 * public class My_Plugin implements PlugInFilter {
025 *   ...
026 * }</pre>
027 * May also be used on the {@code package} declaration in file {@code package-info.java} to set the default menu path
028 * for all plugins directly contained in that package (but not nested), e.g.,
029 * <pre>
030 * {@literal @}IjMenuPath("Plugins&gt;Binary Regions")
031 * package Binary_Regions;</pre>
032 * Annotations for individual plugin classes override the package-level setting.
033 */
034@Retention(RUNTIME)
035@Target({ TYPE, PACKAGE })
036public @interface IjPluginPath {
037        public String value();
038}