| /************************************************************** |
| * |
| * 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. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef DBAUI_TABLEEDITORCONTROL_HXX |
| #define DBAUI_TABLEEDITORCONTROL_HXX |
| |
| #ifndef DBAUI_TABLEDESIGNCONTROL_HXX |
| #include "TableDesignControl.hxx" |
| #endif |
| #ifndef DBAUI_TABLEDESIGNVIEW_HXX |
| #include "TableDesignView.hxx" |
| #endif |
| #ifndef DBAUI_TABLEFIELDDESCRIPTION_HXX |
| #include "TableFieldDescWin.hxx" |
| #endif |
| #ifndef DBAUI_TABLEROW_HXX |
| #include "TableRow.hxx" |
| #endif |
| #ifndef DBAUI_ENUMTYPES_HXX |
| #include "QEnumTypes.hxx" |
| #endif |
| #ifndef DBAUI_TYPEINFO_HXX |
| #include "TypeInfo.hxx" |
| #endif |
| |
| class Edit; |
| class SfxUndoManager; |
| namespace dbaui |
| { |
| class OSQLNameEdit; |
| |
| class OTableEditorCtrl : public OTableRowView |
| { |
| enum ChildFocusState |
| { |
| HELPTEXT, |
| DESCRIPTION, |
| NAME, |
| ROW, |
| NONE |
| }; |
| |
| ::std::vector< ::boost::shared_ptr<OTableRow> > m_aUndoList; |
| ::std::vector< ::boost::shared_ptr<OTableRow> >* m_pRowList; |
| |
| OSQLNameEdit* pNameCell; |
| ::svt::ListBoxControl* pTypeCell; |
| Edit* pHelpTextCell; |
| Edit* pDescrCell; |
| OTableFieldDescWin* pDescrWin; // properties of one column |
| |
| ::boost::shared_ptr<OTableRow> pActRow; |
| |
| sal_uLong nIndexEvent; |
| sal_uLong nCutEvent; |
| sal_uLong nPasteEvent; |
| sal_uLong nDeleteEvent; |
| sal_uLong nInsNewRowsEvent; |
| sal_uLong nInvalidateTypeEvent; |
| sal_uLong nEntryNotFoundEvent; |
| ChildFocusState m_eChildFocus; |
| |
| long nOldDataPos; |
| |
| sal_Bool bSaveOnMove; |
| sal_Bool bReadOnly; |
| //------------------------------------------------------------------ |
| // Hilfsklasse |
| class ClipboardInvalidator |
| { |
| private: |
| AutoTimer m_aInvalidateTimer; |
| OTableEditorCtrl* m_pOwner; |
| |
| public: |
| ClipboardInvalidator(sal_uLong nTimeout,OTableEditorCtrl*); |
| ~ClipboardInvalidator(); |
| |
| protected: |
| DECL_LINK(OnInvalidate, void*); |
| }; |
| friend class OTableEditorCtrl::ClipboardInvalidator; |
| |
| ClipboardInvalidator m_aInvalidate; |
| |
| protected: |
| virtual void Command( const CommandEvent& rEvt ); |
| virtual sal_Bool SeekRow(long nRow); |
| virtual void PaintCell(OutputDevice& rDev, const Rectangle& rRect, |
| sal_uInt16 nColumnId ) const; |
| |
| virtual void CursorMoved(); |
| virtual RowStatus GetRowStatus(long nRow) const; |
| |
| virtual ::svt::CellController* GetController(long nRow, sal_uInt16 nCol); |
| virtual void InitController(::svt::CellControllerRef& rController, long nRow, sal_uInt16 nCol); |
| |
| virtual void CellModified(); |
| virtual sal_Bool SaveModified(); // wird aufgerufen vor einem Zellenwechsel |
| // return sal_False, verhindert Zellenwechsel |
| virtual void Undo(); |
| virtual void Redo(); |
| virtual String GetCellText(long nRow, sal_uInt16 nColId) const; |
| virtual sal_uInt32 GetTotalCellWidth(long nRow, sal_uInt16 nColId); |
| |
| virtual void CopyRows(); |
| virtual void InsertRows( long nRow ); |
| virtual void DeleteRows(); |
| virtual void InsertNewRows( long nRow ); |
| |
| virtual sal_Bool IsPrimaryKeyAllowed( long nRow ); |
| virtual sal_Bool IsInsertNewAllowed( long nRow ); |
| virtual sal_Bool IsDeleteAllowed( long nRow ); |
| |
| void ClearModified(); |
| |
| void SetPrimaryKey( sal_Bool bSet ); |
| sal_Bool IsPrimaryKey(); |
| |
| DECL_LINK(ControlPreNotifyHdl, NotifyEvent*); |
| |
| public: |
| // TYPEINFO(); |
| OTableEditorCtrl(Window* pParentWin); |
| virtual ~OTableEditorCtrl(); |
| virtual sal_Bool CursorMoving(long nNewRow, sal_uInt16 nNewCol); |
| virtual void UpdateAll(); |
| SfxUndoManager& GetUndoManager() const; |
| |
| void SetDescrWin( OTableFieldDescWin* pWin ){ pDescrWin = pWin; if (pDescrWin && pActRow) pDescrWin->DisplayData(pActRow->GetActFieldDescr()); } |
| sal_Bool SaveCurRow(); |
| void SwitchType( const TOTypeInfoSP& _pType ); |
| |
| void DisplayData( long nRow, sal_Bool bGrabFocus = sal_True ); |
| // erzwingt das Anzeigen der genannten Zeile (selbst wenn es eigentlich schon die aktuelle ist) |
| |
| virtual void SetCellData( long nRow, sal_uInt16 nColId, const TOTypeInfoSP& _pTypeInfo ); |
| virtual void SetCellData( long nRow, sal_uInt16 nColId, const ::com::sun::star::uno::Any& _rSaveData ); |
| virtual ::com::sun::star::uno::Any GetCellData( long nRow, sal_uInt16 nColId ); |
| virtual void SetControlText( long nRow, sal_uInt16 nColId, const String& rText ); |
| virtual String GetControlText( long nRow, sal_uInt16 nColId ); |
| |
| virtual OTableDesignView* GetView() const; |
| |
| ::std::vector< ::boost::shared_ptr<OTableRow> >* GetRowList(){ return m_pRowList; } |
| |
| ::boost::shared_ptr<OTableRow> GetActRow(){ return pActRow; } |
| void CellModified( long nRow, sal_uInt16 nColId ); |
| void SetReadOnly( sal_Bool bRead=sal_True ); |
| |
| virtual void Init(); |
| virtual void DeactivateCell(sal_Bool bUpdate = sal_True); |
| |
| sal_Bool IsCutAllowed( long nRow = -1 ); |
| sal_Bool IsCopyAllowed( long nRow = -1 ); |
| sal_Bool IsPasteAllowed( long nRow = -1 ); |
| sal_Bool IsReadOnly(); |
| OFieldDescription* GetFieldDescr( long nRow ); |
| |
| // window overloads |
| virtual long PreNotify( NotifyEvent& rNEvt ); |
| |
| // IClipboardTest |
| virtual sal_Bool isCutAllowed() { return IsCutAllowed(); } |
| virtual sal_Bool isCopyAllowed() { return IsCopyAllowed(); } |
| virtual sal_Bool isPasteAllowed() { return IsPasteAllowed(); } |
| virtual sal_Bool hasChildPathFocus() { return HasChildPathFocus(); } |
| |
| virtual void cut(); |
| virtual void copy(); |
| virtual void paste(); |
| private: |
| DECL_LINK( StartIndexing, void* ); |
| DECL_LINK( DelayedCut, void* ); |
| DECL_LINK( DelayedPaste, void* ); |
| DECL_LINK( DelayedDelete, void* ); |
| DECL_LINK( DelayedInsNewRows, void* ); |
| DECL_LINK( InvalidateFieldType, void* ); |
| DECL_LINK( EntryNotFound, void* ); |
| |
| void InitCellController(); |
| sal_Int32 HasFieldName( const String& rFieldName ); |
| String GenerateName( const String& rName ); |
| sal_Bool SetDataPtr( long nRow ); |
| |
| sal_Bool SaveData(long nRow, sal_uInt16 nColumnId); |
| /** AdjustFieldDescription set the needed values for the description |
| @param _pFieldDesc the field description where to set the values |
| @param _rMultiSel contains the postions which changed for undo/redo |
| @param _nPos the current position |
| @param _bSet should a key be set |
| @param _bPrimaryKey which value should the pkey have |
| */ |
| void AdjustFieldDescription( OFieldDescription* _pFieldDesc, |
| MultiSelection& _rMultiSel, |
| sal_Int32 _nPos, |
| sal_Bool _bSet, |
| sal_Bool _bPrimaryKey); |
| /** InvalidateFeatures invalidates the slots SID_UNDO | SID_REDO | SID_SAVEDOC |
| */ |
| void InvalidateFeatures(); |
| |
| void resetType(); |
| }; |
| } |
| #endif // DBAUI_TABLEEDITORCONTROL_HXX |
| |
| |
| |