All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hudson.model.Action Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 *
 * Copyright (c) 2004-2009 Oracle Corporation.
 *
 * 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: 
*
*    Kohsuke Kawaguchi, Michael B. Donohue
 *     
 *
 *******************************************************************************/ 

package hudson.model;

import hudson.tasks.test.TestResultProjectAction;

/**
 * Object that contributes additional information, behaviors, and UIs to {@link ModelObject}
 * (more specifically {@link Actionable} objects, which most interesting {@link ModelObject}s are.)
 *
 * 

* {@link Action}s added to a model object creates additional URL subspace under the parent model object, * through which it can interact with users. {@link Action}s are also capable of exposing themselves * to the left hand side menu of a {@link ModelObject} (for example to {@link Project}, {@link Build}, and etc.) * *

* Some actions use the latter without the former (for example, to add a link to an external website), * while others do the former without the latter (for example, to just draw some graphs in floatingBox.jelly), * and still some others do both. * *

* If an action has a view named floatingBox.jelly, * it will be displayed as a floating box on the top page of * the target {@link ModelObject}. (For example, this is how * the JUnit test result trend shows up in the project top page. * See {@link TestResultProjectAction}. * *

Persistence

*

* Actions are often persisted as a part of {@link Actionable} * (for example with {@link Build}) via XStream. In some other cases, * {@link Action}s are transient and not persisted (such as * when it's used with {@link Job}). * * @author Kohsuke Kawaguchi */ public interface Action extends ModelObject { /** * Gets the file name of the icon. * * @return * If just a file name (like "abc.png") is returned, it will be * interpreted as a file name inside /images/24x24. * This is useful for using one of the stock images. *

* If an absolute file name that starts from '/' is returned (like * "/plugin/foo/abc.png'), then it will be interpreted as a path * from the context root of Hudson. This is useful to pick up * image files from a plugin. *

* Finally, return null to hide it from the task list. This is normally not very useful, * but this can be used for actions that only contribute floatBox.jelly * and no task list item. The other case where this is useful is * to avoid showing links that require a privilege when the user is anonymous. * @see Hudson#isAdmin() */ String getIconFileName(); /** * Gets the string to be displayed. * * The convention is to capitalize the first letter of each word, * such as "Test Result". */ String getDisplayName(); /** * Gets the URL path name. * *

* For example, if this method returns "xyz", and if the parent object * (that this action is associated with) is bound to /foo/bar/zot, * then this action object will be exposed to /foo/bar/zot/xyz. * *

* This method should return a string that's unique among other {@link Action}s. * *

* The returned string can be an absolute URL, like "http://www.sun.com/", * which is useful for directly connecting to external systems. * *

* If the returned string starts with '/', like '/foo', then it's assumed to be * relative to the context path of the Hudson webapp. * * @return * null if this action object doesn't need to be bound to web * (when you do that, be sure to also return null from {@link #getIconFileName()}. */ String getUrlName(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy