/************************************************************** * * 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 _BASTYPE2_HXX #define _BASTYPE2_HXX #include "doceventnotifier.hxx" #include #include "tools/solar.h" #define _SVICNVW_HXX #include #include #include #include #include "basobj.hxx" enum BasicEntryType { OBJ_TYPE_UNKNOWN, OBJ_TYPE_DOCUMENT, OBJ_TYPE_LIBRARY, OBJ_TYPE_MODULE, OBJ_TYPE_DIALOG, OBJ_TYPE_METHOD, OBJ_TYPE_DOCUMENT_OBJECTS, OBJ_TYPE_USERFORMS, OBJ_TYPE_NORMAL_MODULES, OBJ_TYPE_CLASS_MODULES }; #define BROWSEMODE_MODULES 0x01 #define BROWSEMODE_SUBS 0x02 #define BROWSEMODE_DIALOGS 0x04 class SbMethod; class SbxObject; class SbModule; class SvLBoxEntry; class SbxVariable; class String; class BasicEntry { private: BasicEntryType m_eType; public: BasicEntry( BasicEntryType eType ) { m_eType = eType; } BasicEntry( const BasicEntry& r ) { m_eType = r.m_eType; } virtual ~BasicEntry(); BasicEntryType GetType() const { return m_eType; } }; class BasicDocumentEntry : public BasicEntry { private: ScriptDocument m_aDocument; LibraryLocation m_eLocation; public: BasicDocumentEntry( const ScriptDocument& rDocument, LibraryLocation eLocation, BasicEntryType eType = OBJ_TYPE_DOCUMENT ); virtual ~BasicDocumentEntry(); const ScriptDocument& GetDocument() const { return m_aDocument; } LibraryLocation GetLocation() const { return m_eLocation; } }; class BasicLibEntry : public BasicDocumentEntry { private: String m_aLibName; public: BasicLibEntry( const ScriptDocument& rDocument, LibraryLocation eLocation, const String& rLibName, BasicEntryType eType = OBJ_TYPE_LIBRARY ); virtual ~BasicLibEntry(); const String& GetLibName() const { return m_aLibName; } }; class BasicEntryDescriptor { ScriptDocument m_aDocument; LibraryLocation m_eLocation; String m_aLibName; String m_aLibSubName; // for vba entry: Document Objects, Class Modules, Forms and Normal Modules String m_aName; String m_aMethodName; BasicEntryType m_eType; public: BasicEntryDescriptor(); BasicEntryDescriptor( const ScriptDocument& rDocument, LibraryLocation eLocation, const String& rLibName, const String& rLibSubName, const String& rName, BasicEntryType eType ); BasicEntryDescriptor( const ScriptDocument& rDocument, LibraryLocation eLocation, const String& rLibName, const String& rLibSubName, const String& rName, const String& rMethodName, BasicEntryType eType ); virtual ~BasicEntryDescriptor(); BasicEntryDescriptor( const BasicEntryDescriptor& rDesc ); BasicEntryDescriptor& operator=( const BasicEntryDescriptor& rDesc ); bool operator==( const BasicEntryDescriptor& rDesc ) const; const ScriptDocument& GetDocument() const { return m_aDocument; } void SetDocument( const ScriptDocument& rDocument ) { m_aDocument = rDocument; } LibraryLocation GetLocation() const { return m_eLocation; } void SetLocation( LibraryLocation eLocation ) { m_eLocation = eLocation; } const String& GetLibName() const { return m_aLibName; } void SetLibName( const String& aLibName ) { m_aLibName = aLibName; } const String& GetLibSubName() const { return m_aLibSubName; } void SetLibSubName( const String& aLibSubName ) { m_aLibSubName = aLibSubName; } const String& GetName() const { return m_aName; } void SetName( const String& aName ) { m_aName = aName; } const String& GetMethodName() const { return m_aMethodName; } void SetMethodName( const String& aMethodName ) { m_aMethodName = aMethodName; } BasicEntryType GetType() const { return m_eType; } void SetType( BasicEntryType eType ) { m_eType = eType; } }; /**************************************** Zuordnung von Typen und Pointern in BasicEntrys: OBJ_TYPE_DOCUMENT BasicDocumentEntry OBJ_TYPE_LIBRARY BasicEntry OBJ_TYPE_MODULE BasicEntry OBJ_TYPE_DIALOG BasicEntry OBJ_TYPE_METHOD BasicEntry ******************************************/ class BasicTreeListBox :public SvTreeListBox ,public ::basctl::DocumentEventListener { private: sal_uInt16 nMode; ::basctl::DocumentEventNotifier m_aNotifier; void SetEntryBitmaps( SvLBoxEntry * pEntry, const Image& rImage, const Image& rImageHC ); protected: virtual void RequestingChilds( SvLBoxEntry* pParent ); virtual void ExpandedHdl(); virtual SvLBoxEntry* CloneEntry( SvLBoxEntry* pSource ); virtual long ExpandingHdl(); void ImpCreateLibEntries( SvLBoxEntry* pShellRootEntry, const ScriptDocument& rDocument, LibraryLocation eLocation ); void ImpCreateLibSubEntries( SvLBoxEntry* pLibRootEntry, const ScriptDocument& rDocument, const String& rLibName ); void ImpCreateLibSubEntriesInVBAMode( SvLBoxEntry* pLibRootEntry, const ScriptDocument& rDocument, const String& rLibName ); void ImpCreateLibSubSubEntriesInVBAMode( SvLBoxEntry* pLibSubRootEntry, const ScriptDocument& rDocument, const String& rLibName ); SvLBoxEntry* ImpFindEntry( SvLBoxEntry* pParent, const String& rText ); // DocumentEventListener virtual void onDocumentCreated( const ScriptDocument& _rDocument ); virtual void onDocumentOpened( const ScriptDocument& _rDocument ); virtual void onDocumentSave( const ScriptDocument& _rDocument ); virtual void onDocumentSaveDone( const ScriptDocument& _rDocument ); virtual void onDocumentSaveAs( const ScriptDocument& _rDocument ); virtual void onDocumentSaveAsDone( const ScriptDocument& _rDocument ); virtual void onDocumentClosed( const ScriptDocument& _rDocument ); virtual void onDocumentTitleChanged( const ScriptDocument& _rDocument ); virtual void onDocumentModeChanged( const ScriptDocument& _rDocument ); public: BasicTreeListBox( Window* pParent, const ResId& rRes ); ~BasicTreeListBox(); void ScanEntry( const ScriptDocument& rDocument, LibraryLocation eLocation ); void ScanAllEntries(); void UpdateEntries(); sal_Bool IsEntryProtected( SvLBoxEntry* pEntry ); void SetMode( sal_uInt16 nM ) { nMode = nM; } sal_uInt16 GetMode() const { return nMode; } SbModule* FindModule( SvLBoxEntry* pEntry ); SbxVariable* FindVariable( SvLBoxEntry* pEntry ); SvLBoxEntry* FindRootEntry( const ScriptDocument& rDocument, LibraryLocation eLocation ); SvLBoxEntry* FindEntry( SvLBoxEntry* pParent, const String& rText, BasicEntryType eType ); BasicEntryDescriptor GetEntryDescriptor( SvLBoxEntry* pEntry ); sal_uInt16 ConvertType( BasicEntryType eType ); bool IsValidEntry( SvLBoxEntry* pEntry ); SvLBoxEntry* AddEntry( const String& rText, const Image& rImage, const Image& rImageHC, SvLBoxEntry* pParent, bool bChildrenOnDemand, std::auto_ptr< BasicEntry > aUserData ); String GetRootEntryName( const ScriptDocument& rDocument, LibraryLocation eLocation ) const; void GetRootEntryBitmaps( const ScriptDocument& rDocument, Image& rImage, Image& rImageHC ); void SetCurrentEntry( BasicEntryDescriptor& rDesc ); private: LibraryType GetLibraryType() const; }; #endif // _BASTYPE2_HXX