27#include <osl/diagnose.h>
38#include <com/sun/star/container/XContainer.hpp>
39#include <com/sun/star/container/XNameAccess.hpp>
40#include <com/sun/star/beans/XPropertySet.hpp>
41#include <com/sun/star/sdb/application/DatabaseObject.hpp>
42#include <bitmaps.hlst>
58namespace DatabaseObject = css::sdb::application::DatabaseObject;
60#define TABWIN_SIZING_AREA 4
61#define TABWIN_WIDTH_MIN 90
62#define TABWIN_HEIGHT_MIN 80
78 Point aEHvector(1, 1);
90OTableWindow::OTableWindow(
vcl::Window* pParent, TTableWindowData::value_type pTabWinData )
125 OSL_ENSURE(
m_xListBox->get_widget().n_children()==0,
"Forgot to call EmptyListbox()!");
156 GetData()->SetPosition( aNewPosData );
162 Size aOutSize(rNewSize);
168 GetData()->SetSize( aOutSize );
187 if ( xContainer.is() )
192 OUString aPrimKeyImage(BMP_PRIMARY_KEY);
214 const OUString* pIter = aColumns.getConstArray();
215 const OUString* pEnd = pIter + aColumns.getLength();
217 for (; pIter != pEnd; ++pIter)
219 bool bPrimaryKeyColumn = xPKeyColumns.is() && xPKeyColumns->hasByName( *pIter );
229 if ( bPrimaryKeyColumn )
248 OSL_ENSURE(!_pUserData,
"INVALID call. Need to delete the userclass!");
249 _pUserData =
nullptr;
259 void* pUserData = weld::fromId<void*>(rTreeView.
get_id(rEntry));
281 assert(
m_xListBox &&
"OTableWindow::Init() : CreateListBox returned NULL !");
282 m_xListBox->get_widget().set_selection_mode(SelectionMode::Multiple);
304 if (rDCEvt.
GetType() == DataChangedEventType::SETTINGS)
318 Draw3DBorder(rRenderContext, aRect);
330 aSizingRect.
SetTop( _rPos.
Y() );
335 if( _rPos.
Y() > _rOutputSize.
Height() )
343 if( _rPos.
X() > _rOutputSize.
Width() )
393 aPointer = PointerStyle::SSize;
396 aPointer = PointerStyle::ESize;
399 aPointer = PointerStyle::SESize;
402 aPointer = PointerStyle::NESize;
431 if (nTitleHeight < aPreferredSize.
Height())
432 nTitleHeight = aPreferredSize.
Height();
434 m_xTitle->SetPosSizePixel(
Point( nPositionX, nPositionY ),
Size( aOutSize.
Width() - nPositionX - n5Pos, nTitleHeight ) );
439 Point( n5Pos, nPositionY + nTitleHeight + nTitleToList ),
440 Size( aOutSize.
Width() - 2 * n5Pos, aOutSize.
Height() - ( nPositionY + nTitleHeight + nTitleToList ) - n5Pos )
489 arrstrFields.clear();
494 arrstrFields.push_back(rTreeView.
get_text(rEntry));
505 if (
nType != StateChangedType::Zoom )
530 case CommandEventId::ContextMenu:
533 if(!rController.isReadOnly() && rController.isConnected())
541 std::unique_ptr<weld::TreeIter> xCurrent = rTreeView.
make_iterator();
551 std::unique_ptr<weld::Menu> xContextMenu(xBuilder->weld_menu(
"menu"));
552 if (!xContextMenu->popup_at_rect(pPopupParent, aRect).isEmpty())
564 bool bHandled =
false;
567 case NotifyEventType::KEYINPUT:
609 Size aNewSize(aStartPoint.
X(),aStartPoint.
Y());
610 if ( ((ptOld.
X() + aNewSize.
Width()) <= aSize.
Width())
637 if ( aNewDataPoint.
X() > -1 && aNewDataPoint.
Y() > -1 )
677 case NotifyEventType::KEYUP:
681 sal_uInt16 nKeyCode = rCode.
GetCode();
699 return m_xTitle->GetLabel().get_label();
#define TABWIN_HEIGHT_MIN
#define TABWIN_SIZING_AREA
const StyleSettings & GetStyleSettings() const
static const AllSettings & GetSettings()
static std::unique_ptr< weld::Builder > CreateBuilder(weld::Widget *pParent, const OUString &rUIFile, bool bMobile=false, sal_uInt64 nLOKWindowId=0)
CommandEventId GetCommand() const
const Point & GetMousePosPixel() const
bool IsMouseEvent() const
DataChangedEventType GetType() const
const vcl::KeyCode & GetKeyCode() const
const Point & GetPosPixel() const
const KeyEvent * GetKeyEvent() const
NotifyEventType GetType() const
void DrawLine(const Point &rStartPt, const Point &rEndPt)
constexpr tools::Long Y() const
void setX(tools::Long nX)
void setY(tools::Long nY)
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long X() const
constexpr tools::Long Height() const
void setWidth(tools::Long nWidth)
void setHeight(tools::Long nHeight)
constexpr tools::Long Width() const
const Color & GetDarkShadowColor() const
const Color & GetShadowColor() const
const vcl::Font & GetGroupFont() const
const Color & GetLightColor() const
const Color & GetFaceColor() const
const Color & GetButtonTextColor() const
static VclPtr< reference_type > Create(Arg &&... arg)
OJoinController & getController() const
void TabWinMoved(OTableWindow *ptWhich, const Point &ptOldPosition)
Hook that is called after moving/resizing TabWins.
const Point & GetScrollOffset() const
void TabWinSized(OTableWindow *ptWhich, const Point &ptOldPosition, const Size &szOldSize)
virtual void EnsureVisible(const OTableWindow *_pWin)
bool ExistsAConn(const OTableWindow *pFromWin) const
void BeginChildSizing(OTableWindow *pTabWin, PointerStyle nPointer)
OJoinDesignView * getDesignView() const
const Size & getRealOutputSize() const
bool isMovementAllowed(const Point &_rPoint, const Size &_rSize)
check if the given window is visible.
virtual void RemoveTabWin(OTableWindow *pTabWin)
the class OTableWindowAccess represents the accessible object for table windows like they are used in...
virtual void deleteUserData(void *&_pUserData)
delete the user data with the equal type as created within createUserData
OJoinDesignView * getDesignView()
TTableWindowData::value_type m_pData
OJoinTableView * getTableView()
virtual ~OTableWindow() override
virtual void dispose() override
const TTableWindowData::value_type & GetData() const
tools::Rectangle getSizingRect(const Point &_rPos, const Size &_rOutputSize) const
returns the new sizing
void SetPosPixel(const Point &rNewPos) override
void SetBoldTitle(bool bBold)
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessible() override
void clearListBox()
clears the listbox inside.
virtual void Command(const CommandEvent &rEvt) override
virtual void StateChanged(StateChangedType nStateChange) override
virtual void _elementInserted(const css::container::ContainerEvent &_rEvent) override
void SetSizePixel(const Size &rNewSize) override
sal_Int32 m_nMoveIncrement
void impl_updateImage()
updates image
virtual void DataChanged(const DataChangedEvent &rDCEvt) override
virtual void * createUserData(const css::uno::Reference< css::beans::XPropertySet > &_xColumn, bool _bPrimaryKey)
creates user information that will be append at the ListBoxentry
virtual void _elementRemoved(const css::container::ContainerEvent &_rEvent) override
virtual void MouseMove(const MouseEvent &rEvt) override
VclPtr< OTableWindowListBox > m_xListBox
OUString getTitle() const
virtual void GetFocus() override
void setActive(bool _bActive=true)
virtual void _elementReplaced(const css::container::ContainerEvent &_rEvent) override
::rtl::Reference< comphelper::OContainerListenerAdapter > m_pContainerListener
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect) override
virtual void MouseButtonDown(const MouseEvent &rEvt) override
void EnumValidFields(std::vector< OUString > &arrstrFields)
virtual void Resize() override
void SetPosSizePixel(const Point &rNewPos, const Size &rNewSize) override
OUString const & GetComposedName() const
void setSizingFlag(const Point &_rPos)
set the sizing flag to the direction
VclPtr< OTableWindowTitle > m_xTitle
virtual bool PreNotify(NotifyEvent &rNEvt) override
SizingFlags m_nSizingFlags
void Merge(const Font &rFont)
void SetWeight(FontWeight)
sal_uInt16 GetCode() const
virtual void dispose() override
vcl::Window * GetParent() const
virtual void StateChanged(StateChangedType nStateChange)
bool IsControlFont() const
void SetZoomedPointFont(vcl::RenderContext &rRenderContext, const vcl::Font &rFont)
virtual void SetSizePixel(const Size &rNewSize)
virtual void Command(const CommandEvent &rCEvt)
tools::Long CalcZoom(tools::Long n) const
virtual void MouseButtonDown(const MouseEvent &rMEvt)
virtual Point GetPosPixel() const
tools::Long GetTextHeight() const
const Fraction & GetZoom() const
const AllSettings & GetSettings() const
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect)
virtual bool PreNotify(NotifyEvent &rNEvt)
vcl::Font GetControlFont() const
::OutputDevice const * GetOutDev() const
virtual void MouseMove(const MouseEvent &rMEvt)
virtual Size GetSizePixel() const
Size GetOutputSizePixel() const
virtual void SetPointer(PointerStyle)
void EnableClipSiblings(bool bClipSiblings=true)
void Invalidate(InvalidateFlags nFlags=InvalidateFlags::NONE)
virtual void SetPosPixel(const Point &rNewPos)
PointerStyle GetPointer() const
void SetTextColor(const Color &rColor)
virtual void set_from_icon_name(const OUString &rIconName)=0
virtual void set_font(const vcl::Font &rFont)=0
virtual void set_label(const OUString &rText)=0
virtual std::unique_ptr< TreeIter > make_iterator(const TreeIter *pOrig=nullptr) const=0
virtual OUString get_text(int row, int col=-1) const=0
virtual int n_children() const=0
virtual void set_image(int row, const OUString &rImage, int col=-1)=0
void append(TreeIter *pRet=nullptr)
virtual tools::Rectangle get_row_area(const weld::TreeIter &rIter) const=0
virtual bool get_cursor(TreeIter *pIter) const=0
virtual void all_foreach(const std::function< bool(TreeIter &)> &func)=0
virtual int get_selected_index() const=0
virtual OUString get_id(int pos) const=0
ControllerFrame_Data * m_pData
#define TOOLS_WARN_EXCEPTION(area, stream)
constexpr sal_uInt16 KEY_LEFT
constexpr sal_uInt16 KEY_UP
constexpr sal_uInt16 KEY_RIGHT
constexpr sal_uInt16 KEY_DOWN
weld::Window * GetPopupParent(vcl::Window &rOutWin, tools::Rectangle &rRect)
OUString toId(const void *pValue)
WinBits const WB_MOVEABLE