/* ******************************************************************************
* Copyright (c) 2006-2012 XMind Ltd. and others.
*
* This file is a part of XMind 3. XMind releases 3 and
* above are dual-licensed under the Eclipse Public License (EPL),
* which is available at http://www.eclipse.org/legal/epl-v10.html
* and the GNU Lesser General Public License (LGPL),
* which is available at http://www.gnu.org/licenses/lgpl.html
* See http://www.xmind.net/license.html for details.
*
* Contributors:
* XMind Ltd. - initial API and implementation
*******************************************************************************/
package org.xmind.core.marker;
import org.xmind.core.IAdaptable;
import org.xmind.core.IIdentifiable;
import org.xmind.core.INamed;
/**
* A marker represents meaningful information by a specific visual object, e.g.
* an image.
*
* @author Frank Shaka
*
*/
public interface IMarker extends IAdaptable, IIdentifiable, INamed {
/**
* Returns the path to this marker's resource. This path is used by the
* marker and its owner marker sheet to provide a readable (or possibly
* writable) {@link IMarkerResource} object.
*
* @return a {@link String} representing the resource path
* @see #getResource()
*/
String getResourcePath();
/**
* Returns a handle object to read or write resource content of this marker.
* The returned resource may be targeted at the path as returned by
* {@link #getResourcePath()}.
*
* @return an object to read/write resource content, or <code>null</code> if
* there's no resource available (e.g. no
* {@link IMarkerResourceProvider} available in the marker sheet)
* @see #getResourcePath()
*/
IMarkerResource getResource();
/**
* Returns the SVG path of this marker.
*
* @return an SVG path, or <code>null</code> if none
*/
public String getSVGPath();
/**
* Returns the parent group of this marker.
*
* @return the parent group, or <code>null</code> if the marker is not added
* to any group yet or has been removed from a group
*/
IMarkerGroup getParent();
/**
* Returns the marker sheet who creates and owns this marker.
*
* @return the owner marker sheet
*/
IMarkerSheet getOwnedSheet();
/**
* Tests whether this marker should be hidden from user interface.
*
* @return <code>true</code> to indicate that this marker should be hidden,
* or <code>false</code> otherwise
*/
boolean isHidden();
/**
* Sets whether this marker should be hidden from user interface.
*
* @param hidden
* <code>true</code> to indicate that this marker should be
* hidden, or <code>false</code> otherwise
*/
void setHidden(boolean hidden);
}