xref: /trunk/main/sc/inc/arealink.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef SC_AREALINK_HXX
29 #define SC_AREALINK_HXX
30 
31 #include "global.hxx"
32 #include "refreshtimer.hxx"
33 #include "address.hxx"
34 #include <sfx2/lnkbase.hxx>
35 #include "scdllapi.h"
36 
37 class ScDocShell;
38 class SfxObjectShell;
39 class AbstractScLinkedAreaDlg;
40 struct AreaLink_Impl;
41 
42 class SC_DLLPUBLIC ScAreaLink : public ::sfx2::SvBaseLink, public ScRefreshTimer
43 {
44 private:
45     AreaLink_Impl*  pImpl;
46     String          aFileName;
47     String          aFilterName;
48     String          aOptions;
49     String          aSourceArea;
50     ScRange         aDestArea;
51     sal_Bool            bAddUndo;
52     sal_Bool            bInCreate;
53     sal_Bool            bDoInsert;      // wird fuer das erste Update auf sal_False gesetzt
54 
55     sal_Bool        FindExtRange( ScRange& rRange, ScDocument* pSrcDoc, const String& rAreaName );
56 
57 public:
58     TYPEINFO();
59     ScAreaLink( SfxObjectShell* pShell, const String& rFile,
60                     const String& rFilter, const String& rOpt,
61                     const String& rArea, const ScRange& rDest, sal_uLong nRefresh );
62     virtual ~ScAreaLink();
63 
64     virtual void Closed();
65     virtual void DataChanged( const String& rMimeType,
66                               const ::com::sun::star::uno::Any & rValue );
67 
68     virtual void    Edit( Window*, const Link& rEndEditHdl );
69 
70     sal_Bool    Refresh( const String& rNewFile, const String& rNewFilter,
71                     const String& rNewArea, sal_uLong nNewRefresh );
72 
73     void    SetInCreate(sal_Bool bSet)                  { bInCreate = bSet; }
74     void    SetDoInsert(sal_Bool bSet)                  { bDoInsert = bSet; }
75     void    SetDestArea(const ScRange& rNew);
76     void    SetSource(const String& rDoc, const String& rFlt, const String& rOpt,
77                         const String& rArea);
78 
79     sal_Bool    IsEqual( const String& rFile, const String& rFilter, const String& rOpt,
80                         const String& rSource, const ScRange& rDest ) const;
81 
82     const String&   GetFile() const         { return aFileName;     }
83     const String&   GetFilter() const       { return aFilterName;   }
84     const String&   GetOptions() const      { return aOptions;      }
85     const String&   GetSource() const       { return aSourceArea;   }
86     const ScRange&  GetDestArea() const     { return aDestArea;     }
87 
88     DECL_LINK( RefreshHdl, ScAreaLink* );
89     DECL_LINK( AreaEndEditHdl, void* );
90 };
91 
92 #endif
93 
94