/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef SV_PROPERTY_HXX #define SV_PROPERTY_HXX #ifndef _VIRDEV_HXX //autogen #include #endif #ifndef SV_FIXED_HXX #include #endif #ifndef SV_LSTBOX_HXX #include #endif #ifndef SV_GROUP_HXX #include #endif #ifndef SV_BUTTON_HXX #include #endif #ifndef SV_MOREBTN_HXX #include #endif #ifndef _DIALOG_HXX //autogen #include #endif #include #include #include #define _SVSTDARR_USHORTS #include #include #include #include #ifndef _SVSTDARR_STRINGS #define _SVSTDARR_STRINGS #include #endif #include #include //------------------------------------------------------------------------ //======================================================================== enum eKindOfControl { KOC_UNDEFINED=0,KOC_LISTBOX=1, KOC_COMBOBOX=2, KOC_EDIT=3,KOC_USERDEFINED=5}; class SvXPropertyCtrListener; class SvXPropertyControl : public Control { public: SvXPropertyControl( Window* pParent, WinBits nWinStyle = 0 ); SvXPropertyControl( Window* pParent, const ResId& rResId ); virtual void SetSvXPropertyCtrListener(SvXPropertyCtrListener*)=0; virtual SvXPropertyCtrListener* GetSvXPropertyCtrListener()=0; virtual void SetProperty(const String &rString)=0; virtual String GetProperty()const=0; virtual sal_Bool HasList()=0; virtual void ClearList()=0; virtual void InsertEntry( const String& rString, sal_uInt16 nPos = LISTBOX_APPEND )=0; virtual void SetCtrSize(const Size& rSize)=0; virtual void SetLocked(sal_Bool bLocked=sal_True)=0; virtual void SetMyName(const String &rString)=0; virtual String GetMyName()const=0; virtual void SetMyData(void*)=0; virtual void* GetMyData()=0; }; class SvXPropertyCtrListener { public: virtual void Modified (SvXPropertyControl *pSvXPCtr)=0; virtual void GetFocus (SvXPropertyControl *pSvXPCtr)=0; virtual void LoseFocus(SvXPropertyControl *pSvXPCtr)=0; virtual void KeyInput (SvXPropertyControl *pSvXPCtr ,const KeyCode&)=0; }; class SvXPropertyEdit : public SvXPropertyControl { private: String aName; SvXPropertyCtrListener* pListener; Edit aEdit; void* pData; DECL_LINK(ModifiedHdl,Edit*); DECL_LINK(GetFocusHdl,Edit*); DECL_LINK(LoseFocusHdl,Edit*); public: SvXPropertyEdit( Window* pParent, WinBits nWinStyle = 0 ); SvXPropertyEdit( Window* pParent, const ResId& rResId ); virtual void SetSvXPropertyCtrListener(SvXPropertyCtrListener*); virtual SvXPropertyCtrListener* GetSvXPropertyCtrListener(); virtual void SetProperty(const String &rString); virtual String GetProperty()const; virtual sal_Bool HasList(); virtual void ClearList(); virtual void InsertEntry( const String& rString, sal_uInt16 nPos = LISTBOX_APPEND ); virtual void SetCtrSize(const Size& rSize); virtual void SetLocked(sal_Bool bLocked=sal_True); virtual void SetMyName(const String &rString); virtual String GetMyName()const; virtual void SetMyData(void*); virtual void* GetMyData(); }; class SvXPropertyListBox : public SvXPropertyControl { private: String aName; SvXPropertyCtrListener* pListener; ListBox aListBox; void* pData; DECL_LINK(ModifiedHdl,ListBox*); DECL_LINK(GetFocusHdl,ListBox*); DECL_LINK(LoseFocusHdl,ListBox*); public: SvXPropertyListBox( Window* pParent, WinBits nWinStyle = 0 ); SvXPropertyListBox( Window* pParent, const ResId& rResId ); virtual void SetSvXPropertyCtrListener(SvXPropertyCtrListener*); virtual SvXPropertyCtrListener* GetSvXPropertyCtrListener(); ListBox* GetListBox(); virtual void SetProperty(const String &rString); virtual String GetProperty()const; virtual sal_Bool HasList(); virtual void ClearList(); virtual void InsertEntry( const String& rString, sal_uInt16 nPos = LISTBOX_APPEND ); virtual void SetCtrSize(const Size& rSize); virtual void SetLocked(sal_Bool bLocked=sal_True); virtual void SetMyName(const String &rString); virtual String GetMyName()const; virtual void SetMyData(void*); virtual void* GetMyData(); }; class SvXPropertyComboBox : public SvXPropertyControl { private: String aName; SvXPropertyCtrListener* pListener; ComboBox aComboBox; void* pData; DECL_LINK(ModifiedHdl,ComboBox*); DECL_LINK(GetFocusHdl,ComboBox*); DECL_LINK(LoseFocusHdl,ComboBox*); public: SvXPropertyComboBox( Window* pParent, WinBits nWinStyle = 0 ); SvXPropertyComboBox( Window* pParent, const ResId& rResId ); virtual void SetSvXPropertyCtrListener(SvXPropertyCtrListener*); virtual SvXPropertyCtrListener* GetSvXPropertyCtrListener(); ComboBox* GetComboBox(); virtual void SetProperty(const String &rString); virtual String GetProperty()const; virtual sal_Bool HasList(); virtual void ClearList(); virtual void InsertEntry( const String& rString, sal_uInt16 nPos = LISTBOX_APPEND ); virtual void SetCtrSize(const Size& rSize); virtual void SetLocked(sal_Bool bLocked=sal_True); virtual void SetMyName(const String &rString); virtual String GetMyName()const; virtual void SetMyData(void*); virtual void* GetMyData(); }; class SvPropertyLine : public Control { private: FixedText aName; sal_uInt16 nNameWidth; sal_Bool bNeedsRepaint; SvXPropertyControl* pSvXPropertyControl; PushButton aXButton; sal_Bool bIsLocked; sal_Bool bHasXButton; sal_Bool bIsHyperlink; eKindOfControl eKindOfCtr; protected: virtual void Resize(); public: SvPropertyLine( Window* pParent, WinBits nWinStyle = 0 ); SvPropertyLine( Window* pParent, const ResId& rResId ); sal_Bool NeedsRepaint(); void SetNeedsRepaint(sal_Bool bFlag); void SetSvXPropertyControl(SvXPropertyControl*); SvXPropertyControl* GetSvXPropertyControl(); void SetKindOfControl(eKindOfControl); eKindOfControl GetKindOfControl(); void SetName(const String& rString ); String GetName() const; void SetNameWidth(sal_uInt16); void ShowXButton(); void HideXButton(); sal_Bool IsVisibleXButton(); void ShowAsHyperLink(sal_Bool nFlag=sal_True); sal_Bool IsShownAsHyperlink(); void Locked(sal_Bool nFlag=sal_True); sal_Bool IsLineLocked(); void SetClickHdl(const Link&); }; class SvPropertyData { public: eKindOfControl eKind; String aName; String aValue; SvStrings theValues; // ??? sal_Bool bHasVisibleXButton; sal_Bool bIsHyperLink; sal_Bool bIsLocked; void* pDataPtr; SvXPropertyControl* pControl; }; class SvPropertyDataObjectControl { }; class SvPropertyDataControl { public: virtual void Modified( const String& aName, const String& aVal, void* pData)=0; virtual void Clicked( const String& aName, const String& aVal, void* pData)=0; virtual void Commit( const String& aName, const String& aVal, void* pData)=0; virtual void Select( const String& aName, void* pData)=0; virtual void LinkClicked(const String& aName, void* pData)=0; }; class SvXPropEvListener: public SvXPropertyCtrListener { Link aModifyLink; Link aGetFocusLink; Link aLoseFocusLink; Link aKeyInputLink; String aModifiedResult; SvXPropertyControl * pTheActiveControl; KeyCode aKeyCode; public: SvXPropEvListener(); virtual ~SvXPropEvListener(); virtual void Modified (SvXPropertyControl *pSvXPCtr); virtual void GetFocus (SvXPropertyControl *pSvXPCtr); virtual void LoseFocus(SvXPropertyControl *pSvXPCtr); virtual void KeyInput(SvXPropertyControl *pSvXPCtr ,const KeyCode&); SvXPropertyControl * GetPropertyControl(); KeyCode GetKeyCode() const; void SetModifyHdl( const Link& rLink ) { aModifyLink = rLink; } const Link& GetModifyHdl() const { return aModifyLink; } void SetGetFocusHdl( const Link& rLink ) { aGetFocusLink = rLink; } const Link& GetGetFocusHdl() const { return aGetFocusLink; } void SetLoseFocusHdl( const Link& rLink ) { aLoseFocusLink = rLink; } const Link& GetLoseFocusHdl() const { return aLoseFocusLink; } void SetKeyInputHdl( const Link& rLink ) { aKeyInputLink = rLink; } const Link& GetKeyInputHdl() const { return aKeyInputLink; } }; typedef SvPropertyLine * SvPropertyLinePtr; SV_DECL_PTRARR(SvPropLineArray,SvPropertyLinePtr,1,1) class SvListBoxForProperties: public Control { private: SvXPropEvListener aListener; Window aPlayGround; ScrollBar aVScroll; SvPropLineArray PLineArray; SvPropertyDataControl* pPropDataControl; sal_uInt16 nRowHeight; sal_Bool bUpdate; sal_uInt16 nTheNameSize; long nYOffset; DECL_LINK( ScrollHdl,ScrollBar*); DECL_LINK( ClickHdl ,PushButton*); DECL_LINK( ModifyHdl,SvXPropEvListener*); DECL_LINK( GetFocusHdl,SvXPropEvListener*); DECL_LINK(LoseFocusHdl,SvXPropEvListener*); DECL_LINK( KeyInputHdl,SvXPropEvListener*); protected: void UpdateAll(); void UpdatePosNSize(); void UpdatePlayGround(); void UpdateVScroll(); void Resize(); public: SvListBoxForProperties( Window* pParent, WinBits nWinStyle = 0 ); SvListBoxForProperties( Window* pParent, const ResId& rResId ); ~SvListBoxForProperties(); virtual sal_uInt16 CalcVisibleLines(); virtual void EnableUpdate(); virtual void DisableUpdate(); virtual void SetController(SvPropertyDataControl *); virtual void Clear(); virtual sal_uInt16 InsertEntry( const SvPropertyData&, sal_uInt16 nPos = LISTBOX_APPEND ); virtual void ChangeEntry( const SvPropertyData&, sal_uInt16 nPos); virtual sal_uInt16 AppendEntry( const SvPropertyData&); virtual void SetPropertyValue( const String & rEntryName, const String & rValue ); virtual void SetFirstVisibleEntry(sal_uInt16 nPos); virtual sal_uInt16 GetFirstVisibleEntry(); virtual void SetSelectedEntry(sal_uInt16 nPos); virtual sal_uInt16 GetSelectedEntry(); }; class SvTabPageForProperties: public TabPage { private: SvListBoxForProperties aLbProp; protected: virtual void Resize(); public: SvTabPageForProperties(Window* pParent,WinBits nWinStyle = 0 ); SvListBoxForProperties* GetTheListBox(); }; class SvBasicPropertyDataControl: public SvPropertyDataControl { private: sal_Bool bCorrectness; String aEntryName; String aEntryProperty; String aCorrectProperty; void* pTheData; Link aModifyLink; Link aClickedLink; Link aCommitLink; Link aSelectLink; public: virtual ~SvBasicPropertyDataControl(); virtual void Modified( const String& aName, const String& aVal, void* pData); //User has modified Property virtual void Clicked( const String& aName, const String& aVal, void* pData); //Xtension-Button pressed virtual void Commit( const String& aName, const String& aVal, void* pData); //User accept changes virtual void Select( const String& aName, void* pData); //User select new Row virtual void LinkClicked(const String& aName, void* pData); virtual void SetIsCorrect(sal_Bool nFlag); //virtual String GetTheCorrectProperty()const; virtual void SetTheCorrectProperty(const String& aName); String GetName() const; //Tell's the name of the Property String GetProperty() const; //Tell's the content of the Property void* GetData(); //Tell's the storage void SetModifyHdl( const Link& rLink ) { aModifyLink = rLink; } const Link& GetModifyHdl() const { return aModifyLink; } void SetClickedHdl( const Link& rLink ) { aClickedLink = rLink; } const Link& GetClickedHdl() const { return aClickedLink; } void SetCommitHdl( const Link& rLink ) { aCommitLink = rLink; } const Link& GetCommitHdl() const { return aCommitLink; } void SetSelectHdl( const Link& rLink ) { aSelectLink = rLink; } const Link& GetSelectHdl() const { return aSelectLink; } }; class SvPropertyBox: public Control { private: SvPropertyDataControl* pThePropDataCtr; TabControl aTabControl; protected: virtual void Resize(); public: SvPropertyBox ( Window* pParent, WinBits nWinStyle = 0 ); SvPropertyBox ( Window* pParent, const ResId& rResId ); ~SvPropertyBox(); virtual sal_uInt16 CalcVisibleLines(); virtual void EnableUpdate(); // auch IDL? virtual void DisableUpdate(); // auch IDL? // AB: Hier beginnt das 'offizielle' Interface, das in IDL uebernommen werden soll virtual void SetController(SvPropertyDataControl *); virtual sal_uInt16 AppendPage( const String & r ); virtual void SetPage( sal_uInt16 ); virtual sal_uInt16 GetCurPage(); virtual void ClearAll(); virtual void ClearTable(); virtual void SetPropertyValue( const String & rEntryName, const String & rValue ); virtual sal_uInt16 InsertEntry( const SvPropertyData&, sal_uInt16 nPos = LISTBOX_APPEND ); virtual void ChangeEntry( const SvPropertyData&, sal_uInt16 nPos); virtual sal_uInt16 AppendEntry( const SvPropertyData&); virtual void SetFirstVisibleEntry(sal_uInt16 nPos); virtual sal_uInt16 GetFirstVisibleEntry(); virtual void SetSelectedEntry(sal_uInt16 nPos); virtual sal_uInt16 GetSelectedEntry(); }; /* class ScPropertyDlg : public ModalDialog { private: SvBasicPropertyDataControl aBaProDatCtr; OKButton anOk; CancelButton aCancel; sal_uInt16 nCount; sal_uInt16 nClickCount; SvPropertyData aProperty; SvPropertyBox aPropListBox; ListBox aKindOfListBox; FixedText aModAnswer; FixedText aClickAnswer; FixedText aCommitAnswer; FixedText aSelectAnswer; DECL_LINK( ModifiedHdl, ListBox*); DECL_LINK( RowModifiedHdl, SvBasicPropertyDataControl*); DECL_LINK( ClickHdl , SvBasicPropertyDataControl*); DECL_LINK( SelectHdl , SvBasicPropertyDataControl*); DECL_LINK( CommitHdl , SvBasicPropertyDataControl*); public: ScPropertyDlg( Window* pParent); ~ScPropertyDlg(); }; */ #endif // SC_AUTOFMT_HXX