6#include <icomp/CComponentBase.h>
7#include <imod/TModelWrap.h>
8#include <iprm/IOptionsList.h>
9#include <iprm/ISelectionParam.h>
12#include <imtbase/CSelectionAdapterBase.h>
13#include <imtbase/ICollectionInfo.h>
14#include <imtbase/ISelection.h>
21class CSelectionAdapterComp:
22 public icomp::CComponentBase,
23 public CSelectionAdapterBase,
24 virtual public ISelection
27 typedef icomp::CComponentBase BaseClass;
29 I_BEGIN_COMPONENT(CSelectionAdapterComp);
30 I_REGISTER_SUBELEMENT(Constraints);
31 I_REGISTER_SUBELEMENT_INTERFACE(Constraints, ICollectionInfo, ExtractConstraints);
32 I_REGISTER_SUBELEMENT_INTERFACE(Constraints, imod::IModel, ExtractConstraints);
33 I_REGISTER_SUBELEMENT_INTERFACE(Constraints, istd::IChangeable, ExtractConstraints);
34 I_REGISTER_INTERFACE(ISelection);
35 I_REGISTER_INTERFACE(iser::ISerializable);
36 I_ASSIGN(m_selectionCompPtr,
"SelectionParam",
"Source selection param",
false,
"");
39 CSelectionAdapterComp();
43 virtual const ICollectionInfo* GetSelectionConstraints()
const override;
44 virtual SelectionMode GetSelectionMode()
const override;
45 virtual bool SetSelectionMode(SelectionMode mode)
override;
46 virtual Ids GetSelectedIds()
const override;
47 virtual bool SetSelectedIds(
const Ids& selectedIds)
override;
50 virtual void OnConstraintsChanged()
override;
51 virtual void OnSelectionChanged()
override;
54 virtual void OnComponentCreated()
override;
55 virtual void OnComponentDestroyed()
override;
58 virtual bool Serialize(iser::IArchive& archive)
override;
61 int GetOptionIndex(
const QByteArray& optionId)
const;
62 QByteArray GetOptionId(
int index)
const;
65 class Constraints:
virtual public ICollectionInfo
69 void SetParent(CSelectionAdapterComp* parentPtr);
72 virtual int GetElementsCount(
73 const iprm::IParamsSet* selectionParamPtr =
nullptr,
74 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
75 virtual Ids GetElementIds(
78 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
79 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
80 virtual bool GetSubsetInfo(
81 ICollectionInfo& subsetInfo,
84 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
85 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
86 virtual QVariant GetElementInfo(
const Id& elementId,
int infoType, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
87 virtual idoc::MetaInfoPtr GetElementMetaInfo(
const Id& elementId, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
88 virtual bool SetElementName(
const Id& elementId,
const QString& name, ilog::IMessageConsumer* logPtr =
nullptr)
override;
89 virtual bool SetElementDescription(
const Id& elementId,
const QString& description, ilog::IMessageConsumer* logPtr =
nullptr)
override;
90 virtual bool SetElementEnabled(
const Id& elementId,
bool isEnabled =
true, ilog::IMessageConsumer* logPtr =
nullptr)
override;
93 CSelectionAdapterComp* m_parentPtr;
96 template<
class InterfaceType>
97 static InterfaceType* ExtractConstraints(CSelectionAdapterComp& component)
99 return &component.m_constraints;
103 I_REF(iprm::ISelectionParam, m_selectionCompPtr);
105 iprm::ISelectionParam* m_selectionPtr;
106 const iprm::IOptionsList* m_selectionConstraintsPtr;
108 imod::TModelWrap<Constraints> m_constraints;