xref: /AOO41X/main/svx/source/dialog/imapwnd.hxx (revision 3334a7e6acdae9820fa1a6f556bb10129a8de6b2)
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 #ifndef _IMAPWND_HXX
24 #define _IMAPWND_HXX
25 
26 #include <vcl/dialog.hxx>
27 #include <vcl/fixed.hxx>
28 #include <vcl/button.hxx>
29 #include <vcl/menu.hxx>
30 #include <svl/itempool.hxx>
31 #include <svtools/imapobj.hxx>
32 #include <svtools/transfer.hxx>
33 #include <svtools/imap.hxx>
34 #include <sfx2/frame.hxx>
35 #include <svx/graphctl.hxx>
36 
37 #include <com/sun/star/frame/XFrame.hpp>
38 
39 /*************************************************************************
40 |*
41 |*
42 |*
43 \************************************************************************/
44 
45 struct NotifyInfo
46 {
47     String  aMarkURL;
48     String  aMarkAltText;
49     String  aMarkTarget;
50     sal_Bool    bNewObj;
51     sal_Bool    bOneMarked;
52     sal_Bool    bActivated;
53 };
54 
55 
56 struct NotifyPosSize
57 {
58     Size    aPictureSize;
59     Point   aMousePos;
60     sal_Bool    bPictureSize;
61     sal_Bool    bMousePos;
62 };
63 
64 
65 /*************************************************************************
66 |*
67 |*
68 |*
69 \************************************************************************/
70 
71 #define SVD_IMAP_USERDATA   0x0001
72 
73 const sal_uInt32 IMapInventor = sal_uInt32('I') * 0x00000001+
74                             sal_uInt32('M') * 0x00000100+
75                             sal_uInt32('A') * 0x00010000+
76                             sal_uInt32('P') * 0x01000000;
77 
78 
79 typedef boost::shared_ptr< IMapObject > IMapObjectPtr;
80 
81 class IMapUserData : public SdrObjUserData
82 {
83     // #i98386# use boost::shared_ptr here due to cloning possibilities
84     IMapObjectPtr           mpObj;
85 
86 public:
87 
IMapUserData()88                             IMapUserData() :
89                                 SdrObjUserData  ( IMapInventor, SVD_IMAP_USERDATA, 0 ),
90                                 mpObj           ( ) {}
91 
IMapUserData(const IMapObjectPtr & rIMapObj)92                             IMapUserData( const IMapObjectPtr& rIMapObj ) :
93                                 SdrObjUserData  ( IMapInventor, SVD_IMAP_USERDATA, 0 ),
94                                 mpObj           ( rIMapObj ) {}
95 
IMapUserData(const IMapUserData & rIMapUserData)96                             IMapUserData( const IMapUserData& rIMapUserData ) :
97                                 SdrObjUserData  ( IMapInventor, SVD_IMAP_USERDATA, 0 ),
98                                 mpObj           ( rIMapUserData.mpObj ) {}
99 
~IMapUserData()100                             ~IMapUserData() { }
101 
Clone(SdrObject *) const102     virtual SdrObjUserData* Clone( SdrObject * ) const { return new IMapUserData( *this ); }
103 
SetObject(const IMapObjectPtr & rIMapObj)104     void                    SetObject( const IMapObjectPtr& rIMapObj ) { mpObj = rIMapObj; }
GetObject() const105     const IMapObjectPtr     GetObject() const { return mpObj; }
ReplaceObject(const IMapObjectPtr & pNewIMapObject)106     void                    ReplaceObject( const IMapObjectPtr& pNewIMapObject ) { mpObj = pNewIMapObject; }
107 };
108 
109 
110 /*************************************************************************
111 |*
112 |*
113 |*
114 \************************************************************************/
115 /* move to cui //CHINA001
116 class URLDlg : public ModalDialog
117 {
118     FixedLine           aFlURL;
119     FixedText           aFtURL1;
120     Edit                aEdtURL;
121     FixedText           aFtURLDescription;
122     Edit                aEdtURLDescription;
123     FixedText           aFtTarget;
124     ComboBox            aCbbTargets;
125     FixedText           aFtName;
126     Edit                aEdtName;
127     OKButton            aBtnOk;
128     CancelButton        aBtnCancel;
129 
130 public:
131 
132                         URLDlg( Window* pWindow,
133                                 const String& rURL, const String& rDescription,
134                                 const String& rTarget, const String& rName,
135                                 TargetList& rTargetList );
136 
137     String              GetURL() const { return aEdtURL.GetText(); }
138     String              GetDescription() const { return aEdtURLDescription.GetText(); }
139     String              GetTarget() const { return aCbbTargets.GetText(); }
140     String              GetName() const { return aEdtName.GetText(); }
141 };
142 */
143 
144 /*************************************************************************
145 |*
146 |*
147 |*
148 \************************************************************************/
149 
150 class IMapWindow : public GraphCtrl, public DropTargetHelper
151 {
152     NotifyInfo          aInfo;
153     ImageMap            aIMap;
154     TargetList          aTargetList;
155     Link                aInfoLink;
156     SfxItemPool*        pIMapPool;
157     SfxItemInfo*        pItemInfo;
158     ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >
159                         mxDocumentFrame;
160 
161                         DECL_LINK( MenuSelectHdl, Menu* );
162                         DECL_LINK( MouseTimerHdl, Timer* );
163 
164 protected:
165 
166     // GraphCtrl
167     virtual void        MouseButtonUp(const MouseEvent& rMEvt);
168     virtual void        Command(const CommandEvent& rCEvt);
169     virtual void        RequestHelp( const HelpEvent& rHEvt );
170     virtual void        SdrObjCreated( const SdrObject& rObj );
171     virtual void        SdrObjChanged( const SdrObject& rObj );
172     virtual void        MarkListHasChanged();
173     virtual void        InitSdrModel();
174 
175     // DropTargetHelper
176     virtual sal_Int8    AcceptDrop( const AcceptDropEvent& rEvt );
177     virtual sal_Int8    ExecuteDrop( const ExecuteDropEvent& rEvt );
178 
179     void                CreateImageMap();
180     void                ReplaceImageMap( const ImageMap& rNewImageMap, sal_Bool bScaleToGraphic );
181 
182     void                ClearTargetList();
183 
184     SdrObject*          CreateObj( const IMapObject* pIMapObj );
185     IMapObject*         GetIMapObj( const SdrObject* pSdrObj ) const;
186     SdrObject*          GetSdrObj( const IMapObject* pIMapObj ) const;
187     SdrObject*          GetHitSdrObj( const Point& rPosPixel ) const;
188 
189     void                UpdateInfo( sal_Bool bNewObj );
190 
191 public:
192 
193                         IMapWindow( Window* pParent, const ResId& rResId, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxDocumentFrame );
194                         ~IMapWindow();
195 
196     sal_Bool                ReplaceActualIMapInfo( const NotifyInfo& rNewInfo );
197 
198     void                SetImageMap( const ImageMap& rImageMap );
199     const ImageMap&     GetImageMap();
200 
201     void                SetCurrentObjState( sal_Bool bActive );
202     void                DoMacroAssign();
203     void                DoPropertyDialog();
204 
SetInfoLink(const Link & rLink)205     void                SetInfoLink( const Link& rLink ) { aInfoLink = rLink; }
GetInfoLink() const206     const Link&         GetInfoLink() const { return aInfoLink; }
207 
208     void                SetTargetList( TargetList& rTargetList );
GetTargetList() const209     const TargetList&   GetTargetList() const { return aTargetList; }
210 
GetInfo() const211     const NotifyInfo&   GetInfo() const { return aInfo; }
212 
213     void                CreateDefaultObject();
214     void                SelectFirstObject();
215     void                StartPolyEdit();
216 
217     virtual void        KeyInput( const KeyEvent& rKEvt );
218 };
219 
220 
221 #endif
222 
223