00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef COIN_SONODEKITLISTPART_H
00021 #define COIN_SONODEKITLISTPART_H
00022
00023 #include <Inventor/nodes/SoSubNode.h>
00024 #include <Inventor/lists/SoTypeList.h>
00025 #include <Inventor/fields/SoSFNode.h>
00026 #include <Inventor/fields/SoSFName.h>
00027 #include <Inventor/fields/SoMFName.h>
00028
00029 class SoGroup;
00030
00031
00032 class COIN_DLL_API SoNodeKitListPart : public SoNode {
00033 typedef SoNode inherited;
00034
00035 SO_NODE_HEADER(SoNodeKitListPart);
00036
00037 public:
00038 static void initClass(void);
00039 SoNodeKitListPart(void);
00040
00041 SoType getContainerType(void) const;
00042 void setContainerType(SoType newContainerType);
00043 const SoTypeList & getChildTypes(void) const;
00044 void addChildType(SoType typeToAdd);
00045 SbBool isTypePermitted(SoType typeToCheck) const;
00046 SbBool isChildPermitted(const SoNode * child) const;
00047 void containerSet(const char * fieldDataString);
00048 void lockTypes(void);
00049 SbBool isTypeLocked(void) const;
00050 void addChild(SoNode * child);
00051 void insertChild(SoNode * child, int childIndex);
00052 SoNode * getChild(int index) const;
00053 int findChild(SoNode * child) const;
00054 int getNumChildren(void) const;
00055 void removeChild(int index);
00056 void removeChild(SoNode * child);
00057 void replaceChild(int index, SoNode * newChild);
00058 void replaceChild(SoNode * oldChild, SoNode * newChild);
00059 virtual SbBool affectsState(void) const;
00060 virtual void doAction(SoAction * action);
00061 virtual void callback(SoCallbackAction * action);
00062 virtual void GLRender(SoGLRenderAction * action);
00063 virtual void getBoundingBox(SoGetBoundingBoxAction * action);
00064 virtual void getMatrix(SoGetMatrixAction * action);
00065 virtual void handleEvent(SoHandleEventAction * action);
00066 virtual void pick(SoPickAction * action);
00067 virtual void search(SoSearchAction * action);
00068 virtual void getPrimitiveCount(SoGetPrimitiveCountAction * action);
00069 virtual SoChildList * getChildren(void) const;
00070
00071 protected:
00072 virtual ~SoNodeKitListPart();
00073
00074 SoGroup * getContainerNode(void);
00075 virtual SbBool readInstance(SoInput * in, unsigned short flags);
00076 virtual void copyContents(const SoFieldContainer * fromFC,
00077 SbBool copyConnections);
00078 SoChildList * children;
00079
00080 private:
00081 void syncInternalData(void);
00082
00083 SoSFNode containerNode;
00084 SoSFName containerTypeName;
00085 SoMFName childTypeNames;
00086
00087 SbBool typelistlocked;
00088 SoTypeList allowedtypes;
00089
00090 SbBool canCreateDefaultChild(void) const;
00091 SoNode * createAndAddDefaultChild(void);
00092 SoType getDefaultChildType(void) const;
00093
00094 friend class SoBaseKit;
00095 };
00096
00097 #endif // !COIN_SONODEKITLISTPART_H