1*efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*efeef26fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*efeef26fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*efeef26fSAndrew Rist  * distributed with this work for additional information
6*efeef26fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*efeef26fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*efeef26fSAndrew Rist  * "License"); you may not use this file except in compliance
9*efeef26fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*efeef26fSAndrew Rist  *
11*efeef26fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*efeef26fSAndrew Rist  *
13*efeef26fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*efeef26fSAndrew Rist  * software distributed under the License is distributed on an
15*efeef26fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*efeef26fSAndrew Rist  * KIND, either express or implied.  See the License for the
17*efeef26fSAndrew Rist  * specific language governing permissions and limitations
18*efeef26fSAndrew Rist  * under the License.
19*efeef26fSAndrew Rist  *
20*efeef26fSAndrew Rist  *************************************************************/
21*efeef26fSAndrew Rist 
22*efeef26fSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION
27cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION
28cdf0e10cSrcweir #endif
29cdf0e10cSrcweir 
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include <swtypes.hxx>
32cdf0e10cSrcweir #include <globals.hrc>
33cdf0e10cSrcweir #include <misc.hrc>
34cdf0e10cSrcweir 
35cdf0e10cSrcweir #include <utlui.hrc>
36cdf0e10cSrcweir #include <unotools.hrc>
37cdf0e10cSrcweir #include <unoprnms.hxx>
38cdf0e10cSrcweir #include <tools/debug.hxx>
39cdf0e10cSrcweir #include <vcl/msgbox.hxx>
40cdf0e10cSrcweir #include <com/sun/star/text/XTextViewCursorSupplier.hpp>
41cdf0e10cSrcweir #include <com/sun/star/view/XScreenCursor.hpp>
42cdf0e10cSrcweir #include <com/sun/star/view/DocumentZoomType.hpp>
43cdf0e10cSrcweir #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
44cdf0e10cSrcweir #include <com/sun/star/style/XStyle.hpp>
45cdf0e10cSrcweir #include <com/sun/star/frame/XFrame.hpp>
46cdf0e10cSrcweir #include <com/sun/star/text/XText.hpp>
47cdf0e10cSrcweir #include <com/sun/star/text/XTextDocument.hpp>
48cdf0e10cSrcweir #include <com/sun/star/awt/PosSize.hpp>
49cdf0e10cSrcweir #include <com/sun/star/view/XViewSettingsSupplier.hpp>
50cdf0e10cSrcweir #include <com/sun/star/container/XNameContainer.hpp>
51cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
52cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
53cdf0e10cSrcweir #include <svl/stritem.hxx>
54cdf0e10cSrcweir #include <shellio.hxx>
55cdf0e10cSrcweir #include <docsh.hxx>
56cdf0e10cSrcweir #include <view.hxx>
57cdf0e10cSrcweir #include <wrtsh.hxx>
58cdf0e10cSrcweir #include <swmodule.hxx>
59cdf0e10cSrcweir #include <unocrsr.hxx>
60cdf0e10cSrcweir 
61cdf0e10cSrcweir #include "swrenamexnameddlg.hxx"
62cdf0e10cSrcweir 
63cdf0e10cSrcweir 
64cdf0e10cSrcweir using namespace ::com::sun::star;
65cdf0e10cSrcweir using ::rtl::OUString;
66cdf0e10cSrcweir 
SwRenameXNamedDlg(Window * pWin,uno::Reference<container::XNamed> & xN,uno::Reference<container::XNameAccess> & xNA)67cdf0e10cSrcweir SwRenameXNamedDlg::SwRenameXNamedDlg( Window* pWin,
68cdf0e10cSrcweir 			uno::Reference< container::XNamed > & xN,
69cdf0e10cSrcweir 			uno::Reference< container::XNameAccess > & xNA ) :
70cdf0e10cSrcweir 	ModalDialog(pWin, SW_RES(DLG_RENAME_XNAMED)),
71cdf0e10cSrcweir    aNameFL(this, SW_RES(FL_NAME)),
72cdf0e10cSrcweir     aNewNameFT(this, SW_RES(FT_NEW_NAME)),
73cdf0e10cSrcweir    aNewNameED(this, SW_RES(ED_NEW_NAME)),
74cdf0e10cSrcweir    aOk(this, SW_RES(PB_OK)),
75cdf0e10cSrcweir    aCancel(this, SW_RES(PB_CANCEL)),
76cdf0e10cSrcweir    aHelp(this, SW_RES(PB_HELP)),
77cdf0e10cSrcweir    xNamed(xN),
78cdf0e10cSrcweir    xNameAccess(xNA)
79cdf0e10cSrcweir {
80cdf0e10cSrcweir 	FreeResource();
81cdf0e10cSrcweir 	sRemoveWarning = String(SW_RES(STR_REMOVE_WARNING));
82cdf0e10cSrcweir 
83cdf0e10cSrcweir 	String sTmp(GetText());
84cdf0e10cSrcweir 	aNewNameED.SetText(xNamed->getName());
85cdf0e10cSrcweir     aNewNameED.SetSelection(Selection(SELECTION_MIN, SELECTION_MAX));
86cdf0e10cSrcweir 	sTmp += String(xNamed->getName());
87cdf0e10cSrcweir 	SetText(sTmp);
88cdf0e10cSrcweir 
89cdf0e10cSrcweir 	aOk.SetClickHdl(LINK(this, SwRenameXNamedDlg, OkHdl));
90cdf0e10cSrcweir 	aNewNameED.SetModifyHdl(LINK(this, SwRenameXNamedDlg, ModifyHdl));
91cdf0e10cSrcweir 	aOk.Enable(sal_False);
92cdf0e10cSrcweir }
93cdf0e10cSrcweir /* -----------------09.06.99 15:34-------------------
94cdf0e10cSrcweir  *
95cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwRenameXNamedDlg,OkHdl,OKButton *,EMPTYARG)96cdf0e10cSrcweir IMPL_LINK(SwRenameXNamedDlg, OkHdl, OKButton*, EMPTYARG)
97cdf0e10cSrcweir {
98cdf0e10cSrcweir 	try
99cdf0e10cSrcweir 	{
100cdf0e10cSrcweir 		xNamed->setName(aNewNameED.GetText());
101cdf0e10cSrcweir 	}
102cdf0e10cSrcweir 	catch(uno::RuntimeException&)
103cdf0e10cSrcweir 	{
104cdf0e10cSrcweir 		DBG_ERROR("Name wurde nicht geaendert");
105cdf0e10cSrcweir 	}
106cdf0e10cSrcweir 	EndDialog(RET_OK);
107cdf0e10cSrcweir 	return 0;
108cdf0e10cSrcweir }
109cdf0e10cSrcweir /* -----------------09.06.99 15:48-------------------
110cdf0e10cSrcweir  *
111cdf0e10cSrcweir  * --------------------------------------------------*/
IMPL_LINK(SwRenameXNamedDlg,ModifyHdl,NoSpaceEdit *,pEdit)112cdf0e10cSrcweir IMPL_LINK(SwRenameXNamedDlg, ModifyHdl, NoSpaceEdit*, pEdit)
113cdf0e10cSrcweir {
114cdf0e10cSrcweir 	String sTmp(pEdit->GetText());
115cdf0e10cSrcweir 
116cdf0e10cSrcweir 	// prevent from pasting illegal characters
117cdf0e10cSrcweir 	sal_uInt16 nLen = sTmp.Len();
118cdf0e10cSrcweir 	String sMsg;
119cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < pEdit->GetForbiddenChars().Len(); i++)
120cdf0e10cSrcweir 	{
121cdf0e10cSrcweir 		sal_uInt16 nTmpLen = sTmp.Len();
122cdf0e10cSrcweir 		sTmp.EraseAllChars(pEdit->GetForbiddenChars().GetChar(i));
123cdf0e10cSrcweir 		if(sTmp.Len() != nTmpLen)
124cdf0e10cSrcweir 			sMsg += pEdit->GetForbiddenChars().GetChar(i);
125cdf0e10cSrcweir 	}
126cdf0e10cSrcweir 	if(sTmp.Len() != nLen)
127cdf0e10cSrcweir 	{
128cdf0e10cSrcweir 		pEdit->SetText(sTmp);
129cdf0e10cSrcweir 		String sWarning(sRemoveWarning);
130cdf0e10cSrcweir 		sWarning += sMsg;
131cdf0e10cSrcweir 		InfoBox(this, sWarning).Execute();
132cdf0e10cSrcweir 	}
133cdf0e10cSrcweir 
134cdf0e10cSrcweir 	aOk.Enable(sTmp.Len() && !xNameAccess->hasByName(sTmp)
135cdf0e10cSrcweir 	&& (!xSecondAccess.is() || !xSecondAccess->hasByName(sTmp))
136cdf0e10cSrcweir 	&& (!xThirdAccess.is() || !xThirdAccess->hasByName(sTmp))
137cdf0e10cSrcweir 	);
138cdf0e10cSrcweir 	return 0;
139cdf0e10cSrcweir }
140