void InternalWindow::mouseDragged(const MouseEventUnrecPtr e) { if(getMenuBar() != NULL) { bool isContained; isContained = getMenuBar()->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getMenuBar(),isContained,e->getViewport()); if(isContained) { getMenuBar()->mouseDragged(e); Component::mouseDragged(e); return; } } if(getTitlebar() != NULL) { bool isContained; isContained = getTitlebar()->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getTitlebar(),isContained,e->getViewport()); if(isContained) { getTitlebar()->mouseDragged(e); Component::mouseDragged(e); return; } } if(!getLockInput()) { ComponentContainer::mouseDragged(e); } }
void Slider::KnobDraggedListener::mouseDragged(const MouseEventUnrecPtr e) { if(e->getButton() == e->BUTTON1) { Pnt2f MousePosInComponent = ViewportToComponent(e->getLocation(), _Slider, e->getViewport()); Pnt2f BorderTopLeft, BorderBottomRight; _Slider->getInsideInsetsBounds(BorderTopLeft, BorderBottomRight); UInt16 MajorAxis, MinorAxis; if(_Slider->getOrientation() == VERTICAL_ORIENTATION) { MajorAxis = 1; } else { MajorAxis = 0; } MinorAxis = (MajorAxis+1)%2; if(_Slider->getInverted()) { MousePosInComponent[MajorAxis] = _Slider->getTrackMax() - (MousePosInComponent[MajorAxis] - _Slider->getTrackMin()); } _Slider->setValue( _Slider->getMinimum() + (_Slider->getMaximum() - _Slider->getMinimum()) * (MousePosInComponent[MajorAxis] - _Slider->getTrackMin())/static_cast<Int32>(_Slider->getTrackLength()) ); } }
void ScrollBar::ScrollBarDraggedListener::mouseDragged(const MouseEventUnrecPtr e) { Pnt2f ComponentMousePosition(ViewportToComponent(e->getLocation(), _ScrollBar, e->getViewport())); _ScrollBar->setMajorAxisScrollBarPosition(_InitialScrollBarPosition + (ComponentMousePosition - _InitialMousePosition)); //std::cout << "Diff "<< _InitialMousePosition[AxisIndex] - ComponentMousePosition[AxisIndex] << std::endl; }
void InternalWindow::mouseExited(const MouseEventUnrecPtr e) { if(getMenuBar() != NULL) { bool isContained; isContained = getMenuBar()->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getMenuBar(),isContained,e->getViewport()); } if(getTitlebar() != NULL) { bool isContained; isContained = getTitlebar()->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getTitlebar(),isContained,e->getViewport()); } if(!getLockInput()) { if(getDrawingSurface() != NULL && getDrawingSurface()->getEventProducer() != NULL) { getDrawingSurface()->getEventProducer()->setCursorType(WindowEventProducer::CURSOR_POINTER); } ComponentContainer::mouseExited(e); } }
void InternalWindow::mousePressed(const MouseEventUnrecPtr e) { if(!getLockInput()) { //Check if the Mouse is whithin the resize border width if(getResizable()) { WindowArea TheArea(getCursurArea(e->getLocation())); switch(TheArea) { case WINDOW_LEFT_BORDER: case WINDOW_RIGHT_BORDER: case WINDOW_TOP_BORDER: case WINDOW_BOTTOM_BORDER: case WINDOW_TOP_LEFT_BORDER: case WINDOW_BOTTOM_RIGHT_BORDER: case WINDOW_TOP_RIGHT_BORDER: case WINDOW_BOTTOM_LEFT_BORDER: setLockInput(true); _BorderDraggedListener.setWindowStartPosition(getPosition()); _BorderDraggedListener.setWindowStartSize(getSize()); _BorderDraggedListener.setMouseStartPosition(e->getLocation()); _BorderDraggedListener.setBorderDragged(TheArea); getDrawingSurface()->getEventProducer()->addMouseMotionListener(&_BorderDraggedListener); getDrawingSurface()->getEventProducer()->addMouseListener(&_BorderDraggedListener); getDrawingSurface()->getEventProducer()->addKeyListener(&_BorderDraggedListener); break; } } if(getMenuBar() != NULL) { bool isContained; isContained = getMenuBar()->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getMenuBar(),isContained,e->getViewport()); if(isContained) { getMenuBar()->mousePressed(e); Component::mousePressed(e); return; } } if(getTitlebar() != NULL) { bool isContained; isContained = getTitlebar()->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getTitlebar(),isContained,e->getViewport()); if(isContained) { getTitlebar()->mousePressed(e); Component::mousePressed(e); return; } } //ComponentContainer MousePressed Handling bool isContained(false); for(Int32 i(getMFChildren()->size()-1) ; i>=0 ; --i) { isContained = getChildren(i)->isContained(e->getLocation(), true); checkMouseEnterExit(e,e->getLocation(),getChildren(i),isContained,e->getViewport()); if(isContained) { takeFocus(); if(!getChildren(i)->getType().isDerivedFrom(ComponentContainer::getClassType())) { getChildren(i)->takeFocus(); } getChildren(i)->mousePressed(e); break; } } Component::mousePressed(e); } }
void InternalWindow::PopupMenuInteractionListener::mouseDragged(const MouseEventUnrecPtr e) { for(Int32 i(_InternalWindow->getMFActivePopupMenus()->size()-1) ; i>=0 ; --i) { bool isContained = _InternalWindow->getActivePopupMenus(i)->isContained(e->getLocation(), true); _InternalWindow->checkMouseEnterExit(e,e->getLocation(),_InternalWindow->getActivePopupMenus(i),isContained,e->getViewport()); if(isContained) { _InternalWindow->getActivePopupMenus(i)->mouseDragged(e); return; } } }
void ScrollBar::ScrollBarListener::mousePressed(const MouseEventUnrecPtr e) { if(_ScrollBar->getEnabled() && e->getButton() == e->BUTTON1) { _ScrollBar->_ScrollBarDraggedListener.setInitialMousePosition(ViewportToComponent(e->getLocation(), _ScrollBar, e->getViewport())); _ScrollBar->_ScrollBarDraggedListener.setInitialScrollBarPosition(_ScrollBar->editScrollBar()->getPosition()); _ScrollBar->getParentWindow()->getDrawingSurface()->getEventProducer()->addMouseMotionListener(&(_ScrollBar->_ScrollBarDraggedListener)); _ScrollBar->getParentWindow()->getDrawingSurface()->getEventProducer()->addMouseListener(&(_ScrollBar->_ScrollBarDraggedListener)); } }
void TableHeader::MarginDraggedListener::mouseDragged(const MouseEventUnrecPtr e) { if(e->getButton() == e->BUTTON1) { Pnt2f MousePosInComponent = ViewportToComponent(e->getLocation(), TableHeaderRefPtr(_TableHeader), e->getViewport()); TableColumnRefPtr TheColumn(_TableHeader->getColumnModel()->getColumn(_TableHeader->_ResizingColumn)); Real32 NewWidth(MousePosInComponent.x() - _TableHeader->getColumnHeaders(_TableHeader->_ResizingColumn)->getPosition().x()); if(NewWidth <= 0 || NewWidth < TheColumn->getMinWidth()) { NewWidth = TheColumn->getMinWidth(); } if(NewWidth > TheColumn->getMaxWidth()) { NewWidth = TheColumn->getMaxWidth(); } //Get the new desired center for this margin TheColumn->setWidth(NewWidth); _TableHeader->updateLayout(); } }
void TableHeader::checkMouseMargins(const MouseEventUnrecPtr e) { if(isContainedClipBounds(e->getLocation(), TableHeaderRefPtr(this))) { Pnt2f MousePosInComponent = ViewportToComponent(e->getLocation(), TableHeaderRefPtr(this), e->getViewport()); UInt32 CumulativeHeaderWidth(0); for(UInt32 i(0) ; i<getMFColumnHeaders()->size() ; ++i) { CumulativeHeaderWidth += getColumnHeaders(i)->getSize().x(); if(MousePosInComponent.x() >= CumulativeHeaderWidth - getResizingCursorDriftAllowance() && MousePosInComponent.x() <= CumulativeHeaderWidth + getColumnModel()->getColumnMargin() + getResizingCursorDriftAllowance()) { getParentWindow()->getDrawingSurface()->getEventProducer()->setCursorType(WindowEventProducer::CURSOR_RESIZE_W_TO_E); return; } CumulativeHeaderWidth += getColumnModel()->getColumnMargin(); } } getParentWindow()->getDrawingSurface()->getEventProducer()->setCursorType(WindowEventProducer::CURSOR_POINTER); }
void TableHeader::mousePressed(const MouseEventUnrecPtr e) { if(getResizingAllowed()) { Pnt2f MousePosInComponent = ViewportToComponent(e->getLocation(), TableHeaderRefPtr(this), e->getViewport()); UInt32 CumulativeHeaderWidth(0); for(UInt32 i(0) ; i<getMFColumnHeaders()->size() ; ++i) { CumulativeHeaderWidth += getColumnHeaders(i)->getSize().x(); if(MousePosInComponent.x() >= CumulativeHeaderWidth - getResizingCursorDriftAllowance() && MousePosInComponent.x() <= CumulativeHeaderWidth + getColumnModel()->getColumnMargin() + getResizingCursorDriftAllowance()) { getParentWindow()->getDrawingSurface()->getEventProducer()->addMouseMotionListener(&(_MarginDraggedListener)); getParentWindow()->getDrawingSurface()->getEventProducer()->addMouseListener(&(_MarginDraggedListener)); _ResizingColumn = i; return; } CumulativeHeaderWidth += getColumnModel()->getColumnMargin(); } } Inherited::mousePressed(e); }