00001 /* 00002 * The information in this file is 00003 * Copyright(c) 2007 Ball Aerospace & Technologies Corporation 00004 * and is subject to the terms and conditions of the 00005 * GNU Lesser General Public License Version 2.1 00006 * The license text is available from 00007 * http://www.gnu.org/licenses/lgpl.html 00008 */ 00009 00010 #ifndef WORKSPACEWINDOW_H 00011 #define WORKSPACEWINDOW_H 00012 00013 #include "ViewWindow.h" 00014 #include "ConfigurationSettings.h" 00015 00016 class View; 00017 00018 /** 00019 * Settings, characteristics, and features for windows displayed in the workspace area 00020 * of the main application window. 00021 * 00022 * Workspace windows are windows that are restricted to the workspace area of the main 00023 * application window. The workspace window is the primary tool for displaying data. 00024 * A workspace window can float in the workspace area or be maximized or minimized in 00025 * the workspace. For each workspace window, a smaller overview window can also be 00026 * displayed providing a thumbnail display of the entire view contents. 00027 * 00028 * This subclass of Subject will notify upon the following conditions: 00029 * - Everything documented in ViewWindow. 00030 * 00031 * @see ViewWindow 00032 */ 00033 class WorkspaceWindow : public ViewWindow 00034 { 00035 public: 00036 SETTING(WindowHeight, WorkspaceWindow, unsigned int, 300) 00037 SETTING(WindowSize, WorkspaceWindow, WindowSizeType, MAXIMIZED) 00038 SETTING(WindowWidth, WorkspaceWindow, unsigned int, 450) 00039 SETTING(WindowPercentage, WorkspaceWindow, unsigned int, 40) 00040 SETTING(ConfirmClose, WorkspaceWindow, bool, true) 00041 00042 /** 00043 * Minimizes the window in the workspace. 00044 * 00045 * Hides the display area of the window, leaving only the title bar showing. 00046 * The title bar is then moved to the bottom of the workspace area. 00047 */ 00048 virtual void minimize() = 0; 00049 00050 /** 00051 * Maximizes the window in the workspace. 00052 * 00053 * Increases the size of the window to the maximum display area within the 00054 * workspace. Once maximized in the workspace, the window name is added 00055 * to the application title bar in brackets []. 00056 */ 00057 virtual void maximize() = 0; 00058 00059 /** 00060 * Maximizes the window over the entire screen area. 00061 * 00062 * This method increases the size of the window to cover the entire area of 00063 * the screen. All other windows and toolbars for all applications are 00064 * hidden. 00065 */ 00066 virtual void fullScreen() = 0; 00067 00068 /** 00069 * Returns the window to its normal display size in the workspace. 00070 * 00071 * This method restores a minimized, maximized, or full screen window to a 00072 * floating state within the workspace area. The size of the window returns 00073 * to its previous size before it was minimized or maximized. 00074 */ 00075 virtual void restore() = 0; 00076 00077 /** 00078 * Returns the active view in the window. 00079 * 00080 * @return A pointer to the active View in the window. If the window is a 00081 * SpatialDataWindow, a SpatialDataView is returned. If the 00082 * window is a ProductWindow, a ProductView is returned if the 00083 * product view does not have an active edit view. Otherwise, the 00084 * active edit view in the product view is returned. \b NULL is 00085 * returned if the window does not contain an active View. 00086 * 00087 * @see ProductView::getActiveEditView() 00088 */ 00089 virtual View* getActiveView() const = 0; 00090 00091 protected: 00092 /** 00093 * This should be destroyed by calling DesktopServices::deleteWindow. 00094 */ 00095 virtual ~WorkspaceWindow() {} 00096 }; 00097 00098 #endif