| /************************************************************** |
| * |
| * 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_sd.hxx" |
| |
| #include <sfx2/msg.hxx> |
| #include <sfx2/app.hxx> |
| #include <sfx2/sfxsids.hrc> |
| #include <sfx2/request.hxx> |
| #include <sfx2/objface.hxx> |
| #include <sfx2/viewfrm.hxx> |
| #include <sfx2/dispatch.hxx> |
| #include <sfx2/msgpool.hxx> |
| #include <sfx2/sidebar/EnumContext.hxx> |
| #include <svl/whiter.hxx> |
| #include <svl/itempool.hxx> |
| #include <svx/svdomedia.hxx> |
| #include <svx/sdr/contact/viewcontactofsdrmediaobj.hxx> |
| #include <svx/svxdlg.hxx> |
| #include <svx/dialogs.hrc> |
| #include <svx/svxids.hrc> |
| |
| #include "app.hrc" |
| #include "res_bmp.hrc" |
| #include "glob.hrc" |
| #include "strings.hrc" |
| #include "DrawDocShell.hxx" |
| #include "ViewShell.hxx" |
| #include "Window.hxx" |
| #include "drawview.hxx" |
| #include "sdresid.hxx" |
| #include "drawdoc.hxx" |
| #include "DrawViewShell.hxx" |
| |
| #include "tableobjectbar.hxx" |
| |
| using namespace sd; |
| using namespace sd::ui::table; |
| |
| #define TableObjectBar |
| #include "sdslots.hxx" |
| |
| |
| namespace sd { namespace ui { namespace table { |
| |
| /** creates a table object bar for the given ViewShell */ |
| SfxShell* CreateTableObjectBar( ViewShell& rShell, ::sd::View* pView ) |
| { |
| return new TableObjectBar( &rShell, pView ); |
| } |
| |
| |
| /** registers the interfaces from the table ui */ |
| void RegisterInterfaces(SfxModule* pMod) |
| { |
| TableObjectBar::RegisterInterface(pMod); |
| } |
| |
| // ------------------ |
| // - TableObjectBar - |
| // ------------------ |
| |
| TYPEINIT1( TableObjectBar, SfxShell ); |
| |
| // ----------------------------------------------------------------------------- |
| |
| SFX_IMPL_INTERFACE( TableObjectBar, SfxShell, SdResId( STR_TABLEOBJECTBARSHELL ) ) |
| { |
| } |
| |
| // ----------------------------------------------------------------------------- |
| |
| TableObjectBar::TableObjectBar( ViewShell* pSdViewShell, ::sd::View* pSdView ) |
| : SfxShell( pSdViewShell->GetViewShell() ) |
| , mpView( pSdView ) |
| , mpViewSh( pSdViewShell ) |
| { |
| DrawDocShell* pDocShell = mpViewSh->GetDocSh(); |
| if( pDocShell ) |
| { |
| SetPool( &pDocShell->GetPool() ); |
| SetUndoManager( pDocShell->GetUndoManager() ); |
| } |
| SetRepeatTarget( mpView ); |
| SetHelpId( SD_IF_SDDRAWTABLEOBJECTBAR ); |
| SetName( String( SdResId( RID_DRAW_TABLE_TOOLBOX ) ) ); |
| SetContextName(sfx2::sidebar::EnumContext::GetContextName(sfx2::sidebar::EnumContext::Context_Table)); |
| } |
| |
| // ----------------------------------------------------------------------------- |
| |
| TableObjectBar::~TableObjectBar() |
| { |
| SetRepeatTarget( NULL ); |
| } |
| |
| // ----------------------------------------------------------------------------- |
| |
| void TableObjectBar::GetState( SfxItemSet& rSet ) |
| { |
| bool bReadOnly = false; |
| |
| if( bReadOnly ) |
| { |
| rSet.DisableItem (SID_INSERT_TABLE ); |
| } |
| |
| if( mpView ) |
| { |
| rtl::Reference< sdr::SelectionController > xController( mpView->getSelectionController() ); |
| if( xController.is() ) |
| { |
| xController->GetState( rSet ); |
| } |
| } |
| } |
| |
| // ----------------------------------------------------------------------------- |
| |
| void TableObjectBar::GetAttrState( SfxItemSet& rSet ) |
| { |
| DrawViewShell* pDrawViewShell = dynamic_cast< DrawViewShell* >( mpViewSh ); |
| if( pDrawViewShell ) |
| pDrawViewShell->GetAttrState( rSet ); |
| } |
| |
| // ----------------------------------------------------------------------------- |
| |
| void TableObjectBar::Execute( SfxRequest& rReq ) |
| { |
| if( mpView ) |
| { |
| SdrView* pView = mpView; |
| SfxBindings* pBindings = &mpViewSh->GetViewFrame()->GetBindings(); |
| |
| rtl::Reference< sdr::SelectionController > xController( mpView->getSelectionController() ); |
| sal_uLong nSlotId = rReq.GetSlot(); |
| if( xController.is() ) |
| { |
| switch( nSlotId ) |
| { |
| case SID_TABLE_INSERT_ROW_DLG: |
| case SID_TABLE_INSERT_COL_DLG: |
| { |
| SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); |
| ::std::auto_ptr<SvxAbstractInsRowColDlg> pDlg( pFact ? pFact->CreateSvxInsRowColDlg( mpView->GetViewShell()->GetParentWindow(), nSlotId == SID_TABLE_INSERT_COL_DLG, SD_MOD()->GetSlotPool()->GetSlot(nSlotId)->GetCommand()) : 0); |
| |
| if( pDlg.get() && (pDlg->Execute() == 1) ) |
| { |
| if( nSlotId == SID_TABLE_INSERT_ROW_DLG ) |
| nSlotId = SID_TABLE_INSERT_ROW; |
| else |
| nSlotId = SID_TABLE_INSERT_COL; |
| |
| rReq.AppendItem( SfxInt16Item( (sal_uInt16)nSlotId, (sal_uInt16)pDlg->getInsertCount() ) ); |
| rReq.AppendItem( SfxBoolItem( SID_TABLE_PARAM_INSERT_AFTER, !pDlg->isInsertBefore() ) ); |
| |
| rReq.SetSlot( (sal_uInt16)nSlotId ); |
| } |
| } |
| } |
| |
| xController->Execute( rReq ); |
| } |
| |
| // note: we may be deleted at this point, no more member access possible |
| |
| switch( rReq.GetSlot() ) |
| { |
| case SID_ATTR_BORDER: |
| case SID_TABLE_MERGE_CELLS: |
| case SID_TABLE_SPLIT_CELLS: |
| case SID_OPTIMIZE_TABLE: |
| case SID_TABLE_DELETE_ROW: |
| case SID_TABLE_DELETE_COL: |
| case SID_FORMAT_TABLE_DLG: |
| case SID_TABLE_INSERT_ROW: |
| case SID_TABLE_INSERT_COL: |
| { |
| pView->AdjustMarkHdl(); |
| pBindings->Invalidate( SID_TABLE_DELETE_ROW ); |
| pBindings->Invalidate( SID_TABLE_DELETE_COL ); |
| pBindings->Invalidate( SID_FRAME_LINESTYLE ); |
| pBindings->Invalidate( SID_FRAME_LINECOLOR ); |
| pBindings->Invalidate( SID_ATTR_BORDER ); |
| pBindings->Invalidate( SID_ATTR_FILL_STYLE ); |
| pBindings->Invalidate( SID_ATTR_FILL_TRANSPARENCE ); |
| pBindings->Invalidate( SID_ATTR_FILL_FLOATTRANSPARENCE ); |
| pBindings->Invalidate( SID_TABLE_MERGE_CELLS ); |
| pBindings->Invalidate( SID_TABLE_SPLIT_CELLS ); |
| pBindings->Invalidate( SID_OPTIMIZE_TABLE ); |
| pBindings->Invalidate( SID_TABLE_VERT_BOTTOM ); |
| pBindings->Invalidate( SID_TABLE_VERT_CENTER ); |
| pBindings->Invalidate( SID_TABLE_VERT_NONE ); |
| break; |
| } |
| case SID_TABLE_VERT_BOTTOM: |
| case SID_TABLE_VERT_CENTER: |
| case SID_TABLE_VERT_NONE: |
| { |
| pBindings->Invalidate( SID_TABLE_VERT_BOTTOM ); |
| pBindings->Invalidate( SID_TABLE_VERT_CENTER ); |
| pBindings->Invalidate( SID_TABLE_VERT_NONE ); |
| break; |
| } |
| } |
| |
| pBindings->Invalidate( SID_UNDO ); |
| pBindings->Invalidate( SID_REDO ); |
| } |
| } |
| |
| } } } |