Reference.java
01 package org.qedeq.kernel.bo.module;
02 
03 
04 /**
05  * Reference to another QEDEQ module, a node, a part of a node formula, a formal proof line.
06  *
07  @author  Michael Meyling
08  */
09 public interface Reference {
10 
11     /**
12      * Does the the reference point to another QEDEQ module?
13      *
14      @return  The reference goes to another module.
15      */
16     public boolean isExternal();
17 
18     /**
19      * Does the the reference point to another QEDEQ module but not to a node?
20      *
21      @return  The reference goes directly to to another module.
22      */
23     public boolean isExternalModuleReference();
24 
25     /**
26      * Get label for QEDEQ module the reference points to.
27      *
28      @return  QEDEQ module label.
29      */
30     public String getExternalQedeqLabel();
31 
32     /**
33      * Get external QEDEQ module the reference points to.
34      *
35      @return  QEDEQ module.
36      */
37     public KernelQedeqBo getExternalQedeq();
38 
39     /**
40      * Does the the reference point to a node? It might also be a sub reference to
41      * a node like a part of a proposition or a formal proof line.
42      *
43      @return  The reference goes to a node or to a label within a node.
44      */
45     public boolean isNodeReference();
46 
47     /**
48      * Label of the node the reference points to.
49      *
50      @return  Node label the reference points to.
51      */
52     public String getNodeLabel();
53 
54     /**
55      * Node the reference points to. Might be in an external QEDEQ module. The reference might
56      * also have a sub reference or proof line reference.
57      *
58      @return  Node the reference points to.
59      */
60     public KernelNodeBo getNode();
61 
62     /**
63      * Does the the reference point to the same node?
64      *
65      @return  The reference is in the same node as the label.
66      */
67     public boolean isNodeLocalReference();
68 
69     /**
70      * Does the the reference point to a sub reference of a node? This is a part of a node formula.
71      * If this is true it can not have a proof line reference.
72      *
73      @return  The reference goes to a part of a node formula.
74      */
75     public boolean isSubReference();
76 
77     /**
78      * Sub node label the reference points to.
79      *
80      @return  Sub node label the reference points to.
81      */
82     public String getSubLabel();
83 
84     /**
85      * Does the the reference point to a proof line of a node? If this is true
86      * it can not have a node sub reference.
87      *
88      @return  The reference goes to a proof line.
89      */
90     public boolean isProofLineReference();
91 
92     /**
93      * Proof line label of a node the reference points to.
94      *
95      @return  Proof line label the reference points to.
96      */
97     public String getProofLineLabel();
98 
99 }