void InternalWindow::getContentPaneBounds(Pnt2f& TopLeft, Pnt2f& BottomRight) const { //Get Insets Bounds Pnt2f InsetsTopLeft, InsetsBottomRight; ComponentContainer::getInsideInsetsBounds(InsetsTopLeft, InsetsBottomRight); BottomRight = InsetsBottomRight; if(getMenuBar() == NULL) { TopLeft = InsetsTopLeft; } else { Pnt2f MenuBarTopLeft, MenuBarBottomRight; getMenuBar()->getBounds(MenuBarTopLeft, MenuBarBottomRight); TopLeft = InsetsTopLeft + Vec2f(0, (MenuBarBottomRight.y() - MenuBarTopLeft.y())); } }
void InternalWindow::mouseEntered(MouseEventDetails* const 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()) { ComponentContainer::mouseEntered(e); } }
void InternalWindow::mouseExited(MouseEventDetails* const 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(getParentDrawingSurface() != NULL && getParentDrawingSurface()->getEventProducer() != NULL) { getParentDrawingSurface()->getEventProducer()->setCursorType(WindowEventProducer::CURSOR_POINTER); } ComponentContainer::mouseExited(e); } }
void InternalWindow::updateLayout(void) { //If I have a MenuBar Update it's layout if(getMenuBar() != NULL) { Pnt2f MenuTopLeft, MenuBottomRight; getMenuBar()->updateLayout(); getMenuBarBounds(MenuTopLeft, MenuBottomRight); getMenuBar()->setPosition(MenuTopLeft); getMenuBar()->setSize(Vec2f( MenuBottomRight.x() - MenuTopLeft.x(), getMenuBar()->getPreferredSize().y())); } //If I have a Titlebar then update it's layout if(getDrawDecorations() && getDrawTitlebar() && getTitlebar() != NULL) { Pnt2f TitlebarTopLeft, TitlebarBottomRight; getTitlebarBounds(TitlebarTopLeft, TitlebarBottomRight); getTitlebar()->setPosition(TitlebarTopLeft); getTitlebar()->setSize(Vec2f( TitlebarBottomRight.x() - TitlebarTopLeft.x(), getTitlebar()->getPreferredSize().y())); } ComponentContainer::updateLayout(); }
void InternalWindow::changed(ConstFieldMaskArg whichField, UInt32 origin, BitVector details) { if( ((whichField & FocusedFieldMask) || (whichField & TitlebarFieldMask))&& getTitlebar() != NULL && getDrawTitlebar() && !getTitlebar()->getEnabled()) { getTitlebar()->setEnabled(getFocused()); } if( (whichField & ActiveToolTipFieldMask) && getActiveToolTip() != NULL) { getActiveToolTip()->updateClipBounds(); } if( (whichField & ActivePopupMenusFieldMask) && getMFActivePopupMenus()->size() > 0) { _PopupConnections.clear(); for(UInt32 i(0) ; i<getMFActivePopupMenus()->size() ; ++i) { getActivePopupMenus(i)->setParentWindow(this); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectMouseClicked(boost::bind(&InternalWindow::popupMenuMousePressed, this, _1))))); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectMousePressed(boost::bind(&InternalWindow::popupMenuMousePressed, this, _1))))); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectMouseReleased(boost::bind(&InternalWindow::popupMenuMouseReleased, this, _1))))); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectKeyPressed(boost::bind(&InternalWindow::popupMenuKeyPressed, this, _1))))); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectMouseMoved(boost::bind(&InternalWindow::popupMenuMouseMoved, this, _1))))); _PopupConnections[getActivePopupMenus(i)].push_back(boost::shared_ptr<boost::signals2::scoped_connection>(new boost::signals2::scoped_connection(getParentDrawingSurface()->getEventProducer()->connectMouseDragged(boost::bind(&InternalWindow::popupMenuMouseDragged, this, _1))))); } setLockInput(true); } if( (whichField & MenuBarFieldMask) && getMenuBar() != NULL) { getMenuBar()->setParentWindow(this); } if( (whichField & MenuBarFieldMask) || (whichField & TitlebarFieldMask)) { updateLayout(); } if( (whichField & TitleFieldMask) && getTitlebar() != NULL) { getTitlebar()->setTitle(getTitle()); } if( (whichField & TitlebarFieldMask) && getTitlebar() != NULL) { getTitlebar()->setParentWindow(this); } if((whichField & TitlebarFieldMask) || (whichField & BorderFieldMask) || (whichField & DisabledBorderFieldMask) || (whichField & FocusedBorderFieldMask) || (whichField & RolloverBorderFieldMask) || (whichField & DrawTitlebarFieldMask)) { TitlebarRefPtr TheTitlebar; if(getDrawTitlebar()) { TheTitlebar = getTitlebar(); } else { TheTitlebar = NULL; } if(getBorder() != NULL && getBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getBorder())->setTitlebar(TheTitlebar); } if(getDisabledBorder() != NULL && getDisabledBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getDisabledBorder())->setTitlebar(TheTitlebar); } if(getFocusedBorder() != NULL && getFocusedBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getFocusedBorder())->setTitlebar(TheTitlebar); } if(getRolloverBorder() != NULL && getRolloverBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getRolloverBorder())->setTitlebar(TheTitlebar); } } if( whichField & ClipBoundsFieldMask) { if(getTitlebar() != NULL) { getTitlebar()->updateClipBounds(); } } if( (whichField & TitlebarFieldMask) && getTitlebar() != NULL) { if(getTitlebar()->getTitleLabel() != NULL) { _TitleBarMousePressedConnection = getTitlebar()->getTitleLabel()->connectMousePressed(boost::bind(&InternalWindow::titlebarMousePressed, this, _1)); } if(getTitlebar()->getCloseButton() != NULL) { _CloseButtonActionConnection = getTitlebar()->getCloseButton()->connectActionPerformed(boost::bind(&InternalWindow::closeButtonAction, this, _1)); } if(getTitlebar()->getMaximizeButton() != NULL) { _MaximizeButtonActionConnection = getTitlebar()->getMaximizeButton()->connectActionPerformed(boost::bind(&InternalWindow::maximizeButtonAction, this, _1)); } if(getTitlebar()->getIconifyButton() != NULL) { _IconifyButtonActionConnection = getTitlebar()->getIconifyButton()->connectActionPerformed(boost::bind(&InternalWindow::iconifyButtonAction, this, _1)); } } if( (whichField & IconableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawIconify(getIconable()); } if( (whichField & MaximizableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawMaximize(getMaximizable()); } if( (whichField & ClosableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawClose(getClosable()); } Inherited::changed(whichField, origin, details); }
void InternalWindow::mousePressed(MouseEventDetails* const 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); _WindowStartPosition = getPosition(); _WindowStartSize = getSize(); _MouseStartPosition = e->getLocation(); _BorderDragged = TheArea; _BorderDragMouseDraggedConnection = getParentDrawingSurface()->getEventProducer()->connectMouseDragged(boost::bind(&InternalWindow::borderDragMouseDragged, this, _1)); _BorderDragMouseReleasedConnection = getParentDrawingSurface()->getEventProducer()->connectMouseReleased(boost::bind(&InternalWindow::borderDragMouseReleased, this, _1)); _BorderDragKeyPressedConnection = getParentDrawingSurface()->getEventProducer()->connectKeyPressed(boost::bind(&InternalWindow::borderDragKeyPressed, this, _1)); 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); if(e->isConsumed()) return; 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); if(e->isConsumed()) return; 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); if(e->isConsumed()) return; break; } } Component::mousePressed(e); } }
void InternalWindow::changed(ConstFieldMaskArg whichField, UInt32 origin, BitVector details) { if( ((whichField & FocusedFieldMask) || (whichField & TitlebarFieldMask))&& getTitlebar() != NULL) { getTitlebar()->setEnabled(getFocused()); } if( (whichField & ActiveToolTipFieldMask) && getActiveToolTip() != NULL) { getActiveToolTip()->updateClipBounds(); } if( (whichField & ActivePopupMenusFieldMask) && getMFActivePopupMenus()->size() > 0) { for(UInt32 i(0) ; i<getMFActivePopupMenus()->size() ; ++i) { getActivePopupMenus(i)->setParentContainer(this); getActivePopupMenus(i)->setParentWindow(this); } getDrawingSurface()->getEventProducer()->addMouseListener(&_PopupMenuInteractionListener); getDrawingSurface()->getEventProducer()->addMouseMotionListener(&_PopupMenuInteractionListener); getDrawingSurface()->getEventProducer()->addKeyListener(&_PopupMenuInteractionListener); setLockInput(true); } if( (whichField & MenuBarFieldMask) && getMenuBar() != NULL) { getMenuBar()->setParentContainer(this); getMenuBar()->setParentWindow(this); } if( (whichField & MenuBarFieldMask) || (whichField & TitlebarFieldMask)) { updateLayout(); } if( (whichField & TitleFieldMask) && getTitlebar() != NULL) { getTitlebar()->setTitle(getTitle()); } if( (whichField & TitlebarFieldMask) && getTitlebar() != NULL) { getTitlebar()->setParentContainer(this); getTitlebar()->setParentWindow(this); } if((whichField & TitlebarFieldMask) || (whichField & BorderFieldMask) || (whichField & DisabledBorderFieldMask) || (whichField & FocusedBorderFieldMask) || (whichField & RolloverBorderFieldMask) || (whichField & DrawTitlebarFieldMask)) { TitlebarRefPtr TheTitlebar; if(getDrawTitlebar()) { TheTitlebar = getTitlebar(); } else { TheTitlebar = NULL; } if(getBorder() != NULL && getBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getBorder())->setTitlebar(TheTitlebar); } if(getDisabledBorder() != NULL && getDisabledBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getDisabledBorder())->setTitlebar(TheTitlebar); } if(getFocusedBorder() != NULL && getFocusedBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getFocusedBorder())->setTitlebar(TheTitlebar); } if(getRolloverBorder() != NULL && getRolloverBorder()->getType().isDerivedFrom(WindowBorder::getClassType())) { dynamic_cast<WindowBorder*>(getRolloverBorder())->setTitlebar(TheTitlebar); } } if( whichField & ClipBoundsFieldMask) { if(getTitlebar() != NULL) { getTitlebar()->updateClipBounds(); } } if( (whichField & TitlebarFieldMask) && getTitlebar() != NULL) { if(getTitlebar()->getTitleLabel() != NULL) { getTitlebar()->getTitleLabel()->addMouseListener(&_TitlebarStartDragListener); } if(getTitlebar()->getCloseButton() != NULL) { getTitlebar()->getCloseButton()->addActionListener(&_CloseButtonListener); } if(getTitlebar()->getMaximizeButton() != NULL) { getTitlebar()->getMaximizeButton()->addActionListener(&_MaximizeButtonListener); } if(getTitlebar()->getIconifyButton() != NULL) { getTitlebar()->getIconifyButton()->addActionListener(&_IconifyButtonListener); } } if( (whichField & IconableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawIconify(getIconable()); } if( (whichField & MaximizableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawMaximize(getMaximizable()); } if( (whichField & ClosableFieldMask) && getTitlebar() != NULL) { getTitlebar()->setDrawClose(getClosable()); } Inherited::changed(whichField, origin, details); }
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); } }