JAL-4020 class reformatting
[jalview.git] / src / ext / edu / ucsf / rbvi / strucviz2 / ChimeraStructuralObject.java
1 /* vim: set ts=2: */
2 /**
3  * Copyright (c) 2006 The Regents of the University of California.
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *   1. Redistributions of source code must retain the above copyright
10  *      notice, this list of conditions, and the following disclaimer.
11  *   2. Redistributions in binary form must reproduce the above
12  *      copyright notice, this list of conditions, and the following
13  *      disclaimer in the documentation and/or other materials provided
14  *      with the distribution.
15  *   3. Redistributions must acknowledge that this software was
16  *      originally developed by the UCSF Computer Graphics Laboratory
17  *      under support by the NIH National Center for Research Resources,
18  *      grant P41-RR01081.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY
21  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS BE LIABLE
24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
26  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
27  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
29  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  */
33 package ext.edu.ucsf.rbvi.strucviz2;
34
35 import java.util.List;
36
37 /**
38  * This interface provides a common set of methods that are implemented by the
39  * ChimeraModel, ChimeraChain, and ChimeraResidue classes.
40  * 
41  * @author scooter
42  * 
43  */
44
45 public interface ChimeraStructuralObject
46 {
47
48   /**
49    * Return the Chimera selection specification for this object
50    * 
51    * @return a String representing a Chimera atom-spec
52    */
53   public String toSpec();
54
55   /**
56    * Return a String representation for this object
57    * 
58    * @return a String representing the object name
59    */
60   public String toString();
61
62   /**
63    * Return the userData for this object
64    * 
65    * @return an Object representing the userData (usually TreePath)
66    */
67   public Object getUserData();
68
69   /**
70    * Set the userData for this object
71    * 
72    * @param userData
73    *          the Object representing the userData (usually TreePath)
74    */
75   public void setUserData(Object userData);
76
77   /**
78    * Return the ChimeraModel for this object
79    * 
80    * @return the ChimeraModel this object is part of
81    */
82   public ChimeraModel getChimeraModel();
83
84   /**
85    * Set the "selected" state of this object
86    * 
87    * @param selected
88    *          boolean value as to whether this object is selected
89    */
90   public void setSelected(boolean selected);
91
92   /**
93    * Get the "selected" state of this object
94    * 
95    * @return the selected state of this object
96    */
97   public boolean isSelected();
98
99   /**
100    * Get the selected state of this object and its children.
101    * 
102    * @return true if any child is selected.
103    */
104   public boolean hasSelectedChildren();
105
106   /**
107    * Get the children of this object (if any)
108    * 
109    * @return the children of the object
110    */
111   public List<ChimeraStructuralObject> getChildren();
112 }