summaryrefslogtreecommitdiff
path: root/sw/source/ui/fldui/javaedit.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/fldui/javaedit.cxx')
-rw-r--r--sw/source/ui/fldui/javaedit.cxx308
1 files changed, 308 insertions, 0 deletions
diff --git a/sw/source/ui/fldui/javaedit.cxx b/sw/source/ui/fldui/javaedit.cxx
new file mode 100644
index 000000000000..ba7f91d44714
--- /dev/null
+++ b/sw/source/ui/fldui/javaedit.cxx
@@ -0,0 +1,308 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 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>
+
+#include <vcl/msgbox.hxx>
+#include <vcl/svapp.hxx>
+#include <svl/urihelper.hxx>
+#include <view.hxx>
+#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>
+#include <javaedit.hxx>
+
+#include <fldui.hrc>
+#include <javaedit.hrc>
+
+// 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)
+{
+ // install handler
+ 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
+ // newly create
+ SetText( SW_RES( STR_JAVA_INSERT ) );
+
+ FreeResource();
+
+ RadioButtonHdl(NULL);
+}
+
+SwJavaEditDialog::~SwJavaEditDialog()
+{
+ delete pMgr;
+ delete pFileDlg;
+ Application::SetDefDialogParent( pOldDefDlgParent );
+}
+
+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 )
+
+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 )
+
+IMPL_LINK( SwJavaEditDialog, OKHdl, Button *, EMPTYARG )
+{
+ SetFld();
+ EndDialog( RET_OK );
+ return 0;
+}
+
+void SwJavaEditDialog::Apply()
+{
+}
+
+void SwJavaEditDialog::CheckTravel()
+{
+ sal_Bool bTravel = sal_False;
+ sal_Bool bNext(sal_False), bPrev(sal_False);
+
+ if(!bNew)
+ {
+ // Traveling only when more than one field
+ 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);
+ }
+}
+
+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 );
+}
+
+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;
+}
+
+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;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */