summaryrefslogtreecommitdiff
path: root/sw/source/ui/utlui/navipi.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/utlui/navipi.cxx')
-rw-r--r--sw/source/ui/utlui/navipi.cxx1425
1 files changed, 0 insertions, 1425 deletions
diff --git a/sw/source/ui/utlui/navipi.cxx b/sw/source/ui/utlui/navipi.cxx
deleted file mode 100644
index 4814e9bda4..0000000000
--- a/sw/source/ui/utlui/navipi.cxx
+++ /dev/null
@@ -1,1425 +0,0 @@
-/* -*- 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"
-
-#define NAVIPI_CXX
-
-#include <string>
-#include <svl/urlbmk.hxx>
-#include <svl/stritem.hxx>
-#include <svtools/filter.hxx>
-#include <svl/urihelper.hxx>
-#include <sot/formats.hxx>
-#include <sot/filelist.hxx>
-#include <sfx2/event.hxx>
-#include <sfx2/imgmgr.hxx>
-#include <sfx2/dispatch.hxx>
-#include <sfx2/dockwin.hxx>
-#include <vcl/toolbox.hxx>
-#include <swtypes.hxx> // fuer Pathfinder
-#include <swmodule.hxx>
-#include <view.hxx>
-#include <navicfg.hxx>
-#include <wrtsh.hxx>
-#include <docsh.hxx>
-#include <actctrl.hxx>
-#include <IMark.hxx>
-#include <navipi.hxx>
-#include <content.hxx>
-#include <workctrl.hxx>
-#include <section.hxx>
-#include <edtwin.hxx>
-#include <sfx2/app.hxx>
-#include <cmdid.h>
-#include <helpid.h>
-#include <ribbar.hrc>
-#include <navipi.hrc>
-#include <utlui.hrc>
-
-#include "access.hrc"
-
-#include <unomid.h>
-
-#define PAGE_CHANGE_TIMEOUT 1000 //Timeout fuer Seitenwechsel
-
-#define JUMP_TYPE_TBL 0
-#define JUMP_TYPE_FRM 1
-#define JUMP_TYPE_GRF 2
-#define JUMP_TYPE_REG 3
-#define JUMP_TYPE_BKM 4
-
-// Version fuer Konfiguration
-
-#define NAVI_VERSION0 0
-#define NAVI_VERSION1 1
-#define NAVI_VERSION2 2 // bIsGlobalActive
-
-#define NAVI_CONFIG_VERSION NAVI_VERSION2
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::frame;
-
-SFX_IMPL_CHILDWINDOW_CONTEXT( SwNavigationChild, SID_NAVIGATOR, SwView )
-
-/*------------------------------------------------------------------------
- Bechreibung: Steuerzeichen aus dem Outline-Entry filtern
-------------------------------------------------------------------------*/
-
-void SwNavigationPI::CleanEntry( String& rEntry )
-{
- sal_uInt16 i = rEntry.Len();
- if( i )
- for( sal_Unicode* pStr = rEntry.GetBufferAccess(); i; --i, ++pStr )
- if( *pStr == 10 || *pStr == 9 )
- *pStr = 0x20;
-}
-/*------------------------------------------------------------------------
- Beschreibung: Ausfuehrung der Drag-Operation
- mit und ohne Childs
-------------------------------------------------------------------------*/
-
-void SwNavigationPI::MoveOutline(sal_uInt16 nSource, sal_uInt16 nTarget,
- sal_Bool bWithChilds)
-{
- SwView *pView = GetCreateView();
- SwWrtShell &rSh = pView->GetWrtShell();
- if(nTarget < nSource || nTarget == USHRT_MAX)
- nTarget ++;
- if ( rSh.IsOutlineMovable( nSource ))
- {
-
- short nMove = nTarget-nSource; //( nDir<0 ) ? 1 : 0 ;
- rSh.GotoOutline(nSource);
- if (bWithChilds)
- rSh.MakeOutlineSel(nSource, nSource, sal_True);
- // Die selektierten Children zaehlen bei der Bewegung vorwaerts nicht mit
- sal_uInt16 nLastOutlinePos = rSh.GetOutlinePos(MAXLEVEL);
- if(bWithChilds && nMove > 1 &&
- nLastOutlinePos < nTarget)
- {
- if(!rSh.IsCrsrPtAtEnd())
- rSh.SwapPam();
- nMove -= nLastOutlinePos - nSource;
- }
- if(!bWithChilds || nMove < 1 || nLastOutlinePos < nTarget )
- rSh.MoveOutlinePara( nMove );
- rSh.ClearMark();
- rSh.GotoOutline( nSource + nMove);
- FillBox();
- }
-
-}
-
-
-/*------------------------------------------------------------------------
- Beschreibung: Nach Goto einen Status Rahmenselektion aufheben
-------------------------------------------------------------------------*/
-
-
-void lcl_UnSelectFrm(SwWrtShell *pSh)
-{
- if (pSh->IsFrmSelected())
- {
- pSh->UnSelectFrm();
- pSh->LeaveSelFrmMode();
- }
-}
-
-/*------------------------------------------------------------------------
- Beschreibung: Select der Documentanzeige
-------------------------------------------------------------------------*/
-
-
-IMPL_LINK( SwNavigationPI, DocListBoxSelectHdl, ListBox *, pBox )
-{
- int nEntryIdx = pBox->GetSelectEntryPos();
- SwView *pView ;
- pView = SwModule::GetFirstView();
- while (nEntryIdx-- && pView)
- {
- pView = SwModule::GetNextView(pView);
- }
- if(!pView)
- {
- nEntryIdx == 0 ?
- aContentTree.ShowHiddenShell():
- aContentTree.ShowActualView();
-
-
- }
- else
- {
- aContentTree.SetConstantShell(pView->GetWrtShellPtr());
- }
- return 0;
-}
-
-/*------------------------------------------------------------------------
- Beschreibung: Fuellen der ListBox fuer Outline Sicht oder Dokumente
- Der PI wird auf volle Groesse gesetzt
-------------------------------------------------------------------------*/
-
-
-void SwNavigationPI::FillBox()
-{
- if(pContentWrtShell)
- {
- aContentTree.SetHiddenShell( pContentWrtShell );
- aContentTree.Display( sal_False );
- }
- else
- {
- SwView *pView = GetCreateView();
- if(!pView)
- {
- aContentTree.SetActiveShell(0);
- }
- else if( pView != pActContView)
- {
- SwWrtShell* pWrtShell = pView->GetWrtShellPtr();
- aContentTree.SetActiveShell(pWrtShell);
- }
- else
- aContentTree.Display( sal_True );
- pActContView = pView;
- }
-}
-
-
-void SwNavigationPI::UsePage(SwWrtShell *pSh)
-{
- if (!pSh)
- {
- SwView *pView = GetCreateView();
- pSh = pView ? &pView->GetWrtShell() : 0;
- GetPageEdit().SetValue(1);
- }
- if (pSh)
- {
- const sal_uInt16 nPageCnt = pSh->GetPageCnt();
- sal_uInt16 nPhyPage, nVirPage;
- pSh->GetPageNum(nPhyPage, nVirPage);
-
- GetPageEdit().SetMax(nPageCnt);
- GetPageEdit().SetLast(nPageCnt);
- GetPageEdit().SetValue(nPhyPage);
- }
-}
-
-/*------------------------------------------------------------------------
- Beschreibung: SelectHandler der Toolboxen
-------------------------------------------------------------------------*/
-
-
-IMPL_LINK( SwNavigationPI, ToolBoxSelectHdl, ToolBox *, pBox )
-{
- const sal_uInt16 nCurrItemId = pBox->GetCurItemId();
- SwView *pView = GetCreateView();
- if (!pView)
- return 1;
- SwWrtShell &rSh = pView->GetWrtShell();
- //MouseModifier fuer Outline-Move besorgen
-
- //Standard: Unterebenen werden mitgenommen
- // mit Ctrl Unterebenen nicht mitnehmen
- sal_Bool bOutlineWithChilds = ( KEY_MOD1 != pBox->GetModifier());
- int nFuncId = 0;
- sal_Bool bFocusToDoc = sal_False;
- switch (nCurrItemId)
- {
- case FN_UP:
- case FN_DOWN:
- {
- // #i75416# move the execution of the search to an asynchronously called static link
- bool* pbNext = new bool( FN_DOWN == nCurrItemId );
- Application::PostUserEvent( STATIC_LINK(pView, SwView, MoveNavigationHdl), pbNext );
- }
- break;
- case FN_SHOW_ROOT:
- {
- aContentTree.ToggleToRoot();
- }
- break;
- case FN_SHOW_CONTENT_BOX:
- case FN_SELECT_CONTENT:
- if(pContextWin->GetFloatingWindow())
- {
- if(_IsZoomedIn() )
- {
- _ZoomOut();
- }
- else
- {
- _ZoomIn();
- }
- }
- return sal_True;
- // Funktionen, die eine direkte Aktion ausloesen
-
- case FN_SELECT_FOOTER:
- {
- rSh.MoveCrsr();
- const sal_uInt16 eType = rSh.GetFrmType(0,sal_False);
- if (eType & FRMTYPE_FOOTER)
- {
- if (rSh.EndPg())
- nFuncId = FN_END_OF_PAGE;
- }
- else if (rSh.GotoFooterTxt())
- nFuncId = FN_TO_FOOTER;
- bFocusToDoc = sal_True;
- }
- break;
- case FN_SELECT_HEADER:
- {
- rSh.MoveCrsr();
- const sal_uInt16 eType = rSh.GetFrmType(0,sal_False);
- if (eType & FRMTYPE_HEADER)
- {
- if (rSh.SttPg())
- nFuncId = FN_START_OF_PAGE;
- }
- else if (rSh.GotoHeaderTxt())
- nFuncId = FN_TO_HEADER;
- bFocusToDoc = sal_True;
- }
- break;
- case FN_SELECT_FOOTNOTE:
- {
- rSh.MoveCrsr();
- const sal_uInt16 eFrmType = rSh.GetFrmType(0,sal_False);
- // aus Fussnote zum Anker springen
- if (eFrmType & FRMTYPE_FOOTNOTE)
- {
- if (rSh.GotoFtnAnchor())
- nFuncId = FN_FOOTNOTE_TO_ANCHOR;
- }
- // andernfalls zuerst zum Fussnotentext springen; geht
- // dies nicht, zur naechten Fussnote; geht auch dies
- // nicht, zur vorhergehenden Fussnote
- else
- {
- if (rSh.GotoFtnTxt())
- nFuncId = FN_FOOTNOTE_TO_ANCHOR;
- else if (rSh.GotoNextFtnAnchor())
- nFuncId = FN_NEXT_FOOTNOTE;
- else if (rSh.GotoPrevFtnAnchor())
- nFuncId = FN_PREV_FOOTNOTE;
- }
- bFocusToDoc = sal_True;
- }
- break;
-
- case FN_SELECT_SET_AUTO_BOOKMARK:
- MakeMark();
- break;
- case FN_ITEM_DOWN:
- case FN_ITEM_UP:
- case FN_ITEM_LEFT:
- case FN_ITEM_RIGHT:
- case FN_GLOBAL_EDIT:
- {
- if(IsGlobalMode())
- aGlobalTree.ExecCommand(nCurrItemId);
- else
- aContentTree.ExecCommand(nCurrItemId, bOutlineWithChilds);
- }
- break;
- case FN_GLOBAL_SWITCH:
- {
- ToggleTree();
- pConfig->SetGlobalActive(IsGlobalMode());
- }
- break;
- case FN_GLOBAL_SAVE_CONTENT:
- {
- sal_Bool bSave = rSh.IsGlblDocSaveLinks();
- rSh.SetGlblDocSaveLinks( !bSave );
- pBox->CheckItem(FN_GLOBAL_SAVE_CONTENT, !bSave );
- }
- break;
- }
-
- if (nFuncId)
- {
- lcl_UnSelectFrm(&rSh);
- }
- if(bFocusToDoc)
- pView->GetEditWin().GrabFocus();
- return sal_True;
-}
-/*------------------------------------------------------------------------
- Beschreibung: ClickHandler der Toolboxen
-------------------------------------------------------------------------*/
-
-
-IMPL_LINK( SwNavigationPI, ToolBoxClickHdl, ToolBox *, pBox )
-{
- const sal_uInt16 nCurrItemId = pBox->GetCurItemId();
- switch (nCurrItemId)
- {
- case FN_GLOBAL_UPDATE:
- case FN_GLOBAL_OPEN:
- {
- aGlobalTree.TbxMenuHdl(nCurrItemId, pBox);
- }
- break;
- }
-
- return sal_True;
-}
-
-IMPL_LINK( SwNavigationPI, ToolBoxDropdownClickHdl, ToolBox*, pBox )
-{
- const sal_uInt16 nCurrItemId = pBox->GetCurItemId();
- switch (nCurrItemId)
- {
- case FN_CREATE_NAVIGATION:
- {
- CreateNavigationTool(pBox->GetItemRect(FN_CREATE_NAVIGATION), sal_True);
- }
- break;
-
- case FN_DROP_REGION:
- {
- static const char* aHIDs[] =
- {
- HID_NAVI_DRAG_HYP,
- HID_NAVI_DRAG_LINK,
- HID_NAVI_DRAG_COPY,
- };
- PopupMenu *pMenu = new PopupMenu;
- for (sal_uInt16 i = 0; i <= REGION_MODE_EMBEDDED; i++)
- {
- pMenu->InsertItem( i + 1, aContextArr[i] );
- pMenu->SetHelpId(i + 1, aHIDs[i]);
- }
- pMenu->CheckItem( nRegionMode + 1 );
- pMenu->SetSelectHdl(LINK(this, SwNavigationPI, MenuSelectHdl));
- pBox->SetItemDown( nCurrItemId, sal_True );
- pMenu->Execute( pBox,
- pBox->GetItemRect(FN_DROP_REGION),
- POPUPMENU_EXECUTE_DOWN );
- pBox->SetItemDown( nCurrItemId, sal_False );
- pBox->EndSelection();
- delete pMenu;
- pBox->Invalidate();
- }
- break;
- case FN_OUTLINE_LEVEL:
- {
- PopupMenu *pMenu = new PopupMenu;
- for (sal_uInt16 i = 101; i <= 100 + MAXLEVEL; i++)
- {
- pMenu->InsertItem( i, String::CreateFromInt32(i - 100) );
- pMenu->SetHelpId( i, HID_NAVI_OUTLINES );
- }
- pMenu->CheckItem( aContentTree.GetOutlineLevel() + 100 );
- pMenu->SetSelectHdl(LINK(this, SwNavigationPI, MenuSelectHdl));
- pBox->SetItemDown( nCurrItemId, sal_True );
- pMenu->Execute( pBox,
- pBox->GetItemRect(FN_OUTLINE_LEVEL),
- POPUPMENU_EXECUTE_DOWN );
- pBox->SetItemDown( nCurrItemId, sal_False );
- delete pMenu;
- pBox->EndSelection();
- pBox->Invalidate();
- }
- break;
- }
- return sal_True;
-}
-
-
-SwNavHelpToolBox::SwNavHelpToolBox(SwNavigationPI* pParent, const ResId &rResId) :
- SwHelpToolBox(pParent, rResId)
-{}
-
-void SwNavHelpToolBox::MouseButtonDown(const MouseEvent &rEvt)
-{
- if(rEvt.GetButtons() == MOUSE_LEFT &&
- FN_CREATE_NAVIGATION == GetItemId(rEvt.GetPosPixel()))
- {
- ((SwNavigationPI*)GetParent())->CreateNavigationTool(GetItemRect(FN_CREATE_NAVIGATION), sal_False);
- }
- else
- SwHelpToolBox::MouseButtonDown(rEvt);
-}
-
-void SwNavigationPI::CreateNavigationTool(const Rectangle& rRect, sal_Bool bSetFocus)
-{
- Reference< XFrame > xFrame = GetCreateView()->GetViewFrame()->GetFrame().GetFrameInterface();
- SwScrollNaviPopup* pPopup = new
- SwScrollNaviPopup(FN_SCROLL_NAVIGATION,
- xFrame );
-
- Rectangle aRect(rRect);
- Point aT1 = aRect.TopLeft();
- aT1 = pPopup->GetParent()->OutputToScreenPixel(pPopup->GetParent()->AbsoluteScreenToOutputPixel(aContentToolBox.OutputToAbsoluteScreenPixel(aT1)));
- aRect.SetPos(aT1);
- pPopup->StartPopupMode(aRect, FLOATWIN_POPUPMODE_RIGHT|FLOATWIN_POPUPMODE_ALLOWTEAROFF);
- SetPopupWindow( pPopup );
- if(bSetFocus)
- {
- pPopup->EndPopupMode(FLOATWIN_POPUPMODEEND_TEAROFF);
- pPopup->GrabFocus();
- }
-}
-
-void SwNavHelpToolBox::RequestHelp( const HelpEvent& rHEvt )
-{
- sal_uInt16 nItemId = GetItemId(ScreenToOutputPixel(rHEvt.GetMousePosPixel()));
- if( FN_UP == nItemId || FN_DOWN == nItemId )
- {
- SetItemText(nItemId, SwScrollNaviPopup::GetQuickHelpText((FN_DOWN == nItemId)));
- }
- SwHelpToolBox::RequestHelp(rHEvt);
-}
-
-/*------------------------------------------------------------------------
- Beschreibung: Action-Handler Edit; wechselt auf die Seite, wenn
- nicht Gliederungssicht angeschaltet ist.
-------------------------------------------------------------------------*/
-
-
-IMPL_LINK( SwNavigationPI, EditAction, NumEditAction *, pEdit )
-{
- SwView *pView = GetCreateView();
- if (pView)
- {
- if(aPageChgTimer.IsActive())
- aPageChgTimer.Stop();
- pCreateView->GetWrtShell().GotoPage((sal_uInt16)pEdit->GetValue(), sal_True);
- pCreateView->GetEditWin().GrabFocus();
- pCreateView->GetViewFrame()->GetBindings().Invalidate(FN_STAT_PAGE);
- }
- return 0;
-}
-
-/*------------------------------------------------------------------------
- Beschreibung: Falls die Seite eingestellt werden kann, wird hier
- das Maximum gesetzt.
-------------------------------------------------------------------------*/
-
-
-IMPL_LINK( SwNavigationPI, EditGetFocus, NumEditAction *, pEdit )
-{
- SwView *pView = GetCreateView();
- if (!pView)
- return 0;
- SwWrtShell &rSh = pView->GetWrtShell();
-
- const sal_uInt16 nPageCnt = rSh.GetPageCnt();
- pEdit->SetMax(nPageCnt);
- pEdit->SetLast(nPageCnt);
- return 0;
-}
-
-sal_Bool SwNavigationPI::Close()
-{
- SfxViewFrame* pVFrame = pCreateView->GetViewFrame();
- pVFrame->GetBindings().Invalidate(SID_NAVIGATOR);
- pVFrame->GetDispatcher()->Execute(SID_NAVIGATOR);
- return sal_True;
-}
-
-/*------------------------------------------------------------------------
- Beschreibung: Setzen einer automatischen Marke
-------------------------------------------------------------------------*/
-
-
-void SwNavigationPI::MakeMark()
-{
- SwView *pView = GetCreateView();
- if (!pView) return;
- SwWrtShell &rSh = pView->GetWrtShell();
- IDocumentMarkAccess* const pMarkAccess = rSh.getIDocumentMarkAccess();
-
- // collect and sort navigator reminder names
- ::std::vector< ::rtl::OUString > vNavMarkNames;
- for(IDocumentMarkAccess::const_iterator_t ppMark = pMarkAccess->getMarksBegin();
- ppMark != pMarkAccess->getMarksEnd();
- ppMark++)
- if( IDocumentMarkAccess::GetType(**ppMark) == IDocumentMarkAccess::NAVIGATOR_REMINDER )
- vNavMarkNames.push_back(ppMark->get()->GetName());
- ::std::sort(vNavMarkNames.begin(), vNavMarkNames.end());
-
- // we are maxed out and delete one
- // nAutoMarkIdx rotates through the available MarkNames
- // this assumes that IDocumentMarkAccess generates Names in ascending order
- if(vNavMarkNames.size() == MAX_MARKS)
- pMarkAccess->deleteMark(pMarkAccess->findMark(vNavMarkNames[nAutoMarkIdx]));
-
- rSh.SetBookmark(KeyCode(), ::rtl::OUString(), ::rtl::OUString(), IDocumentMarkAccess::NAVIGATOR_REMINDER);
- SwView::SetActMark( nAutoMarkIdx );
-
- if(++nAutoMarkIdx == MAX_MARKS)
- nAutoMarkIdx = 0;
-}
-
-void SwNavigationPI::GotoPage()
-{
- if ( pContextWin->GetFloatingWindow() && pContextWin->GetFloatingWindow()->IsRollUp())
- _ZoomIn();
- if(IsGlobalMode())
- ToggleTree();
- UsePage(0);
- GetPageEdit().GrabFocus();
-}
-
-void SwNavigationPI::_ZoomOut()
-{
- if (_IsZoomedIn())
- {
- FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
- bIsZoomedIn = sal_False;
- Size aSz(GetOutputSizePixel());
- aSz.Height() = nZoomOut;
- Size aMinOutSizePixel = ((SfxDockingWindow*)GetParent())->GetMinOutputSizePixel();
- ((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel(Size(
- aMinOutSizePixel.Width(),nZoomOutInit));
- pFloat->SetOutputSizePixel(aSz);
- FillBox();
- if(IsGlobalMode())
- {
- aGlobalTree.ShowTree();
- }
- else
- {
- aContentTree.ShowTree();
- aDocListBox.Show();
- }
- SvLBoxEntry* pFirst = aContentTree.FirstSelected();
- if(pFirst)
- aContentTree.Select(pFirst, sal_True); // toolbox enablen
- pConfig->SetSmall( sal_False );
- aContentToolBox.CheckItem(FN_SHOW_CONTENT_BOX);
- }
-}
-
-void SwNavigationPI::_ZoomIn()
-{
- FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
- if (pFloat &&
- (!_IsZoomedIn() || ( pContextWin->GetFloatingWindow()->IsRollUp())))
- {
- aContentTree.HideTree();
- aDocListBox.Hide();
- aGlobalTree.HideTree();
- bIsZoomedIn = sal_True;
- Size aSz(GetOutputSizePixel());
- if( aSz.Height() > nZoomIn )
- nZoomOut = ( short ) aSz.Height();
-
- aSz.Height() = nZoomIn;
- Size aMinOutSizePixel = ((SfxDockingWindow*)GetParent())->GetMinOutputSizePixel();
- ((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel(Size(
- aMinOutSizePixel.Width(), aSz.Height()));
- pFloat->SetOutputSizePixel(aSz);
- SvLBoxEntry* pFirst = aContentTree.FirstSelected();
- if(pFirst)
- aContentTree.Select(pFirst, sal_True); // toolbox enablen
- pConfig->SetSmall( sal_True );
- aContentToolBox.CheckItem(FN_SHOW_CONTENT_BOX, sal_False);
- }
-}
-
-void SwNavigationPI::Resize()
-{
- Window* pParent = GetParent();
- FloatingWindow* pFloat = ((DockingWindow*)pParent)->GetFloatingWindow();
- Size aNewSize;
- if( !_IsZoomedIn() )
- {
- //change the minimum width depending on the dock status
- Size aMinOutSizePixel = ((SfxDockingWindow*)pParent)->GetMinOutputSizePixel();
- if( pFloat)
- {
- aNewSize = pFloat->GetOutputSizePixel();
- aMinOutSizePixel.Width() = nWishWidth;
- aMinOutSizePixel.Height() = _IsZoomedIn() ? nZoomIn : nZoomOutInit;
- }
- else
- {
- aNewSize = pParent->GetOutputSizePixel();
- aMinOutSizePixel.Width() = 0;
- aMinOutSizePixel.Height() = 0;
- }
- ((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel(aMinOutSizePixel);
-
- const Point aPos = aContentTree.GetPosPixel();
- Point aLBPos = aDocListBox.GetPosPixel();
- long nDist = aPos.X();
- aNewSize.Height() -= (aPos.Y() + aPos.X() + nDocLBIniHeight + nDist);
- aNewSize.Width() -= 2 * nDist;
- aLBPos.Y() = aPos.Y() + aNewSize.Height() + nDist;
- aDocListBox.Show(!aGlobalTree.IsVisible() && aLBPos.Y() > aPos.Y() );
-
- Size aDocLBSz = aDocListBox.GetSizePixel();
- aDocLBSz.Width() = aNewSize.Width();
- if(aNewSize.Height() < 0)
- aDocLBSz.Height() = 0;
- else
- aDocLBSz.Height() = nDocLBIniHeight;
- aContentTree.SetSizePixel(aNewSize);
- // GlobalTree faengt weiter oben an und reicht bis ganz unten
- aNewSize.Height() += (nDist + nDocLBIniHeight + aPos.Y() - aGlobalTree.GetPosPixel().Y());
- aGlobalTree.SetSizePixel(aNewSize);
- aDocListBox.SetPosSizePixel( aLBPos.X(), aLBPos.Y(),
- aDocLBSz.Width(), aDocLBSz.Height(),
- WINDOW_POSSIZE_X|WINDOW_POSSIZE_Y|WINDOW_POSSIZE_WIDTH);
-
- }
-}
-
-SwNavigationPI::SwNavigationPI( SfxBindings* _pBindings,
- SfxChildWindowContext* pCw,
- Window* pParent) :
-
- Window( pParent, SW_RES(DLG_NAVIGATION_PI)),
- SfxControllerItem( SID_DOCFULLNAME, *_pBindings ),
-
- aContentToolBox(this, SW_RES(TB_CONTENT)),
- aGlobalToolBox(this, SW_RES(TB_GLOBAL)),
- aContentImageList(SW_RES(IL_CONTENT)),
- aContentTree(this, SW_RES(TL_CONTENT)),
- aGlobalTree(this, SW_RES(TL_GLOBAL)),
- aDocListBox(this, SW_RES(LB_DOCS)),
-
- pxObjectShell(0),
- pContentView(0),
- pContentWrtShell(0),
- pActContView(0),
- pCreateView(0),
- pPopupWindow(0),
- pFloatingWindow(0),
-
- pContextWin(pCw),
-
- pConfig(SW_MOD()->GetNavigationConfig()),
- rBindings(*_pBindings),
-
- nWishWidth(0),
- nAutoMarkIdx(1),
- nRegionMode(REGION_MODE_NONE),
-
- bSmallMode(sal_False),
- bIsZoomedIn(sal_False),
- bPageCtrlsVisible(sal_False),
- bGlobalMode(sal_False)
-{
- GetCreateView();
- InitImageList();
-
- aContentToolBox.SetHelpId(HID_NAVIGATOR_TOOLBOX );
- aGlobalToolBox.SetHelpId(HID_NAVIGATOR_GLOBAL_TOOLBOX);
- aDocListBox.SetHelpId(HID_NAVIGATOR_LISTBOX );
-
- nDocLBIniHeight = aDocListBox.GetSizePixel().Height();
- nZoomOutInit = nZoomOut = Resource::ReadShortRes();
-
- //NumericField in die Toolbox einfuegen
- NumEditAction* pEdit = new NumEditAction(
- &aContentToolBox, SW_RES(NF_PAGE ));
- pEdit->SetActionHdl(LINK(this, SwNavigationPI, EditAction));
- pEdit->SetGetFocusHdl(LINK(this, SwNavigationPI, EditGetFocus));
- pEdit->SetAccessibleName(pEdit->GetQuickHelpText());
- pEdit->SetUpHdl(LINK(this, SwNavigationPI, PageEditModifyHdl));
- pEdit->SetDownHdl(LINK(this, SwNavigationPI, PageEditModifyHdl));
-
- bPageCtrlsVisible = sal_True;
-
- //doppelte Separatoren sind nicht erlaubt, also muss
- //die passende Groesse anders ermittelt werden
- Rectangle aFirstRect = aContentToolBox.GetItemRect(FN_SELECT_FOOTNOTE);
- Rectangle aSecondRect = aContentToolBox.GetItemRect(FN_SELECT_HEADER);
- sal_uInt16 nWidth = sal_uInt16(aFirstRect.Left() - aSecondRect.Left());
-
- Size aItemWinSize( nWidth , aFirstRect.Bottom() - aFirstRect.Top() );
- pEdit->SetSizePixel(aItemWinSize);
- aContentToolBox.InsertSeparator(4);
- aContentToolBox.InsertWindow( FN_PAGENUMBER, pEdit, 0, 4);
- aContentToolBox.InsertSeparator(4);
- aContentToolBox.SetHelpId(FN_PAGENUMBER, HID_NAVI_TBX16);
- aContentToolBox.ShowItem( FN_PAGENUMBER );
-
- for( sal_uInt16 i = 0; i <= REGION_MODE_EMBEDDED; i++ )
- {
- aContextArr[i] = SW_RESSTR(ST_HYPERLINK + i);
- aStatusArr[i] = SW_RESSTR(ST_STATUS_FIRST + i);
- }
- aStatusArr[3] = SW_RESSTR(ST_ACTIVE_VIEW);
- FreeResource();
-
-
- const Size& rOutSize = GetOutputSizePixel();
-
- nZoomIn = (short)rOutSize.Height();
-
- // Make sure the toolbox has a size that fits all its contents
- Size aContentToolboxSize( aContentToolBox.CalcWindowSizePixel() );
- aContentToolBox.SetOutputSizePixel( aContentToolboxSize );
-
- // position listbox below toolbar and add some space
- long nListboxYPos = aContentToolBox.GetPosPixel().Y() + aContentToolboxSize.Height() + 4;
-
- //Der linke und rechte Rand um die Toolboxen soll gleich sein
- nWishWidth = aContentToolboxSize.Width();
- nWishWidth += 2 * aContentToolBox.GetPosPixel().X();
-
- FloatingWindow* pFloat = ((DockingWindow*)pParent)->GetFloatingWindow();
- Size aMinSize(pFloat ? nWishWidth : 0, pFloat ? nZoomOutInit : 0);
- ((SfxDockingWindow*)pParent)->SetMinOutputSizePixel(aMinSize);
- SetOutputSizePixel( Size( nWishWidth, nZoomOutInit));
- Size aTmpParentSize(((SfxDockingWindow*)pParent)->GetSizePixel());
- if(
- (
- aTmpParentSize.Width() < aMinSize.Width() ||
- aTmpParentSize.Height() < aMinSize.Height()
- )
- &&
- ((SfxDockingWindow*)pParent)->GetFloatingWindow() &&
- !((SfxDockingWindow*)pParent)->GetFloatingWindow()->IsRollUp()
- )
- ((SfxDockingWindow*)pParent)->SetOutputSizePixel(aMinSize);
-
- aContentTree.SetPosSizePixel( 0, nListboxYPos, 0, 0, WINDOW_POSSIZE_Y );
- aContentTree.SetStyle( aContentTree.GetStyle()|WB_HASBUTTONS|WB_HASBUTTONSATROOT|
- WB_CLIPCHILDREN|WB_HSCROLL|WB_FORCE_MAKEVISIBLE );
- aContentTree.SetSpaceBetweenEntries(3);
- aContentTree.SetSelectionMode( SINGLE_SELECTION );
- aContentTree.SetDragDropMode( SV_DRAGDROP_CTRL_MOVE |
- SV_DRAGDROP_CTRL_COPY |
- SV_DRAGDROP_ENABLE_TOP );
- aContentTree.EnableAsyncDrag(sal_True);
- aContentTree.ShowTree();
- aContentToolBox.CheckItem(FN_SHOW_CONTENT_BOX, sal_True);
-
-// TreeListBox fuer Globaldokument
- aGlobalTree.SetPosSizePixel( 0, nListboxYPos, 0, 0, WINDOW_POSSIZE_Y );
- aGlobalTree.SetSelectionMode( MULTIPLE_SELECTION );
- aGlobalTree.SetStyle( aGlobalTree.GetStyle()|WB_HASBUTTONS|WB_HASBUTTONSATROOT|
- WB_CLIPCHILDREN|WB_HSCROLL );
- Size aGlblSize(aGlobalToolBox.CalcWindowSizePixel());
- aGlobalToolBox.SetSizePixel(aGlblSize);
-
-// Handler
-
- Link aLk = LINK(this, SwNavigationPI, ToolBoxSelectHdl);
- aContentToolBox.SetSelectHdl( aLk );
- aGlobalToolBox.SetSelectHdl( aLk );
- aDocListBox.SetSelectHdl(LINK(this, SwNavigationPI,
- DocListBoxSelectHdl));
- aContentToolBox.SetClickHdl( LINK(this, SwNavigationPI, ToolBoxClickHdl) );
- aContentToolBox.SetDropdownClickHdl( LINK(this, SwNavigationPI, ToolBoxDropdownClickHdl) );
- aGlobalToolBox.SetClickHdl( LINK(this, SwNavigationPI, ToolBoxClickHdl) );
- aGlobalToolBox.SetDropdownClickHdl( LINK(this, SwNavigationPI, ToolBoxDropdownClickHdl) );
- aGlobalToolBox.CheckItem(FN_GLOBAL_SWITCH, sal_True);
-
- Font aFont(GetFont());
- aFont.SetWeight(WEIGHT_NORMAL);
- GetPageEdit().SetFont(aFont);
- aFont = aContentTree.GetFont();
- aFont.SetWeight(WEIGHT_NORMAL);
- aContentTree.SetFont(aFont);
- aGlobalTree.SetFont(aFont);
-
- StartListening(*SFX_APP());
- if ( pCreateView )
- StartListening(*pCreateView);
- SfxImageManager* pImgMan = SfxImageManager::GetImageManager( SW_MOD() );
- pImgMan->RegisterToolBox(&aContentToolBox, SFX_TOOLBOX_CHANGEOUTSTYLE);
- pImgMan->RegisterToolBox(&aGlobalToolBox, SFX_TOOLBOX_CHANGEOUTSTYLE);
-
- aContentToolBox.SetItemBits( FN_CREATE_NAVIGATION, aContentToolBox.GetItemBits( FN_CREATE_NAVIGATION ) | TIB_DROPDOWNONLY );
- aContentToolBox.SetItemBits( FN_DROP_REGION, aContentToolBox.GetItemBits( FN_DROP_REGION ) | TIB_DROPDOWNONLY );
- aContentToolBox.SetItemBits( FN_OUTLINE_LEVEL, aContentToolBox.GetItemBits( FN_OUTLINE_LEVEL ) | TIB_DROPDOWNONLY );
-
- if(IsGlobalDoc())
- {
- SwView *pActView = GetCreateView();
- aGlobalToolBox.CheckItem(FN_GLOBAL_SAVE_CONTENT,
- pActView->GetWrtShellPtr()->IsGlblDocSaveLinks());
- if(pConfig->IsGlobalActive())
- ToggleTree();
- aGlobalTree.GrabFocus();
- }
- else
- aContentTree.GrabFocus();
- UsePage(0);
- aPageChgTimer.SetTimeoutHdl(LINK(this, SwNavigationPI, ChangePageHdl));
- aPageChgTimer.SetTimeout(PAGE_CHANGE_TIMEOUT);
-
- aContentTree.SetAccessibleName(SW_RESSTR(STR_ACCESS_TL_CONTENT));
- aGlobalTree.SetAccessibleName(SW_RESSTR(STR_ACCESS_TL_GLOBAL));
- aDocListBox.SetAccessibleName(aStatusArr[3]);
-}
-
-SwNavigationPI::~SwNavigationPI()
-{
- if(IsGlobalDoc() && !IsGlobalMode())
- {
- SwView *pView = GetCreateView();
- SwWrtShell &rSh = pView->GetWrtShell();
- if( !rSh.IsAllProtect() )
- pView->GetDocShell()->SetReadOnlyUI(sal_False);
- }
-
- EndListening(*SFX_APP());
-
- SfxImageManager* pImgMan = SfxImageManager::GetImageManager( SW_MOD() );
- pImgMan->ReleaseToolBox(&aContentToolBox);
- pImgMan->ReleaseToolBox(&aGlobalToolBox);
- delete aContentToolBox.GetItemWindow(FN_PAGENUMBER);
- aContentToolBox.Clear();
- if(pxObjectShell)
- {
- if(pxObjectShell->Is())
- (*pxObjectShell)->DoClose();
- delete pxObjectShell;
- }
- delete pPopupWindow;
- delete pFloatingWindow;
-
- if ( IsBound() )
- rBindings.Release(*this);
-}
-
-void SwNavigationPI::SetPopupWindow( SfxPopupWindow* pWindow )
-{
- pPopupWindow = pWindow;
- pPopupWindow->SetPopupModeEndHdl( LINK( this, SwNavigationPI, PopupModeEndHdl ));
- pPopupWindow->SetDeleteLink_Impl( LINK( this, SwNavigationPI, ClosePopupWindow ));
-}
-
-IMPL_LINK( SwNavigationPI, PopupModeEndHdl, void *, EMPTYARG )
-{
- if ( pPopupWindow->IsVisible() )
- {
- // Replace floating window with popup window and destroy
- // floating window instance.
- delete pFloatingWindow;
- pFloatingWindow = pPopupWindow;
- pPopupWindow = 0;
- }
- else
- {
- // Popup window has been closed by the user. No replacement, instance
- // will destroy itself.
- pPopupWindow = 0;
- }
-
- return 1;
-}
-
-IMPL_LINK( SwNavigationPI, ClosePopupWindow, SfxPopupWindow *, pWindow )
-{
- if ( pWindow == pFloatingWindow )
- pFloatingWindow = 0;
- else
- pPopupWindow = 0;
-
- return 1;
-}
-
-void SwNavigationPI::StateChanged( sal_uInt16 nSID, SfxItemState /*eState*/,
- const SfxPoolItem* /*pState*/ )
-{
- if(nSID == SID_DOCFULLNAME)
- {
- SwView *pActView = GetCreateView();
- if(pActView)
- {
- SwWrtShell* pWrtShell = pActView->GetWrtShellPtr();
- aContentTree.SetActiveShell(pWrtShell);
- sal_Bool bGlobal = IsGlobalDoc();
- aContentToolBox.EnableItem(FN_GLOBAL_SWITCH, bGlobal);
- if( (!bGlobal && IsGlobalMode()) ||
- (!IsGlobalMode() && pConfig->IsGlobalActive()) )
- {
- ToggleTree();
- }
- if(bGlobal)
- {
- aGlobalToolBox.CheckItem(FN_GLOBAL_SAVE_CONTENT, pWrtShell->IsGlblDocSaveLinks());
- }
- }
- else
- {
- aContentTree.SetActiveShell(0);
- }
- UpdateListBox();
- }
-}
-
-/*------------------------------------------------------------------------
- Bechreibung: NumericField aus der Toolbox holen
-------------------------------------------------------------------------*/
-
-NumEditAction& SwNavigationPI::GetPageEdit()
-{
- return *(NumEditAction*)aContentToolBox.GetItemWindow(FN_PAGENUMBER);
-}
-
-SfxChildAlignment SwNavigationPI::CheckAlignment
- (
- SfxChildAlignment eActAlign,
- SfxChildAlignment eAlign
- )
-{
-SfxChildAlignment eRetAlign;
-
- if(_IsZoomedIn())
- eRetAlign = SFX_ALIGN_NOALIGNMENT;
- else
- switch (eAlign)
- {
- case SFX_ALIGN_BOTTOM:
- case SFX_ALIGN_LOWESTBOTTOM:
- case SFX_ALIGN_HIGHESTBOTTOM:
- eRetAlign = eActAlign;
- break;
-
- case SFX_ALIGN_TOP:
- case SFX_ALIGN_HIGHESTTOP:
- case SFX_ALIGN_LOWESTTOP:
- case SFX_ALIGN_LEFT:
- case SFX_ALIGN_RIGHT:
- case SFX_ALIGN_FIRSTLEFT:
- case SFX_ALIGN_LASTLEFT:
- case SFX_ALIGN_FIRSTRIGHT:
- case SFX_ALIGN_LASTRIGHT:
- eRetAlign = eAlign;
- break;
-
- default:
- eRetAlign = eAlign;
- break;
- }
- return eRetAlign;
-
-}
-
-/*--------------------------------------------------------------------
- Beschreibung: Benachrichtigung bei geaenderter DocInfo
- --------------------------------------------------------------------*/
-
-void SwNavigationPI::Notify( SfxBroadcaster& rBrdc, const SfxHint& rHint )
-{
- if(&rBrdc == pCreateView)
- {
- if(rHint.ISA(SfxSimpleHint) && ((SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING)
- {
- pCreateView = 0;
- }
- }
- else
- {
- if(rHint.ISA(SfxEventHint))
- {
- if( pxObjectShell &&
- ((SfxEventHint&) rHint).GetEventId() == SFX_EVENT_CLOSEAPP)
- {
- DELETEZ(pxObjectShell);
- }
- else if(((SfxEventHint&) rHint).GetEventId() == SFX_EVENT_OPENDOC)
- {
-
- SwView *pActView = GetCreateView();
- if(pActView)
- {
- SwWrtShell* pWrtShell = pActView->GetWrtShellPtr();
- aContentTree.SetActiveShell(pWrtShell);
- if(aGlobalTree.IsVisible())
- {
- if(aGlobalTree.Update( sal_False ))
- aGlobalTree.Display();
- else
- // wenn kein Update notwendig, dann zumindest painten
- // wg. der roten Eintraege fuer broken links
- aGlobalTree.Invalidate();
- }
- }
- }
- }
- }
-}
-
-IMPL_LINK( SwNavigationPI, MenuSelectHdl, Menu *, pMenu )
-{
- sal_uInt16 nMenuId = pMenu->GetCurItemId();
- if(nMenuId != USHRT_MAX)
- {
- if(nMenuId < 100)
- SetRegionDropMode( --nMenuId);
- else
- aContentTree.SetOutlineLevel( static_cast< sal_uInt8 >(nMenuId - 100) );
- }
- return 0;
-}
-
-void SwNavigationPI::UpdateListBox()
-{
- aDocListBox.SetUpdateMode(sal_False);
- aDocListBox.Clear();
- SwView *pActView = GetCreateView();
- sal_Bool bDisable = pActView == 0;
- SwView *pView = SwModule::GetFirstView();
- sal_uInt16 nCount = 0;
- sal_uInt16 nAct = 0;
- sal_uInt16 nConstPos = 0;
- const SwView* pConstView = aContentTree.IsConstantView() &&
- aContentTree.GetActiveWrtShell() ?
- &aContentTree.GetActiveWrtShell()->GetView():
- 0;
- while (pView)
- {
- SfxObjectShell* pDoc = pView->GetDocShell();
- // #i53333# don't show help pages here
- if ( !pDoc->IsHelpDocument() )
- {
- String sEntry = pDoc->GetTitle();
- sEntry += C2S(" (");
- if (pView == pActView)
- {
- nAct = nCount;
- sEntry += aStatusArr[ST_ACTIVE - ST_STATUS_FIRST];
- }
- else
- sEntry += aStatusArr[ST_INACTIVE - ST_STATUS_FIRST];
- sEntry += ')';
- aDocListBox.InsertEntry(sEntry);
-
-
- if (pConstView && pView == pConstView)
- nConstPos = nCount;
-
- nCount++;
- }
- pView = SwModule::GetNextView(pView);
- }
- aDocListBox.InsertEntry(aStatusArr[3]); //"Aktives Fenster"
- nCount++;
-
- if(aContentTree.GetHiddenWrtShell())
- {
- String sEntry = aContentTree.GetHiddenWrtShell()->GetView().
- GetDocShell()->GetTitle();
- sEntry += C2S(" (");
- sEntry += aStatusArr[ST_HIDDEN - ST_STATUS_FIRST];
- sEntry += ')';
- aDocListBox.InsertEntry(sEntry);
- bDisable = sal_False;
- }
- if(aContentTree.IsActiveView())
- {
- //entweder den Namen des akt. Docs oder "Aktives Dokument"
- sal_uInt16 nTmp = pActView ? nAct : --nCount;
- aDocListBox.SelectEntryPos( nTmp );
- }
- else if(aContentTree.IsHiddenView())
- {
- aDocListBox.SelectEntryPos(nCount);
- }
- else
- aDocListBox.SelectEntryPos(nConstPos);
-
- aDocListBox.Enable( !bDisable );
- aDocListBox.SetUpdateMode(sal_True);
-}
-
-IMPL_LINK(SwNavigationPI, DoneLink, SfxPoolItem *, pItem)
-{
- const SfxViewFrameItem* pFrameItem = PTR_CAST(SfxViewFrameItem, pItem );
- if( pFrameItem )
- {
- SfxViewFrame* pFrame = pFrameItem->GetFrame();
- if(pFrame)
- {
- aContentTree.Clear();
- pContentView = PTR_CAST(SwView, pFrame->GetViewShell());
- OSL_ENSURE(pContentView, "no SwView");
- if(pContentView)
- pContentWrtShell = pContentView->GetWrtShellPtr();
- else
- pContentWrtShell = 0;
- pxObjectShell = new SfxObjectShellLock(pFrame->GetObjectShell());
- FillBox();
- aContentTree.Update();
- }
- }
- return 0;
-}
-
-String SwNavigationPI::CreateDropFileName( TransferableDataHelper& rData )
-{
- String sFileName;
- sal_uLong nFmt;
- if( rData.HasFormat( nFmt = FORMAT_FILE_LIST ))
- {
- FileList aFileList;
- rData.GetFileList( nFmt, aFileList );
- sFileName = aFileList.GetFile( 0 );
- }
- else if( rData.HasFormat( nFmt = FORMAT_STRING ) ||
- rData.HasFormat( nFmt = FORMAT_FILE ) ||
- rData.HasFormat( nFmt = SOT_FORMATSTR_ID_FILENAME ))
- rData.GetString( nFmt, sFileName );
- else if( rData.HasFormat( nFmt = SOT_FORMATSTR_ID_SOLK ) ||
- rData.HasFormat( nFmt = SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK )||
- rData.HasFormat( nFmt = SOT_FORMATSTR_ID_FILECONTENT ) ||
- rData.HasFormat( nFmt = SOT_FORMATSTR_ID_FILEGRPDESCRIPTOR ) ||
- rData.HasFormat( nFmt = SOT_FORMATSTR_ID_UNIFORMRESOURCELOCATOR ))
- {
- INetBookmark aBkmk( aEmptyStr, aEmptyStr );
- rData.GetINetBookmark( nFmt, aBkmk );
- sFileName = aBkmk.GetURL();
- }
- if( sFileName.Len() )
- {
- sFileName = INetURLObject( sFileName ).GetMainURL( INetURLObject::NO_DECODE );
- }
- return sFileName;
-}
-
-sal_Int8 SwNavigationPI::AcceptDrop( const AcceptDropEvent& /*rEvt*/ )
-{
- return ( !aContentTree.IsInDrag() &&
- ( aContentTree.IsDropFormatSupported( FORMAT_FILE ) ||
- aContentTree.IsDropFormatSupported( FORMAT_STRING ) ||
- aContentTree.IsDropFormatSupported( SOT_FORMATSTR_ID_SOLK ) ||
- aContentTree.IsDropFormatSupported( SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK )||
- aContentTree.IsDropFormatSupported( SOT_FORMATSTR_ID_FILECONTENT ) ||
- aContentTree.IsDropFormatSupported( SOT_FORMATSTR_ID_FILEGRPDESCRIPTOR ) ||
- aContentTree.IsDropFormatSupported( SOT_FORMATSTR_ID_UNIFORMRESOURCELOCATOR ) ||
- aContentTree.IsDropFormatSupported( SOT_FORMATSTR_ID_FILENAME )))
- ? DND_ACTION_COPY
- : DND_ACTION_NONE;
-}
-
-sal_Int8 SwNavigationPI::ExecuteDrop( const ExecuteDropEvent& rEvt )
-{
- TransferableDataHelper aData( rEvt.maDropEvent.Transferable );
- sal_Int8 nRet = DND_ACTION_NONE;
- String sFileName;
- if( !aContentTree.IsInDrag() &&
- 0 != (sFileName = SwNavigationPI::CreateDropFileName( aData )).Len() )
- {
- INetURLObject aTemp( sFileName );
- GraphicDescriptor aDesc( aTemp );
- if( !aDesc.Detect() ) // keine Grafiken annehmen
- {
- if( STRING_NOTFOUND == sFileName.Search('#')
- && (!sContentFileName.Len() || sContentFileName != sFileName ))
- {
- nRet = rEvt.mnAction;
- sFileName.EraseTrailingChars( char(0) );
- sContentFileName = sFileName;
- if(pxObjectShell)
- {
- aContentTree.SetHiddenShell( 0 );
- (*pxObjectShell)->DoClose();
- DELETEZ( pxObjectShell);
- }
- SfxStringItem aFileItem(SID_FILE_NAME, sFileName );
- String sOptions = C2S("HRC");
- SfxStringItem aOptionsItem( SID_OPTIONS, sOptions );
- SfxLinkItem aLink( SID_DONELINK,
- LINK( this, SwNavigationPI, DoneLink ) );
- GetActiveView()->GetViewFrame()->GetDispatcher()->Execute(
- SID_OPENDOC, SFX_CALLMODE_ASYNCHRON,
- &aFileItem, &aOptionsItem, &aLink, 0L );
- }
- }
- }
- return nRet;
-}
-
-void SwNavigationPI::SetRegionDropMode(sal_uInt16 nNewMode)
-{
- nRegionMode = nNewMode;
- pConfig->SetRegionMode( nRegionMode );
-
- sal_uInt16 nDropId = FN_DROP_REGION;
- if(nRegionMode == REGION_MODE_LINK)
- nDropId = FN_DROP_REGION_LINK;
- else if(nRegionMode == REGION_MODE_EMBEDDED)
- nDropId = FN_DROP_REGION_COPY;
-
- ImageList& rImgLst = aContentImageList;
-
- aContentToolBox.SetItemImage( FN_DROP_REGION, rImgLst.GetImage(nDropId));
-}
-
-
-sal_Bool SwNavigationPI::ToggleTree()
-{
- sal_Bool bRet = sal_True;
- sal_Bool bGlobalDoc = IsGlobalDoc();
- if(!IsGlobalMode() && bGlobalDoc)
- {
- SetUpdateMode(sal_False);
- if(_IsZoomedIn())
- _ZoomOut();
- aGlobalTree.ShowTree();
- aGlobalToolBox.Show();
- aContentTree.HideTree();
- aContentToolBox.Hide();
- aDocListBox.Hide();
- SetGlobalMode(sal_True);
- SetUpdateMode(sal_True);
- }
- else
- {
- aGlobalTree.HideTree();
- aGlobalToolBox.Hide();
- if(!_IsZoomedIn())
- {
- aContentTree.ShowTree();
- aContentToolBox.Show();
- aDocListBox.Show();
- }
- bRet = sal_False;
- SetGlobalMode(sal_False);
- }
- return bRet;
-}
-
-sal_Bool SwNavigationPI::IsGlobalDoc() const
-{
- sal_Bool bRet = sal_False;
- SwView *pView = GetCreateView();
- if(pView)
- {
- SwWrtShell &rSh = pView->GetWrtShell();
- bRet = rSh.IsGlobalDoc();
- }
- return bRet;
-}
-
-IMPL_LINK( SwNavigationPI, ChangePageHdl, Timer*, EMPTYARG )
-{
- EditAction(&GetPageEdit());
- GetPageEdit().GrabFocus();
- return 0;
-}
-
-IMPL_LINK( SwNavigationPI, PageEditModifyHdl, Edit*, EMPTYARG )
-{
- if(aPageChgTimer.IsActive())
- aPageChgTimer.Stop();
- aPageChgTimer.Start();
- return 0;
-}
-
-SwView* SwNavigationPI::GetCreateView() const
-{
- if(!pCreateView)
- {
- SwView* pView = SwModule::GetFirstView();
- while(pView)
- {
- if(&pView->GetViewFrame()->GetBindings() == &rBindings)
- {
- ((SwNavigationPI*)this)->pCreateView = pView;
- ((SwNavigationPI*)this)->StartListening(*pCreateView);
- break;
- }
- pView = SwModule::GetNextView(pView);
- }
- }
- return pCreateView;
-}
-
-SwNavigationChild::SwNavigationChild( Window* pParent,
- sal_uInt16 nId,
- SfxBindings* _pBindings,
- SfxChildWinInfo* pInfo )
- : SfxChildWindowContext( nId )
-{
- SwNavigationPI* pNavi = new SwNavigationPI( _pBindings, this, pParent );
- SetWindow( pNavi );
- _pBindings->Invalidate(SID_NAVIGATOR);
- String sExtra = pInfo->aExtraString;
-
- SwNavigationConfig* pNaviConfig = SW_MOD()->GetNavigationConfig();
-
- sal_uInt16 nRootType = static_cast< sal_uInt16 >( pNaviConfig->GetRootType() );
- if( nRootType < CONTENT_TYPE_MAX )
- {
- pNavi->aContentTree.SetRootType(nRootType);
- pNavi->aContentToolBox.CheckItem(FN_SHOW_ROOT, sal_True);
- }
- pNavi->aContentTree.SetOutlineLevel( static_cast< sal_uInt8 >( pNaviConfig->GetOutlineLevel() ) );
- pNavi->SetRegionDropMode( static_cast< sal_uInt16 >( pNaviConfig->GetRegionMode() ) );
-
- if(GetFloatingWindow() && pNaviConfig->IsSmall())
- {
- pNavi->_ZoomIn();
- }
-}
-
-void SwNavigationPI::DataChanged( const DataChangedEvent& rDCEvt )
-{
- Window::DataChanged( rDCEvt );
- if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
- (rDCEvt.GetFlags() & SETTINGS_STYLE) )
- {
- InitImageList();
- const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
- Color aBgColor = rStyleSettings.GetFaceColor();
- Wallpaper aBack( aBgColor );
- SetBackground( aBack );
- }
-}
-
-void SwNavigationPI::InitImageList()
-{
- sal_uInt16 k;
-
- ImageList& rImgLst = aContentImageList;
- for( k = 0; k < aContentToolBox.GetItemCount(); k++)
- aContentToolBox.SetItemImage(aContentToolBox.GetItemId(k),
- rImgLst.GetImage(aContentToolBox.GetItemId(k)));
-
- for( k = 0; k < aGlobalToolBox.GetItemCount(); k++)
- aGlobalToolBox.SetItemImage(aGlobalToolBox.GetItemId(k),
- rImgLst.GetImage(aGlobalToolBox.GetItemId(k)));
-
- sal_uInt16 nDropId = FN_DROP_REGION;
- if(nRegionMode == REGION_MODE_LINK)
- nDropId = FN_DROP_REGION_LINK;
- else if(nRegionMode == REGION_MODE_EMBEDDED)
- nDropId = FN_DROP_REGION_COPY;
- aContentToolBox.SetItemImage( FN_DROP_REGION,
- rImgLst.GetImage(nDropId));
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */