package de.unisiegen.tpml.graphics.outline ;
import javax.swing.JPanel ;
import de.unisiegen.tpml.core.interfaces.ExpressionOrType ;
import de.unisiegen.tpml.graphics.outline.ui.OutlineUI ;
/**
* This interface is the main interface of the <code>Outline</code>.
*
* @author Christian Fehler
* @version $Rev$
*/
public interface Outline
{
/**
* An interface for all execute enums.
*
* @author Christian Fehler
*/
public interface Execute
{
// Nothing to do here.
}
/**
* Indicates who loads the new Expression or Type.
*
* @author Christian Fehler
*/
public enum ExecuteAutoChange implements Execute
{
/**
* Auto change from the <code>Editor</code>.
*/
EDITOR ,
/**
* Auto change from the <code>SmallStep</code>.
*/
SMALLSTEP ,
/**
* Auto change from the <code>BigStep</code>.
*/
BIGSTEP ,
/**
* Auto change from the <code>TypeChecker</code>.
*/
TYPECHECKER ,
/**
* Auto change from the <code>TypeInference</code>.
*/
TYPEINFERENCE ,
/**
* Auto change from the <code>Subtyping</code>.
*/
SUBTYPING ,
/**
* Auto change from the <code>Subtyping source</code>.
*/
SUBTYPING_SOURCE ,
/**
* Auto change from the <code>MinimalTyping</code>.
*/
MINIMALTYPING
}
/**
* Indicates who loads the new Expression or Type.
*
* @author Christian Fehler
*/
public enum ExecuteInit implements Execute
{
/**
* Initialized from the <code>Editor</code>.
*/
EDITOR ,
/**
* Initialized from the <code>SmallStep</code>.
*/
SMALLSTEP ,
/**
* Initialized from the <code>BigStep</code>.
*/
BIGSTEP ,
/**
* Initialized from the <code>TypeChecker</code>.
*/
TYPECHECKER ,
/**
* Initialized from the <code>TypeInference</code>.
*/
TYPEINFERENCE ,
/**
* Initialized from the <code>Subtyping</code>.
*/
SUBTYPING ,
/**
* Initialized from the <code>Subtyping source</code>.
*/
SUBTYPING_SOURCE ,
/**
* Initialized from the <code>MinimalTyping</code>.
*/
MINIMALTYPING
}
/**
* Indicates who loads the new Expression or Type.
*
* @author Christian Fehler
*/
public enum ExecuteMouseClick implements Execute
{
/**
* Change by mouse cick from the <code>Editor</code>.
*/
EDITOR ,
/**
* Change by mouse cick from the <code>SmallStep</code>.
*/
SMALLSTEP ,
/**
* Change by mouse cick from the <code>BigStep</code>.
*/
BIGSTEP ,
/**
* Change by mouse cick from the <code>TypeChecker</code>.
*/
TYPECHECKER ,
/**
* Change by mouse cick from the <code>TypeInference</code>.
*/
TYPEINFERENCE ,
/**
* Change by mouse cick from the <code>Subtyping</code>.
*/
SUBTYPING ,
/**
* Change by mouse cick from the <code>Subtyping source</code>.
*/
SUBTYPING_SOURCE ,
/**
* Change by mouse cick from the <code>MinimalTyping</code>.
*/
MINIMALTYPING
}
/**
* Indicates if the outline is the first or the second outline.
*
* @author Christian Fehler
*/
public enum Modus
{
/**
* The outline is the first outline.
*/
FIRST ,
/**
* The outline is the second outline.
*/
SECOND
}
/**
* Returns the <code>JPanel</code> of the {@link OutlineUI}.
*
* @return The <code>JPanel</code> of the {@link OutlineUI}.
*/
public JPanel getPanel ( ) ;
/**
* This method loads a new {@link ExpressionOrType} into the {@link Outline}.
* It does nothing if the auto update is disabled and the change does not come
* from a <code>MouseEvent</code>.
*
* @param pExpressionOrType The new {@link ExpressionOrType}.
* @param pExecute The {@link Outline.Execute}.
*/
public void load ( ExpressionOrType pExpressionOrType ,
Outline.Execute pExecute ) ;
}