1/* 2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef SUB_WINDOW_H 6#define SUB_WINDOW_H 7 8#include <Window.h> 9 10#include <util/OpenHashTable.h> 11 12 13class SubWindowManager; 14 15 16class SubWindowKey { 17public: 18 virtual ~SubWindowKey(); 19 20 virtual bool Equals(const SubWindowKey* other) const = 0; 21 virtual size_t HashCode() const = 0; 22}; 23 24 25class ObjectSubWindowKey : public SubWindowKey { 26public: 27 ObjectSubWindowKey(void* object); 28 29 virtual bool Equals(const SubWindowKey* other) const; 30 virtual size_t HashCode() const; 31 32private: 33 void* fObject; 34}; 35 36 37class SubWindow : public BWindow { 38public: 39 SubWindow(SubWindowManager* manager, 40 BRect frame, const char* title, 41 window_type type, uint32 flags, 42 uint32 workspace = B_CURRENT_WORKSPACE); 43 virtual ~SubWindow(); 44 45 inline SubWindowKey* GetSubWindowKey() const; 46 47 bool AddToSubWindowManager(SubWindowKey* key); 48 bool RemoveFromSubWindowManager(); 49 50protected: 51 SubWindowManager* fSubWindowManager; 52 SubWindowKey* fSubWindowKey; 53 54public: 55 SubWindow* fNext; 56}; 57 58 59SubWindowKey* 60SubWindow::GetSubWindowKey() const 61{ 62 return fSubWindowKey; 63} 64 65 66#endif // SUB_WINDOW_H 67