diff options
author | Ocke Janssen <oj@openoffice.org> | 2001-07-18 10:34:19 +0000 |
---|---|---|
committer | Ocke Janssen <oj@openoffice.org> | 2001-07-18 10:34:19 +0000 |
commit | c60147c84d9dd7c579b6c7d8cd02caa19960c23e (patch) | |
tree | a8f959196d4d3d3a46ad6fcf6ea1bb3fdb85a0ea | |
parent | 6b366a27bcfe43391502f2dc415cd2c334e1bcc6 (diff) |
#85664# enable copy/cut/paste/delete keys
-rw-r--r-- | dbaccess/source/ui/browser/dbtreeview.cxx | 45 | ||||
-rw-r--r-- | dbaccess/source/ui/browser/dbtreeview.hxx | 14 | ||||
-rw-r--r-- | dbaccess/source/ui/browser/dsbrowserDnD.cxx | 170 | ||||
-rw-r--r-- | dbaccess/source/ui/browser/unodatbr.cxx | 83 | ||||
-rw-r--r-- | dbaccess/source/ui/inc/unodatbr.hxx | 18 | ||||
-rw-r--r-- | dbaccess/source/ui/querydesign/JoinController.cxx | 5 |
6 files changed, 252 insertions, 83 deletions
diff --git a/dbaccess/source/ui/browser/dbtreeview.cxx b/dbaccess/source/ui/browser/dbtreeview.cxx index 7bb8330c92c0..610b5fd0bcc4 100644 --- a/dbaccess/source/ui/browser/dbtreeview.cxx +++ b/dbaccess/source/ui/browser/dbtreeview.cxx @@ -2,9 +2,9 @@ * * $RCSfile: dbtreeview.cxx,v $ * - * $Revision: 1.13 $ + * $Revision: 1.14 $ * - * last change: $Author: rt $ $Date: 2001-07-12 08:42:16 $ + * last change: $Author: oj $ $Date: 2001-07-18 11:33:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -126,7 +126,46 @@ Link DBTreeView::GetPreExpandHandler() const { return m_pTreeListBox->GetPreExpandHandler(); } - +// ----------------------------------------------------------------------------- +void DBTreeView::setCutHandler(const Link& _rHdl) +{ + m_pTreeListBox->setCutHandler(_rHdl); +} +// ----------------------------------------------------------------------------- +Link DBTreeView::getCutHandler() const +{ + return m_pTreeListBox->getCutHandler(); +} +// ----------------------------------------------------------------------------- +void DBTreeView::setCopyHandler(const Link& _rHdl) +{ + m_pTreeListBox->setCopyHandler(_rHdl); +} +// ----------------------------------------------------------------------------- +Link DBTreeView::getCopyHandler() const +{ + return m_pTreeListBox->getCopyHandler(); +} +// ----------------------------------------------------------------------------- +void DBTreeView::setPasteHandler(const Link& _rHdl) +{ + m_pTreeListBox->setPasteHandler(_rHdl); +} +// ----------------------------------------------------------------------------- +Link DBTreeView::getPasteHandler() const +{ + return m_pTreeListBox->getPasteHandler(); +} +// ----------------------------------------------------------------------------- +void DBTreeView::setDeleteHandler(const Link& _rHdl) +{ + m_pTreeListBox->setDeleteHandler(_rHdl); +} +// ----------------------------------------------------------------------------- +Link DBTreeView::getDeleteHandler() const +{ + return m_pTreeListBox->getDeleteHandler(); +} // ----------------------------------------------------------------------------- void DBTreeView::Resize() { diff --git a/dbaccess/source/ui/browser/dbtreeview.hxx b/dbaccess/source/ui/browser/dbtreeview.hxx index c8e4cc991d96..af1979834f04 100644 --- a/dbaccess/source/ui/browser/dbtreeview.hxx +++ b/dbaccess/source/ui/browser/dbtreeview.hxx @@ -2,9 +2,9 @@ * * $RCSfile: dbtreeview.hxx,v $ * - * $Revision: 1.7 $ + * $Revision: 1.8 $ * - * last change: $Author: fs $ $Date: 2001-03-22 10:38:30 $ + * last change: $Author: oj $ $Date: 2001-07-18 11:33:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -101,6 +101,16 @@ namespace dbaui /// gets the currently set NodeExpansionHandler Link GetPreExpandHandler() const; + void setCutHandler(const Link& _rHdl); + Link getCutHandler() const; + void setCopyHandler(const Link& _rHdl); + Link getCopyHandler() const; + void setPasteHandler(const Link& _rHdl); + Link getPasteHandler() const; + void setDeleteHandler(const Link& _rHdl); + Link getDeleteHandler() const; + + DBTreeListModel* getModel() const; void setModel(DBTreeListModel* _pTreeModel); void setSelectHdl(const Link& _rHdl); diff --git a/dbaccess/source/ui/browser/dsbrowserDnD.cxx b/dbaccess/source/ui/browser/dsbrowserDnD.cxx index 2d042d243695..aa9f49cc8d66 100644 --- a/dbaccess/source/ui/browser/dsbrowserDnD.cxx +++ b/dbaccess/source/ui/browser/dsbrowserDnD.cxx @@ -2,9 +2,9 @@ * * $RCSfile: dsbrowserDnD.cxx,v $ * - * $Revision: 1.21 $ + * $Revision: 1.22 $ * - * last change: $Author: oj $ $Date: 2001-07-17 10:31:48 $ + * last change: $Author: oj $ $Date: 2001-07-18 11:33:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -174,7 +174,9 @@ #ifndef _COM_SUN_STAR_TASK_XINTERACTIONHANDLER_HPP_ #include <com/sun/star/task/XInteractionHandler.hpp> #endif - +#ifndef _DBAUI_LINKEDDOCUMENTS_HXX_ +#include "linkeddocuments.hxx" +#endif // ......................................................................... namespace dbaui { @@ -913,6 +915,165 @@ namespace dbaui xPrep->executeUpdate(); } } + // ----------------------------------------------------------------------------- + IMPL_LINK(SbaTableQueryBrowser, OnCutEntry, SvLBoxEntry*, _pEntry) + { + return 0; + } + // ----------------------------------------------------------------------------- + IMPL_LINK(SbaTableQueryBrowser, OnCopyEntry, SvLBoxEntry*, _pEntry) + { + if(isEntryCopyAllowed(_pEntry)) + copyEntry(_pEntry); + return 0; + } + // ----------------------------------------------------------------------------- + IMPL_LINK(SbaTableQueryBrowser, OnPasteEntry, SvLBoxEntry*, _pEntry) + { + if(isEntryPasteAllowed(_pEntry)) + pasteEntry(_pEntry); + return 0; + } + // ----------------------------------------------------------------------------- + IMPL_LINK(SbaTableQueryBrowser, OnDeleteEntry, SvLBoxEntry*, _pEntry) + { + EntryType eType = getEntryType(_pEntry); + switch(eType) + { + case etQuery: + implRemoveQuery(_pEntry); + break; + case etView: + case etTable: + { + // check if connection is readonly + DBTreeListModel::DBTreeListUserData* pDSData = NULL; + DBTreeListModel::DBTreeListUserData* pEntryData = NULL; + SvLBoxEntry* pDSEntry = NULL; + pDSEntry = m_pTreeView->getListBox()->GetRootLevelParent(_pEntry); + pDSData = pDSEntry + ? static_cast<DBTreeListModel::DBTreeListUserData*>(pDSEntry->GetUserData()) + : NULL; + + sal_Bool bIsConnectionWriteAble = sal_False; + if(pDSData && pDSData->xObject.is()) + { + Reference<XConnection> xCon(pDSData->xObject,UNO_QUERY); + if(xCon.is()) + bIsConnectionWriteAble = !xCon->getMetaData()->isReadOnly(); + } + if(bIsConnectionWriteAble && (eType == etTable || eType == etView)) + implDropTable(_pEntry); + } + break; + case etBookmark: + { + // get the container of the bookmarks + SvLBoxEntry* pContainer = isContainer(_pEntry) ? _pEntry : m_pTreeView->getListBox()->GetParent(_pEntry); + if (!ensureEntryObject(pContainer)) + break; + + String sSelectedObject = GetEntryText(_pEntry); + + DBTreeListModel::DBTreeListUserData* pContainerData = static_cast<DBTreeListModel::DBTreeListUserData*>(pContainer->GetUserData()); + Reference< XNameAccess > xBookmarks(pContainerData->xObject, UNO_QUERY); + + OLinkedDocumentsAccess aHelper(getView(), getORB(), xBookmarks); + aHelper.drop(sSelectedObject); + } + break; + } + + return 0; + } + // ----------------------------------------------------------------------------- + sal_Bool SbaTableQueryBrowser::isEntryCutAllowed(SvLBoxEntry* _pEntry) + { + // at the momoent this isn't allowed + return sal_False; + } + // ----------------------------------------------------------------------------- + sal_Bool SbaTableQueryBrowser::isEntryCopyAllowed(SvLBoxEntry* _pEntry) + { + EntryType eType = getEntryType(_pEntry); + return (eType == etTable || eType == etQuery || eType == etView); + } + // ----------------------------------------------------------------------------- + sal_Bool SbaTableQueryBrowser::isEntryPasteAllowed(SvLBoxEntry* _pEntry) + { + sal_Bool bAllowed = sal_False; + EntryType eType = getEntryType(_pEntry); + switch(eType) + { + case etQuery: + case etQueryContainer: + { + TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(getView())); + bAllowed = aTransferData.HasFormat(SOT_FORMATSTR_ID_DBACCESS_QUERY); + break; + } + case etView: + case etTable: + case etTableContainer: + { + // check if connection is readonly + DBTreeListModel::DBTreeListUserData* pDSData = NULL; + DBTreeListModel::DBTreeListUserData* pEntryData = NULL; + SvLBoxEntry* pDSEntry = NULL; + pDSEntry = m_pTreeView->getListBox()->GetRootLevelParent(_pEntry); + pDSData = pDSEntry + ? static_cast<DBTreeListModel::DBTreeListUserData*>(pDSEntry->GetUserData()) + : NULL; + + sal_Bool bIsConnectionWriteAble = sal_False; + if(pDSData && pDSData->xObject.is()) + { + Reference<XConnection> xCon(pDSData->xObject,UNO_QUERY); + if(xCon.is()) + bIsConnectionWriteAble = !xCon->getMetaData()->isReadOnly(); + } + bAllowed = bIsConnectionWriteAble && ((eType == etTable || eType == etView || eType == etTableContainer) && isTableFormat()); + } + break; + } + return bAllowed; + } + // ----------------------------------------------------------------------------- + void SbaTableQueryBrowser::cutEntry(SvLBoxEntry* _pEntry) + { + } + // ----------------------------------------------------------------------------- + void SbaTableQueryBrowser::copyEntry(SvLBoxEntry* _pEntry) + { + TransferableHelper* pTransfer = NULL; + Reference< XTransferable> aEnsureDelete; + EntryType eType = getEntryType(_pEntry); + pTransfer = implCopyObject( _pEntry, eType == etQuery ? CommandType::QUERY : CommandType::TABLE); + aEnsureDelete = pTransfer; + if (pTransfer) + pTransfer->CopyToClipboard(getView()); + } + // ----------------------------------------------------------------------------- + void SbaTableQueryBrowser::pasteEntry(SvLBoxEntry* _pEntry) + { + TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(getView())); + EntryType eType = getEntryType(_pEntry); + switch(eType) + { + case etQuery: + case etQueryContainer: + implPasteQuery(_pEntry, aTransferData); + break; + + case etView: + case etTable: + case etTableContainer: + implPasteTable( _pEntry, aTransferData ); + default: + ; + } + } + // ----------------------------------------------------------------------------- // ......................................................................... } // namespace dbaui // ......................................................................... @@ -920,6 +1081,9 @@ namespace dbaui /************************************************************************* * history: * $Log: not supported by cvs2svn $ + * Revision 1.21 2001/07/17 10:31:48 oj + * #89128# look if connection is readonly + * * Revision 1.20 2001/07/16 13:40:03 oj * #89650# check if table was created for html/rtf format * diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx index 1d3e821b6530..6c5fefe22e33 100644 --- a/dbaccess/source/ui/browser/unodatbr.cxx +++ b/dbaccess/source/ui/browser/unodatbr.cxx @@ -2,9 +2,9 @@ * * $RCSfile: unodatbr.cxx,v $ * - * $Revision: 1.93 $ + * $Revision: 1.94 $ * - * last change: $Author: fs $ $Date: 2001-07-18 11:13:17 $ + * last change: $Author: oj $ $Date: 2001-07-18 11:33:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -524,6 +524,12 @@ sal_Bool SbaTableQueryBrowser::Construct(Window* pParent) m_pTreeView = new DBTreeView(getBrowserView(),m_xMultiServiceFacatory, WB_TABSTOP); m_pTreeView->Show(); m_pTreeView->SetPreExpandHandler(LINK(this, SbaTableQueryBrowser, OnExpandEntry)); + + m_pTreeView->setCutHandler(LINK(this, SbaTableQueryBrowser, OnCutEntry)); + m_pTreeView->setCopyHandler(LINK(this, SbaTableQueryBrowser, OnCopyEntry)); + m_pTreeView->setPasteHandler(LINK(this, SbaTableQueryBrowser, OnPasteEntry)); + m_pTreeView->setDeleteHandler(LINK(this, SbaTableQueryBrowser, OnDeleteEntry)); + m_pTreeView->getListBox()->setControlActionListener(this); m_pTreeView->SetHelpId(HID_CTL_TREEVIEW); @@ -1577,12 +1583,7 @@ FeatureState SbaTableQueryBrowser::GetState(sal_uInt16 nId) case ID_BROWSER_COPY: if(m_pTreeView->HasChildPathFocus()) - { - SvLBoxEntry* pEntry = m_pTreeView->getListBox()->GetCurEntry(); - EntryType eType = getEntryType(pEntry); - aReturn.bEnabled = (eType == etTable || eType == etQuery || eType == etView); - break; - } + aReturn.bEnabled = isEntryCopyAllowed(m_pTreeView->getListBox()->GetCurEntry()); else if (getBrowserView() && getBrowserView()->getVclControl() && !getBrowserView()->getVclControl()->IsEditing()) { SbaGridControl* pControl = getBrowserView()->getVclControl(); @@ -1594,7 +1595,7 @@ FeatureState SbaTableQueryBrowser::GetState(sal_uInt16 nId) case ID_BROWSER_CUT: if(m_pTreeView->HasChildPathFocus()) - aReturn.bEnabled = sal_False; + aReturn.bEnabled = isEntryCutAllowed(m_pTreeView->getListBox()->GetCurEntry()); else return SbaXDataBrowserController::GetState(nId); break; @@ -1604,42 +1605,7 @@ FeatureState SbaTableQueryBrowser::GetState(sal_uInt16 nId) if(m_pTreeView->HasChildPathFocus()) { SvLBoxEntry* pEntry = m_pTreeView->getListBox()->GetCurEntry(); - EntryType eType = getEntryType(pEntry); - switch(eType) - { - case etQuery: - case etQueryContainer: - { - TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(getView())); - aReturn.bEnabled = aTransferData.HasFormat(SOT_FORMATSTR_ID_DBACCESS_QUERY); - break; - } - case etView: - case etTable: - case etTableContainer: - { - // check if connection is readonly - DBTreeListModel::DBTreeListUserData* pDSData = NULL; - DBTreeListModel::DBTreeListUserData* pEntryData = NULL; - SvLBoxEntry* pDSEntry = NULL; - pDSEntry = m_pTreeView->getListBox()->GetRootLevelParent(pEntry); - pDSData = pDSEntry - ? static_cast<DBTreeListModel::DBTreeListUserData*>(pDSEntry->GetUserData()) - : NULL; - - sal_Bool bIsConnectionWriteAble = sal_False; - if(pDSData && pDSData->xObject.is()) - { - Reference<XConnection> xCon(pDSData->xObject,UNO_QUERY); - if(xCon.is()) - bIsConnectionWriteAble = !xCon->getMetaData()->isReadOnly(); - } - aReturn.bEnabled = bIsConnectionWriteAble && ((eType == etTable || eType == etView || eType == etTableContainer) && isTableFormat()); - } - break; - default: - aReturn.bEnabled = sal_False; - } + aReturn.bEnabled = isEntryPasteAllowed(pEntry); break; } else @@ -1762,36 +1728,13 @@ void SbaTableQueryBrowser::Execute(sal_uInt16 nId) case ID_BROWSER_PASTE: if(m_pTreeView->HasChildPathFocus()) { - TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(getView())); - SvLBoxEntry* pEntry = m_pTreeView->getListBox()->GetCurEntry(); - EntryType eType = getEntryType(pEntry); - switch(eType) - { - case etQuery: - case etQueryContainer: - implPasteQuery(pEntry, aTransferData); - break; - - case etView: - case etTable: - case etTableContainer: - implPasteTable( pEntry, aTransferData ); - default: - ; - } + pasteEntry(m_pTreeView->getListBox()->GetCurEntry()); break; }// else run through case ID_BROWSER_COPY: if(m_pTreeView->HasChildPathFocus()) { - SvLBoxEntry* pEntry = m_pTreeView->getListBox()->GetCurEntry(); - TransferableHelper* pTransfer = NULL; - Reference< XTransferable> aEnsureDelete; - EntryType eType = getEntryType(pEntry); - pTransfer = implCopyObject( pEntry, eType == etQuery ? CommandType::QUERY : CommandType::TABLE); - aEnsureDelete = pTransfer; - if (pTransfer) - pTransfer->CopyToClipboard(getView()); + copyEntry(m_pTreeView->getListBox()->GetCurEntry()); } else if (getBrowserView() && getBrowserView()->getVclControl() && !getBrowserView()->getVclControl()->IsEditing()) { diff --git a/dbaccess/source/ui/inc/unodatbr.hxx b/dbaccess/source/ui/inc/unodatbr.hxx index fd10bec4083f..18db9edb85fa 100644 --- a/dbaccess/source/ui/inc/unodatbr.hxx +++ b/dbaccess/source/ui/inc/unodatbr.hxx @@ -2,9 +2,9 @@ * * $RCSfile: unodatbr.hxx,v $ * - * $Revision: 1.32 $ + * $Revision: 1.33 $ * - * last change: $Author: fs $ $Date: 2001-07-17 13:04:48 $ + * last change: $Author: oj $ $Date: 2001-07-18 11:34:13 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -339,6 +339,12 @@ namespace dbaui DECL_LINK( OnEntryDoubleClicked, SvLBoxEntry* ); DECL_LINK( OnSelectEntry, SvLBoxEntry* ); DECL_LINK( OnExpandEntry, SvLBoxEntry* ); + + DECL_LINK( OnCutEntry, SvLBoxEntry* ); + DECL_LINK( OnCopyEntry, SvLBoxEntry* ); + DECL_LINK( OnPasteEntry, SvLBoxEntry* ); + DECL_LINK( OnDeleteEntry, SvLBoxEntry* ); + DECL_LINK( OnTreeEntryCompare, const SvSortData* ); DECL_LINK( OnAsyncDrop, void* ); @@ -409,6 +415,14 @@ namespace dbaui // set _rsName as title at the frame void setTitle(const ::rtl::OUString& _rsDataSourceName,const ::rtl::OUString& _rsName) const; void setDefaultTitle() const; + + sal_Bool isEntryCutAllowed(SvLBoxEntry* _pEntry); + sal_Bool isEntryCopyAllowed(SvLBoxEntry* _pEntry); + sal_Bool isEntryPasteAllowed(SvLBoxEntry* _pEntry); + + void cutEntry(SvLBoxEntry* _pEntry); + void copyEntry(SvLBoxEntry* _pEntry); + void pasteEntry(SvLBoxEntry* _pEntry); }; // ......................................................................... diff --git a/dbaccess/source/ui/querydesign/JoinController.cxx b/dbaccess/source/ui/querydesign/JoinController.cxx index 74a5c02e31a0..a43396f5b613 100644 --- a/dbaccess/source/ui/querydesign/JoinController.cxx +++ b/dbaccess/source/ui/querydesign/JoinController.cxx @@ -2,9 +2,9 @@ * * $RCSfile: JoinController.cxx,v $ * - * $Revision: 1.10 $ + * $Revision: 1.11 $ * - * last change: $Author: oj $ $Date: 2001-06-28 14:22:47 $ + * last change: $Author: oj $ $Date: 2001-07-18 11:34:19 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -195,7 +195,6 @@ OJoinController::~OJoinController() void OJoinController::disposing() { OGenericUnoController::disposing(); - delete m_pView; m_pView = NULL; m_pAddTabDlg = NULL; |