| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_sw.hxx" |
| |
| #ifdef SW_DLLIMPLEMENTATION |
| #undef SW_DLLIMPLEMENTATION |
| #endif |
| |
| // include --------------------------------------------------------------- |
| |
| |
| |
| #define _JAVAEDIT_CXX |
| #include <hintids.hxx> |
| |
| #ifndef _MSGBOX_HXX //autogen |
| #include <vcl/msgbox.hxx> |
| #endif |
| #include <vcl/svapp.hxx> |
| #include <svl/urihelper.hxx> |
| #ifndef _VIEW_HXX |
| #include <view.hxx> |
| #endif |
| #include <sfx2/docfile.hxx> |
| #include <sfx2/filedlghelper.hxx> |
| #include <docsh.hxx> |
| #include <wrtsh.hxx> |
| #include <fldbas.hxx> |
| #include <fldmgr.hxx> |
| #include <docufld.hxx> |
| #include <uitool.hxx> |
| #ifndef _JAVAEDIT_HXX |
| #include <javaedit.hxx> |
| #endif |
| |
| #ifndef _FLDUI_HRC |
| #include <fldui.hrc> |
| #endif |
| #ifndef _JAVAEDIT_HRC |
| #include <javaedit.hrc> |
| #endif |
| |
| // static ---------------------------------------------------------------- |
| |
| // class SwJavaEditDialog ------------------------------------------------ |
| |
| |
| |
| SwJavaEditDialog::SwJavaEditDialog(Window* pParent, SwWrtShell* pWrtSh) : |
| |
| SvxStandardDialog(pParent, SW_RES(DLG_JAVAEDIT)), |
| |
| aTypeFT ( this, SW_RES( FT_TYPE ) ), |
| aTypeED ( this, SW_RES( ED_TYPE ) ), |
| aUrlRB ( this, SW_RES( RB_URL ) ), |
| aEditRB ( this, SW_RES( RB_EDIT ) ), |
| aUrlPB ( this, SW_RES( PB_URL ) ), |
| aUrlED ( this, SW_RES( ED_URL ) ), |
| aEditED ( this, SW_RES( ED_EDIT ) ), |
| aPostItFL ( this, SW_RES( FL_POSTIT ) ), |
| |
| aOKBtn ( this, SW_RES( BTN_POST_OK ) ), |
| aCancelBtn ( this, SW_RES( BTN_POST_CANCEL ) ), |
| aPrevBtn ( this, SW_RES( BTN_PREV ) ), |
| aNextBtn ( this, SW_RES( BTN_NEXT ) ), |
| aHelpBtn ( this, SW_RES( BTN_POST_HELP ) ), |
| |
| bNew(sal_True), |
| bIsUrl(sal_False), |
| |
| pSh(pWrtSh), |
| pFileDlg(NULL), |
| pOldDefDlgParent(NULL) |
| { |
| // Handler installieren |
| aPrevBtn.SetClickHdl( LINK( this, SwJavaEditDialog, PrevHdl ) ); |
| aNextBtn.SetClickHdl( LINK( this, SwJavaEditDialog, NextHdl ) ); |
| aOKBtn.SetClickHdl( LINK( this, SwJavaEditDialog, OKHdl ) ); |
| |
| Link aLk = LINK(this, SwJavaEditDialog, RadioButtonHdl); |
| aUrlRB.SetClickHdl(aLk); |
| aEditRB.SetClickHdl(aLk); |
| aUrlPB.SetClickHdl(LINK(this, SwJavaEditDialog, InsertFileHdl)); |
| |
| Font aFont( aEditED.GetFont() ); |
| aFont.SetWeight( WEIGHT_LIGHT ); |
| aEditED.SetFont( aFont ); |
| |
| pMgr = new SwFldMgr; |
| pFld = (SwScriptField*)pMgr->GetCurFld(); |
| |
| bNew = !(pFld && pFld->GetTyp()->Which() == RES_SCRIPTFLD); |
| |
| CheckTravel(); |
| |
| if( !bNew ) |
| SetText( SW_RES( STR_JAVA_EDIT ) ); |
| else |
| // neu anlegen |
| SetText( SW_RES( STR_JAVA_INSERT ) ); |
| |
| FreeResource(); |
| |
| RadioButtonHdl(NULL); |
| } |
| |
| /*------------------------------------------------------------------------ |
| Beschreibung: |
| ------------------------------------------------------------------------*/ |
| |
| |
| |
| SwJavaEditDialog::~SwJavaEditDialog() |
| { |
| delete pMgr; |
| delete pFileDlg; |
| Application::SetDefDialogParent( pOldDefDlgParent ); |
| } |
| |
| /*------------------------------------------------------------------------ |
| Beschreibung: |
| ------------------------------------------------------------------------*/ |
| |
| |
| |
| IMPL_LINK_INLINE_START( SwJavaEditDialog, PrevHdl, Button *, EMPTYARG ) |
| { |
| SetFld(); |
| pMgr->GoPrev(); |
| pFld = (SwScriptField*)pMgr->GetCurFld(); |
| CheckTravel(); |
| RadioButtonHdl(NULL); |
| |
| return 0; |
| } |
| IMPL_LINK_INLINE_END( SwJavaEditDialog, PrevHdl, Button *, EMPTYARG ) |
| |
| /*------------------------------------------------------------------------ |
| Beschreibung: |
| ------------------------------------------------------------------------*/ |
| |
| |
| |
| IMPL_LINK_INLINE_START( SwJavaEditDialog, NextHdl, Button *, EMPTYARG ) |
| { |
| SetFld(); |
| pMgr->GoNext(); |
| pFld = (SwScriptField*)pMgr->GetCurFld(); |
| CheckTravel(); |
| RadioButtonHdl(NULL); |
| |
| return 0; |
| } |
| IMPL_LINK_INLINE_END( SwJavaEditDialog, NextHdl, Button *, EMPTYARG ) |
| |
| /*------------------------------------------------------------------------ |
| Beschreibung: |
| ------------------------------------------------------------------------*/ |
| |
| |
| |
| IMPL_LINK( SwJavaEditDialog, OKHdl, Button *, EMPTYARG ) |
| { |
| SetFld(); |
| EndDialog( RET_OK ); |
| return 0; |
| } |
| |
| /*------------------------------------------------------------------------ |
| Beschreibung: |
| ------------------------------------------------------------------------*/ |
| |
| |
| |
| void SwJavaEditDialog::Apply() |
| { |
| } |
| |
| /*------------------------------------------------------------------------ |
| Beschreibung: |
| ------------------------------------------------------------------------*/ |
| |
| |
| |
| void SwJavaEditDialog::CheckTravel() |
| { |
| sal_Bool bTravel = sal_False; |
| sal_Bool bNext(sal_False), bPrev(sal_False); |
| |
| if(!bNew) |
| { |
| // Traveling nur bei mehr als einem Feld |
| pSh->StartAction(); |
| pSh->CreateCrsr(); |
| |
| bNext = pMgr->GoNext(); |
| if( bNext ) |
| pMgr->GoPrev(); |
| |
| if( 0 != ( bPrev = pMgr->GoPrev() ) ) |
| pMgr->GoNext(); |
| bTravel |= bNext|bPrev; |
| |
| pSh->DestroyCrsr(); |
| pSh->EndAction(); |
| |
| if (pFld->IsCodeURL()) |
| { |
| String sURL(pFld->GetPar2()); |
| if(sURL.Len()) |
| { |
| INetURLObject aINetURL(sURL); |
| if(INET_PROT_FILE == aINetURL.GetProtocol()) |
| sURL = aINetURL.PathToFileName(); |
| } |
| aUrlED.SetText(sURL); |
| aEditED.SetText(aEmptyStr); |
| aUrlRB.Check(); |
| } |
| else |
| { |
| aEditED.SetText(pFld->GetPar2()); |
| aUrlED.SetText(aEmptyStr); |
| aEditRB.Check(); |
| } |
| aTypeED.SetText(pFld->GetPar1()); |
| } |
| |
| if ( !bTravel ) |
| { |
| aPrevBtn.Hide(); |
| aNextBtn.Hide(); |
| } |
| else |
| { |
| aPrevBtn.Enable(bPrev); |
| aNextBtn.Enable(bNext); |
| } |
| } |
| |
| /*------------------------------------------------------------------------ |
| Beschreibung: |
| ------------------------------------------------------------------------*/ |
| |
| |
| |
| void SwJavaEditDialog::SetFld() |
| { |
| if( !aOKBtn.IsEnabled() ) |
| return ; |
| |
| aType = aTypeED.GetText(); |
| bIsUrl = aUrlRB.IsChecked(); |
| |
| if( bIsUrl ) |
| { |
| aText = aUrlED.GetText(); |
| if(aText.Len()) |
| { |
| SfxMedium* pMedium = pSh->GetView().GetDocShell()->GetMedium(); |
| INetURLObject aAbs; |
| if( pMedium ) |
| aAbs = pMedium->GetURLObject(); |
| |
| aText = URIHelper::SmartRel2Abs( |
| aAbs, aText, URIHelper::GetMaybeFileHdl()); |
| } |
| } |
| else |
| aText = aEditED.GetText(); |
| |
| if( !aType.Len() ) |
| aType = String::CreateFromAscii("JavaScript"); |
| } |
| |
| sal_Bool SwJavaEditDialog::IsUpdate() |
| { |
| return pFld && ( bIsUrl != pFld->GetFormat() || pFld->GetPar2() != aType || pFld->GetPar1() != aText ); |
| } |
| |
| /*------------------------------------------------------------------------ |
| Beschreibung: |
| ------------------------------------------------------------------------*/ |
| |
| IMPL_LINK( SwJavaEditDialog, RadioButtonHdl, RadioButton *, EMPTYARG ) |
| { |
| sal_Bool bEnable = aUrlRB.IsChecked(); |
| aUrlPB.Enable(bEnable); |
| aUrlED.Enable(bEnable); |
| aEditED.Enable(!bEnable); |
| |
| if( !bNew ) |
| { |
| bEnable = !pSh->IsReadOnlyAvailable() || !pSh->HasReadonlySel(); |
| aOKBtn.Enable( bEnable ); |
| aUrlED.SetReadOnly( !bEnable ); |
| aEditED.SetReadOnly( !bEnable); |
| aTypeED.SetReadOnly( !bEnable); |
| if( aUrlPB.IsEnabled() && !bEnable ) |
| aUrlPB.Enable( sal_False ); |
| } |
| return 0; |
| } |
| |
| /*************************************************************************** |
| Beschreibung: |
| ***************************************************************************/ |
| |
| IMPL_LINK( SwJavaEditDialog, InsertFileHdl, PushButton *, pBtn ) |
| { |
| if ( !pFileDlg ) |
| { |
| pOldDefDlgParent = Application::GetDefDialogParent(); |
| Application::SetDefDialogParent( pBtn ); |
| |
| pFileDlg = new ::sfx2::FileDialogHelper( |
| (SFXWB_INSERT | WB_3DLOOK), String::CreateFromAscii("swriter") ); |
| } |
| |
| pFileDlg->StartExecuteModal( LINK( this, SwJavaEditDialog, DlgClosedHdl ) ); |
| return 0; |
| } |
| |
| IMPL_LINK( SwJavaEditDialog, DlgClosedHdl, sfx2::FileDialogHelper *, EMPTYARG ) |
| { |
| if ( pFileDlg->GetError() == ERRCODE_NONE ) |
| { |
| String sFileName = pFileDlg->GetPath(); |
| if ( sFileName.Len() > 0 ) |
| { |
| INetURLObject aINetURL( sFileName ); |
| if ( INET_PROT_FILE == aINetURL.GetProtocol() ) |
| sFileName = aINetURL.PathToFileName(); |
| } |
| aUrlED.SetText( sFileName ); |
| } |
| |
| return 0; |
| } |
| |