summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOcke Janssen <oj@openoffice.org>2001-07-18 10:34:19 +0000
committerOcke Janssen <oj@openoffice.org>2001-07-18 10:34:19 +0000
commitc60147c84d9dd7c579b6c7d8cd02caa19960c23e (patch)
treea8f959196d4d3d3a46ad6fcf6ea1bb3fdb85a0ea
parent6b366a27bcfe43391502f2dc415cd2c334e1bcc6 (diff)
#85664# enable copy/cut/paste/delete keys
-rw-r--r--dbaccess/source/ui/browser/dbtreeview.cxx45
-rw-r--r--dbaccess/source/ui/browser/dbtreeview.hxx14
-rw-r--r--dbaccess/source/ui/browser/dsbrowserDnD.cxx170
-rw-r--r--dbaccess/source/ui/browser/unodatbr.cxx83
-rw-r--r--dbaccess/source/ui/inc/unodatbr.hxx18
-rw-r--r--dbaccess/source/ui/querydesign/JoinController.cxx5
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;