Note: This is an HTML facsimile of the actual Java code. To see the code itself in its most current version, you can look at VisualRunService.java in the directory \Hyperwire\Classes\kinetix\hyperc1\runtime\.

package kinetix.hyperc1.runtime;

/********************************************************************************\
**                                                                              **
**  (C) Copyright 1997 by Autodesk, Inc.                                        **
**                                                                              **
**  This program is copyrighted by Autodesk, Inc. and is licensed to you under  **
**  the following conditions.  You may not distribute or publish the source     **
**  code of this program in any form.  You may incorporate this code in object  **
**  form in derivative works provided such derivative works are (i.) are de-    **
**  signed and intended to work solely with Autodesk, Inc. products, and (ii.)  **
**  contain Autodesk's copyright notice "(C) Copyright 1997 by Autodesk, Inc."  **
**                                                                              **
**  AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.  AUTODESK SPE-  **
**  CIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR  **
**  A PARTICULAR USE.  AUTODESK, INC.  DOES NOT WARRANT THAT THE OPERATION OF   **
**  THE PROGRAM WILL BE UNINTERRUPTED OR ERROR FREE.                            **
**                                                                              **
\********************************************************************************/

import java.awt.Event;
import java.awt.Rectangle;
import java.awt.Point;
import java.awt.Graphics;
import java.awt.image.ImageObserver;

/** System service interface for all visual plug-ins.
* This provides general utility methods, and queries
* for properties maintained internally by the system
* for all visual plug-ins
*/
public interface VisualRunService extends BasicRunService
{
	/** siGenerateMouseDownEvent **
	* Fire the wires connected to the Button Down port
	* for this plug-in instance 
	*/
	public void siGenerateMouseDownEvent(Event evt, int x, int y)
		throws HwException;

	/** siGenerateClickedEvent **
	* Fire the wires connected to the Button Up port
	* for this plug-in instance
	*/
	public void siGenerateClickedEvent(Event evt, int x, int y)
		throws HwException;

	/** siGetAbsRect **
	* Returns the bounding rectangle for the plug-in relative
	* only to the surrounding applet, not to any intermediary
	* visual containers
	*/
	public Rectangle siGetAbsRect();

	/** siGetImageObserver **
	* Returns the implementer of this interface, cast to an
	* ImageObserver. This is primarily for plug-ins which must
	* handle asynchronous image loading and don't wan't to write
	* an imageUpdate callback method
	*/
	public ImageObserver siGetImageObserver();

	/** siGetIsClickable **
	* Returns true if the plug-in instance is currently clickable, 
	* false otherwise
	*/
	public boolean siGetIsClickable();

	/** siGetLastPosition **
	* Returns the previous position of the plug-in
	*/
	public Point siGetLastPosition();

	/** siGetPosition **
	* Returns the current position of the plug-in
	*/
	public Point siGetPosition();

	/** siGetRelativeRect **
	* Returns the bounding rectangle of the plug-in relative to
	* its immediate parent
	*/
	public Rectangle siGetRelativeRect();

	/** siGetScreenRect **
	* Returns the bounding rectangle of the plug-in relative only
	* to the entire screen
	*/
	public Rectangle siGetScreenRect();

	/** siGetIsSelectable **
	* Returns true if the plug-in instance is currently selectable
	* false otherwise
	*/
	public boolean siGetIsSelectable();

	/** siGetIsVisible **
	* Returns the current effective visibility of the plug-in. The
	* effective visibility is the logical AND of the plug-in's
	* requested visibility and the visibility of the hierarchy
	* above the plug-in
	*/
	public boolean siGetIsVisible();

	/** siGetIsMoveable **
	* Returns true if the plug-in is currently moveable, false otherwise
	*/
	public boolean siGetIsMoveable();

	/** siPaintRect **
	* Paints the portion of the applet specified by aRect (coordinates
	* are relative only to the applet, not any intermediate visual
	* containers). If aRect == null, the bounding rectangle of the 
	* plug-in is painted. 
	*/ 
	public void siPaintRect(Rectangle aRect);
	public void siPaintRect();

	/** siSetAbsRect **
	* Sets the new bounding rectangle for the plug-in relative only to
	* the applet
	*/
	public void siSetAbsRect(Rectangle aRect);

	/** siSetIsClickable **
	* Sets the current clickable state of the plug-in
	*/
	public void siSetIsClickable(boolean aValue);

	/** siSetPosition **
	* Sets the current position of the plug-in
	*/
	public void siSetPosition(Point aPos)
		throws HwException;

	/** siSetIsSelectable **
	* Sets the current selectable state of the plug-in
	*/
	public void siSetIsSelectable(boolean aValue);

	/** siSetIsVisible **
	* Sets the current requested visible state of the plug-in. If the plug-in 
	* is a visual container this may change the effective visibility
	* of its children
	*/
	public void siSetIsVisible(boolean aValue);
}