xref: /AOO41X/main/soldep/inc/soldep/depper.hxx (revision 53a9af0a251b18e3c3b23eacf3a4922b098ea5c4)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _FMRWRK_DEPPER_HXX
25 #define _FMRWRK_DEPPER_HXX
26 
27 #include <vcl/window.hxx>
28 #include <vcl/wrkwin.hxx>
29 #include <tools/resmgr.hxx>
30 #include <soldep/objwin.hxx>
31 #include <soldep/depwin.hxx>
32 #include <soldep/graphwin.hxx>
33 #include <soldep/tbox.hxx>
34 #include <soldep/soldlg.hrc>
35 #include <soldep/hashtbl.hxx>
36 #include <soldep/hashobj.hxx>
37 #include <soldep/soldlg.hxx>
38 #include <soldep/prj.hxx>
39 #include <soldep/sdtresid.hxx>
40 
41 DECLARE_HASHTABLE_OWNER(SolIdMapper,ByteString,MyHashObject*)
42 
43 // just for conversion - convert char* to String
44 class ProgressBar;
45 class FixedText;
46 
47 #define SOLDEPL_NAME "StarDepend V1.0"
48 
49 #define DEPPER_ID   4711
50 
51 //User Events
52 #define VCLEVENT_USER_MOUSEBUTTON_DOWN      5000
53 #define VCLEVENT_USER_MOUSEBUTTON_DOWN_ALT  5001
54 #define VCLEVENT_USER_MOUSEBUTTON_DOWN_CTRL 5002
55 #define VCLEVENT_USER_MOUSEBUTTON_UP        5003
56 #define VCLEVENT_USER_MOUSEBUTTON_UP_ALT    5004
57 #define VCLEVENT_USER_MOUSEBUTTON_UP_CTRL   5005
58 #define VCLEVENT_USER_MOUSEBUTTON_UP_SHFT   5006
59 #define VCLEVENT_USER_MOUSEBUTTON_DOWN_DBLCLICK 5007
60 #define VCLEVENT_USER_TBOX_RESIZE           5008
61 #define VCLEVENT_USER_TBOX_RESIZE_APP       5009
62 #define VCLEVENT_USER_TBOX_FIND             5010
63 #define VCLEVENT_USER_TBOX_HIDE_INDEPENDEND 5011
64 #define VCLEVENT_USER_TBOX_SELECT_WORKSPACE 5012
65 #define VCLEVENT_USER_TBOX_BACK             5013
66 
67 #define     OBJWIN_X_SPACING        50
68 #define     OBJWIN_Y_SPACING        12
69 #define     DEPPER_MAX_DEPTH        100
70 #define     DEPPER_MAX_WIDTH        12
71 #define     DEPPER_MAX_LEVEL_WIDTH      10 * DEPPER_MAX_WIDTH
72 
73 
74 #define DEP_OK                      0
75 #define DEP_OBJECT_NOT_FOUND        1
76 #define DEP_STARTID_NOT_FOUND       2
77 #define DEP_ENDID_NOT_FOUND         3
78 #define DEP_CONNECTOR_NOT_FOUND     4
79 #define DEP_ENDLES_RECURSION_FOUND  DEPPER_MAX_DEPTH + 1
80 
81 #define DEPPOPUP_NEW                                1
82 #define DEPPOPUP_AUTOARRANGE                        2
83 #define DEPPOPUP_LOAD                               3
84 #define DEPPOPUP_SAVE                               4
85 #define DEPPOPUP_WRITE_SOURCE                       5
86 #define DEPPOPUP_READ_SOURCE                        6
87 #define DEPPOPUP_OPEN_SOURCE                        7
88 #define DEPPOPUP_ZOOMIN                             8
89 #define DEPPOPUP_ZOOMOUT                            9
90 #define DEPPOPUP_CLEAR                              10
91 #define DEPPOPUP_CLOSE                              11
92 #define DEPPOPUP_HELP                               12
93 #define DEPPOPUP_SHOW_TOOLBOX                       13
94 #define DEPPOPUP_TEST                               0xff
95 
96 struct depper_head
97 {
98     sal_uIntPtr nID;
99     sal_uIntPtr nObjectCount;
100     sal_uIntPtr nCnctrCount;
101 
102 };
103 
104 enum DistType
105 {
106     BOTTOMUP = 0,
107     TOPDOWN = 1,
108     BOTH = 2
109 };
110 
111 
112 class Depper : public SolDevDll, public Window
113 {
114     sal_Bool    mbIsPrjView;
115     sal_uIntPtr mnMinDynXOffs;
116     Point   maDefPos;
117     Size    maDefSize;
118 
119     long    nZoomed;
120 
121     sal_uIntPtr mnViewMask;
122 
123     ProgressBar*    pSubBar;
124     ProgressBar*    pMainBar;
125     FixedText*      pSubText;
126     FixedText*      pMainText;
127     SolAutoarrangeDlg maArrangeDlg;
128 
129 
130 protected:
131     Prj*            mpPrj;
132     SolIdMapper*    mpSolIdMapper;
133     SolIdMapper*    mpPrjIdMapper;
134     StarWriter*     mpStarWriter;
135     StarWriter*     mpPrjStarWriter;        //for inside prj-view
136     sal_uIntPtr         mnSolWinCount;
137     sal_uIntPtr         mnSolLastId;
138     sal_uIntPtr         mnPrjWinCount;
139     sal_uIntPtr         mnPrjLastId;
140     ObjectList*         mpObjectList;           //Extended ObjWinList class
141     ObjectList*         mpObjectPrjList;        //for module internal dependencies
142     DepWin*             mpBaseWin;
143     DepWin*             mpBasePrjWin;           //for inside prj-view
144     GraphWin*           mpGraphWin;
145     GraphWin*           mpGraphPrjWin;          //for inside prj-view
146     Window*             mpProcessWin;
147     Window*             mpParentProcessWin;
148     ObjectWin*          ObjIdToPtr( ObjectList* pObjLst, sal_uIntPtr nId );
149     SoldepToolBox       maToolBox;
150     FloatingWindow      maTaskBarFrame; // For ToolBox
151 
152     sal_uIntPtr       AddObjectToList(DepWin* pParentWin, ObjectList* pObjLst, sal_uIntPtr &LastID, sal_uIntPtr &WinCount, ByteString& rBodyText, sal_Bool bInteract=sal_True );
153     sal_uIntPtr       AddObjectToList( DepWin* pParentWin, ObjectList* pObjLst, sal_uIntPtr &LastID, sal_uIntPtr &WinCount, ByteString& rBodyText, Point& rPos, Size& rSize );
154     ObjectWin*  RemoveObjectFromList( ObjectList* pObjLst, sal_uIntPtr &WinCount, sal_uInt16 nId, sal_Bool bDelete );
155     sal_uInt16      AddConnectorToObjects( ObjectList* pObjLst, sal_uIntPtr nStartId, sal_uIntPtr nEndId );
156     sal_uInt16      RemoveConnectorFromObjects( ObjectList* pObjLst, sal_uIntPtr nStartId, sal_uIntPtr nEndId );
157     sal_uInt16      AddConnectorToObjects( ObjectWin* pStartWin, ObjectWin* pEndWin );
158     sal_uInt16      RemoveConnectorFromObjects( ObjectWin* pStartWin, ObjectWin* pEndWin );
159 
160 public:
161     Depper( Window* pBaseWindow );
162     ~Depper();
163     sal_Bool                TogglePrjViewStatus();
SetPrjViewStatus(sal_Bool state)164     void                SetPrjViewStatus(sal_Bool state) { mbIsPrjView = state; }
IsPrjView()165     sal_Bool                IsPrjView() { return mbIsPrjView; }
GetGraphWin()166     GraphWin*           GetGraphWin() { return (!mbIsPrjView) ? mpGraphWin : mpGraphPrjWin; }   //scrollbar window
GetDepWin()167     DepWin*             GetDepWin() { return (!mbIsPrjView) ? mpBaseWin : mpBasePrjWin; }       //content of scrollbar window
GetMainProgressBar()168     ProgressBar*        GetMainProgressBar() { return pMainBar; }
169     void                SetMainProgressBar( sal_uInt16 i);
170     void                UpdateMainProgressBar(sal_uInt16 i, sal_uInt16 nScaleVal, sal_uInt16 &nStep, sal_Bool bCountingDown = sal_False);
171     void                UpdateSubProgrssBar(sal_uIntPtr i);
SetTitle(const String & rTitle)172     void                SetTitle( const String &rTitle ) { mpProcessWin->SetText( rTitle ); }
173     virtual void        RemoveAllObjects( ObjectList* ObjLst );
174     sal_uInt16              Save( const ByteString& rFileName );
175 //  sal_uInt16              Load( const ByteString& rFileName );
176     virtual sal_uInt16      WriteSource();
177     virtual sal_uInt16      ReadSource( sal_Bool bUpdater );
178     virtual sal_uInt16      OpenSource();
SetDefPos(Point & rPos)179     void                SetDefPos( Point& rPos ) { maDefPos = rPos; };
GetDefPos()180     Point&              GetDefPos() { return maDefPos; };
SetDefSize(Size & rSize)181     void                SetDefSize( Size& rSize ) { maDefSize = rSize; };
GetDefSize()182     Size&               GetDefSize() { return maDefSize; };
183     virtual sal_uInt16      AutoArrangeDlgStart();
184     virtual sal_uInt16      AutoArrangeDlgStop();
185     virtual sal_uInt16      Zoom( MapMode& rMapMode );
ViewContent(ByteString &)186     virtual sal_Bool        ViewContent( ByteString& ) { return sal_False; };
CloseWindow()187     virtual sal_uInt16      CloseWindow() { return 0; };
ShowHelp()188     virtual void        ShowHelp(){};
GetObjectList()189     ObjectList*         GetObjectList() { return (!mbIsPrjView) ? mpObjectList : mpObjectPrjList; }
190     sal_uIntPtr               HandleNewPrjDialog( ByteString &rBodyText );
191     sal_uIntPtr               HandleNewDirectoryDialog( ByteString &rBodyText );
192     void                HideObjectsAndConnections( ObjectList* pObjLst );
193     void                ShowObjectsAndConnections( ObjectList* pObjLst );
194     //virtual void        MouseButtonDown( const MouseEvent& rMEvt );
195 //#ifdef DEBUG
test()196     virtual void        test(){};
197     DECL_LINK( PopupSelected, PopupMenu* );
198 //#endif
199 
200     //void SetViewMask( sal_uIntPtr nMask );
GetViewMask()201     sal_uIntPtr GetViewMask() { return mnViewMask; }
202 };
203 
204 #endif
205