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 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26
27 #ifdef SW_DLLIMPLEMENTATION
28 #undef SW_DLLIMPLEMENTATION
29 #endif
30
31 // include ---------------------------------------------------------------
32
33
34
35 #define _JAVAEDIT_CXX
36 #include <hintids.hxx>
37
38 #ifndef _MSGBOX_HXX //autogen
39 #include <vcl/msgbox.hxx>
40 #endif
41 #include <vcl/svapp.hxx>
42 #include <svl/urihelper.hxx>
43 #ifndef _VIEW_HXX
44 #include <view.hxx>
45 #endif
46 #include <sfx2/docfile.hxx>
47 #include <sfx2/filedlghelper.hxx>
48 #include <docsh.hxx>
49 #include <wrtsh.hxx>
50 #include <fldbas.hxx>
51 #include <fldmgr.hxx>
52 #include <docufld.hxx>
53 #include <uitool.hxx>
54 #ifndef _JAVAEDIT_HXX
55 #include <javaedit.hxx>
56 #endif
57
58 #ifndef _FLDUI_HRC
59 #include <fldui.hrc>
60 #endif
61 #ifndef _JAVAEDIT_HRC
62 #include <javaedit.hrc>
63 #endif
64
65 // static ----------------------------------------------------------------
66
67 // class SwJavaEditDialog ------------------------------------------------
68
69
70
SwJavaEditDialog(Window * pParent,SwWrtShell * pWrtSh)71 SwJavaEditDialog::SwJavaEditDialog(Window* pParent, SwWrtShell* pWrtSh) :
72
73 SvxStandardDialog(pParent, SW_RES(DLG_JAVAEDIT)),
74
75 aTypeFT ( this, SW_RES( FT_TYPE ) ),
76 aTypeED ( this, SW_RES( ED_TYPE ) ),
77 aUrlRB ( this, SW_RES( RB_URL ) ),
78 aEditRB ( this, SW_RES( RB_EDIT ) ),
79 aUrlPB ( this, SW_RES( PB_URL ) ),
80 aUrlED ( this, SW_RES( ED_URL ) ),
81 aEditED ( this, SW_RES( ED_EDIT ) ),
82 aPostItFL ( this, SW_RES( FL_POSTIT ) ),
83
84 aOKBtn ( this, SW_RES( BTN_POST_OK ) ),
85 aCancelBtn ( this, SW_RES( BTN_POST_CANCEL ) ),
86 aPrevBtn ( this, SW_RES( BTN_PREV ) ),
87 aNextBtn ( this, SW_RES( BTN_NEXT ) ),
88 aHelpBtn ( this, SW_RES( BTN_POST_HELP ) ),
89
90 bNew(sal_True),
91 bIsUrl(sal_False),
92
93 pSh(pWrtSh),
94 pFileDlg(NULL),
95 pOldDefDlgParent(NULL)
96 {
97 // Handler installieren
98 aPrevBtn.SetClickHdl( LINK( this, SwJavaEditDialog, PrevHdl ) );
99 aNextBtn.SetClickHdl( LINK( this, SwJavaEditDialog, NextHdl ) );
100 aOKBtn.SetClickHdl( LINK( this, SwJavaEditDialog, OKHdl ) );
101
102 Link aLk = LINK(this, SwJavaEditDialog, RadioButtonHdl);
103 aUrlRB.SetClickHdl(aLk);
104 aEditRB.SetClickHdl(aLk);
105 aUrlPB.SetClickHdl(LINK(this, SwJavaEditDialog, InsertFileHdl));
106
107 Font aFont( aEditED.GetFont() );
108 aFont.SetWeight( WEIGHT_LIGHT );
109 aEditED.SetFont( aFont );
110
111 pMgr = new SwFldMgr;
112 pFld = (SwScriptField*)pMgr->GetCurFld();
113
114 bNew = !(pFld && pFld->GetTyp()->Which() == RES_SCRIPTFLD);
115
116 CheckTravel();
117
118 if( !bNew )
119 SetText( SW_RES( STR_JAVA_EDIT ) );
120 else
121 // neu anlegen
122 SetText( SW_RES( STR_JAVA_INSERT ) );
123
124 FreeResource();
125
126 RadioButtonHdl(NULL);
127 }
128
129 /*------------------------------------------------------------------------
130 Beschreibung:
131 ------------------------------------------------------------------------*/
132
133
134
~SwJavaEditDialog()135 SwJavaEditDialog::~SwJavaEditDialog()
136 {
137 delete pMgr;
138 delete pFileDlg;
139 Application::SetDefDialogParent( pOldDefDlgParent );
140 }
141
142 /*------------------------------------------------------------------------
143 Beschreibung:
144 ------------------------------------------------------------------------*/
145
146
147
IMPL_LINK_INLINE_START(SwJavaEditDialog,PrevHdl,Button *,EMPTYARG)148 IMPL_LINK_INLINE_START( SwJavaEditDialog, PrevHdl, Button *, EMPTYARG )
149 {
150 SetFld();
151 pMgr->GoPrev();
152 pFld = (SwScriptField*)pMgr->GetCurFld();
153 CheckTravel();
154 RadioButtonHdl(NULL);
155
156 return 0;
157 }
IMPL_LINK_INLINE_END(SwJavaEditDialog,PrevHdl,Button *,EMPTYARG)158 IMPL_LINK_INLINE_END( SwJavaEditDialog, PrevHdl, Button *, EMPTYARG )
159
160 /*------------------------------------------------------------------------
161 Beschreibung:
162 ------------------------------------------------------------------------*/
163
164
165
166 IMPL_LINK_INLINE_START( SwJavaEditDialog, NextHdl, Button *, EMPTYARG )
167 {
168 SetFld();
169 pMgr->GoNext();
170 pFld = (SwScriptField*)pMgr->GetCurFld();
171 CheckTravel();
172 RadioButtonHdl(NULL);
173
174 return 0;
175 }
IMPL_LINK_INLINE_END(SwJavaEditDialog,NextHdl,Button *,EMPTYARG)176 IMPL_LINK_INLINE_END( SwJavaEditDialog, NextHdl, Button *, EMPTYARG )
177
178 /*------------------------------------------------------------------------
179 Beschreibung:
180 ------------------------------------------------------------------------*/
181
182
183
184 IMPL_LINK( SwJavaEditDialog, OKHdl, Button *, EMPTYARG )
185 {
186 SetFld();
187 EndDialog( RET_OK );
188 return 0;
189 }
190
191 /*------------------------------------------------------------------------
192 Beschreibung:
193 ------------------------------------------------------------------------*/
194
195
196
Apply()197 void SwJavaEditDialog::Apply()
198 {
199 }
200
201 /*------------------------------------------------------------------------
202 Beschreibung:
203 ------------------------------------------------------------------------*/
204
205
206
CheckTravel()207 void SwJavaEditDialog::CheckTravel()
208 {
209 sal_Bool bTravel = sal_False;
210 sal_Bool bNext(sal_False), bPrev(sal_False);
211
212 if(!bNew)
213 {
214 // Traveling nur bei mehr als einem Feld
215 pSh->StartAction();
216 pSh->CreateCrsr();
217
218 bNext = pMgr->GoNext();
219 if( bNext )
220 pMgr->GoPrev();
221
222 if( 0 != ( bPrev = pMgr->GoPrev() ) )
223 pMgr->GoNext();
224 bTravel |= bNext|bPrev;
225
226 pSh->DestroyCrsr();
227 pSh->EndAction();
228
229 if (pFld->IsCodeURL())
230 {
231 String sURL(pFld->GetPar2());
232 if(sURL.Len())
233 {
234 INetURLObject aINetURL(sURL);
235 if(INET_PROT_FILE == aINetURL.GetProtocol())
236 sURL = aINetURL.PathToFileName();
237 }
238 aUrlED.SetText(sURL);
239 aEditED.SetText(aEmptyStr);
240 aUrlRB.Check();
241 }
242 else
243 {
244 aEditED.SetText(pFld->GetPar2());
245 aUrlED.SetText(aEmptyStr);
246 aEditRB.Check();
247 }
248 aTypeED.SetText(pFld->GetPar1());
249 }
250
251 if ( !bTravel )
252 {
253 aPrevBtn.Hide();
254 aNextBtn.Hide();
255 }
256 else
257 {
258 aPrevBtn.Enable(bPrev);
259 aNextBtn.Enable(bNext);
260 }
261 }
262
263 /*------------------------------------------------------------------------
264 Beschreibung:
265 ------------------------------------------------------------------------*/
266
267
268
SetFld()269 void SwJavaEditDialog::SetFld()
270 {
271 if( !aOKBtn.IsEnabled() )
272 return ;
273
274 aType = aTypeED.GetText();
275 bIsUrl = aUrlRB.IsChecked();
276
277 if( bIsUrl )
278 {
279 aText = aUrlED.GetText();
280 if(aText.Len())
281 {
282 SfxMedium* pMedium = pSh->GetView().GetDocShell()->GetMedium();
283 INetURLObject aAbs;
284 if( pMedium )
285 aAbs = pMedium->GetURLObject();
286
287 aText = URIHelper::SmartRel2Abs(
288 aAbs, aText, URIHelper::GetMaybeFileHdl());
289 }
290 }
291 else
292 aText = aEditED.GetText();
293
294 if( !aType.Len() )
295 aType = String::CreateFromAscii("JavaScript");
296 }
297
IsUpdate()298 sal_Bool SwJavaEditDialog::IsUpdate()
299 {
300 return pFld && ( bIsUrl != pFld->GetFormat() || pFld->GetPar2() != aType || pFld->GetPar1() != aText );
301 }
302
303 /*------------------------------------------------------------------------
304 Beschreibung:
305 ------------------------------------------------------------------------*/
306
IMPL_LINK(SwJavaEditDialog,RadioButtonHdl,RadioButton *,EMPTYARG)307 IMPL_LINK( SwJavaEditDialog, RadioButtonHdl, RadioButton *, EMPTYARG )
308 {
309 sal_Bool bEnable = aUrlRB.IsChecked();
310 aUrlPB.Enable(bEnable);
311 aUrlED.Enable(bEnable);
312 aEditED.Enable(!bEnable);
313
314 if( !bNew )
315 {
316 bEnable = !pSh->IsReadOnlyAvailable() || !pSh->HasReadonlySel();
317 aOKBtn.Enable( bEnable );
318 aUrlED.SetReadOnly( !bEnable );
319 aEditED.SetReadOnly( !bEnable);
320 aTypeED.SetReadOnly( !bEnable);
321 if( aUrlPB.IsEnabled() && !bEnable )
322 aUrlPB.Enable( sal_False );
323 }
324 return 0;
325 }
326
327 /***************************************************************************
328 Beschreibung:
329 ***************************************************************************/
330
IMPL_LINK(SwJavaEditDialog,InsertFileHdl,PushButton *,pBtn)331 IMPL_LINK( SwJavaEditDialog, InsertFileHdl, PushButton *, pBtn )
332 {
333 if ( !pFileDlg )
334 {
335 pOldDefDlgParent = Application::GetDefDialogParent();
336 Application::SetDefDialogParent( pBtn );
337
338 pFileDlg = new ::sfx2::FileDialogHelper(
339 (SFXWB_INSERT | WB_3DLOOK), String::CreateFromAscii("swriter") );
340 }
341
342 pFileDlg->StartExecuteModal( LINK( this, SwJavaEditDialog, DlgClosedHdl ) );
343 return 0;
344 }
345
IMPL_LINK(SwJavaEditDialog,DlgClosedHdl,sfx2::FileDialogHelper *,EMPTYARG)346 IMPL_LINK( SwJavaEditDialog, DlgClosedHdl, sfx2::FileDialogHelper *, EMPTYARG )
347 {
348 if ( pFileDlg->GetError() == ERRCODE_NONE )
349 {
350 String sFileName = pFileDlg->GetPath();
351 if ( sFileName.Len() > 0 )
352 {
353 INetURLObject aINetURL( sFileName );
354 if ( INET_PROT_FILE == aINetURL.GetProtocol() )
355 sFileName = aINetURL.PathToFileName();
356 }
357 aUrlED.SetText( sFileName );
358 }
359
360 return 0;
361 }
362
363