1 /*
2  Copyright (C) 2010-2014 Kristian Duske
3 
4  This file is part of TrenchBroom.
5 
6  TrenchBroom is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  TrenchBroom is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with TrenchBroom. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef TrenchBroom_MapViewContainer
21 #define TrenchBroom_MapViewContainer
22 
23 #include "View/MapView.h"
24 
25 #include <wx/panel.h>
26 
27 namespace TrenchBroom {
28     namespace View {
29         class MapViewBase;
30 
31         class MapViewContainer : public wxPanel, public MapView {
32         public:
33             MapViewContainer(wxWindow* parent);
34             virtual ~MapViewContainer();
35         public:
36             bool canMaximizeCurrentView() const;
37             bool currentViewMaximized() const;
38             void toggleMaximizeCurrentView();
39         protected:
40             MapView* currentMapView() const;
41         private: // implement MapView interface
42             bool doCanFlipObjects() const;
43             void doFlipObjects(Math::Direction direction);
44 
45             Vec3 doGetPasteObjectsDelta(const BBox3& bounds, const BBox3& referenceBounds) const;
46         private: // subclassing interface
47             virtual bool doCanMaximizeCurrentView() const = 0;
48             virtual bool doCurrentViewMaximized() const = 0;
49             virtual void doToggleMaximizeCurrentView() = 0;
50             virtual MapView* doGetCurrentMapView() const = 0;
51         };
52     }
53 }
54 
55 #endif /* defined(TrenchBroom_MapViewContainer) */
56