You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
4.6 KiB
160 lines
4.6 KiB
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* copyright (C) 2004-2006 *
|
|
* Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
|
|
***************************************************************************/
|
|
|
|
#ifndef TOOLBARSTATEARROW_H
|
|
#define TOOLBARSTATEARROW_H
|
|
|
|
|
|
#include "toolbarstate.h"
|
|
|
|
#include "worktoolbar.h"
|
|
|
|
class TQMouseEvent;
|
|
class UMLView;
|
|
|
|
class TQCanvasLine;
|
|
|
|
/**
|
|
* Arrow tool for select, move and resize widgets and associations.
|
|
* Arrow tool delegates the event handling in the widgets and associations. When
|
|
* no widget nor association is being used,the arrow tool acts as a selecting
|
|
* tool that selects all the elements in the rectangle created when dragging the
|
|
* mouse.
|
|
*
|
|
* This is the default tool.
|
|
*/
|
|
class ToolBarStateArrow : public ToolBarState {
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
|
|
/**
|
|
* Creates a new ToolBarStateArrow.
|
|
*
|
|
* @param umlView The UMLView to use.
|
|
*/
|
|
ToolBarStateArrow(UMLView *umlView);
|
|
|
|
/**
|
|
* Destroys this ToolBarStateArrow.
|
|
*/
|
|
virtual ~ToolBarStateArrow();
|
|
|
|
/**
|
|
* Goes back to the inital state.
|
|
*/
|
|
virtual void init();
|
|
|
|
protected:
|
|
|
|
/**
|
|
* Called when the press event happened on an association.
|
|
* Delivers the event to the association.
|
|
*/
|
|
virtual void mousePressAssociation();
|
|
|
|
/**
|
|
* Called when the press event happened on a widget.
|
|
* Delivers the event to the widget.
|
|
*/
|
|
virtual void mousePressWidget();
|
|
|
|
/**
|
|
* Called when the press event happened on an empty space.
|
|
* Calls base method and, if left button was pressed, prepares the selection
|
|
* rectangle.
|
|
*/
|
|
virtual void mousePressEmpty();
|
|
|
|
/**
|
|
* Called when the release event happened on an association.
|
|
* Delivers the event to the association.
|
|
*/
|
|
virtual void mouseReleaseAssociation();
|
|
|
|
/**
|
|
* Called when the release event happened on a widget.
|
|
* Delivers the event to the widget.
|
|
*/
|
|
virtual void mouseReleaseWidget();
|
|
|
|
/**
|
|
* Called when the release event happened on an empty space.
|
|
* If selection rectangle is active, it is cleared. Else, if the right
|
|
* button was released, it shows the pop up menu for the diagram.
|
|
*/
|
|
virtual void mouseReleaseEmpty();
|
|
|
|
/**
|
|
* Called when the double click event happened on an association.
|
|
* Delivers the event to the association.
|
|
*/
|
|
virtual void mouseDoubleClickAssociation();
|
|
|
|
/**
|
|
* Called when the double click event happened on a widget.
|
|
* Delivers the event to the widget.
|
|
*/
|
|
virtual void mouseDoubleClickWidget();
|
|
|
|
/**
|
|
* Called when the move event happened when an association is
|
|
* currently available.
|
|
* Delivers the event to the association.
|
|
*/
|
|
virtual void mouseMoveAssociation();
|
|
|
|
/**
|
|
* Called when the move event happened when a widget is
|
|
* currently available.
|
|
* Delivers the event to the widget.
|
|
*/
|
|
virtual void mouseMoveWidget();
|
|
|
|
/**
|
|
* Called when the move event happened when no association nor
|
|
* widget are currently available.
|
|
* Updates the selection rectangle to the new position and selectes all the
|
|
* widgets in the rectangle.
|
|
*
|
|
* @todo Fix selection
|
|
*/
|
|
virtual void mouseMoveEmpty();
|
|
|
|
/**
|
|
* Sets the widget currently in use.
|
|
* It ensures that the widget is only set if there is no other widget set
|
|
* already.
|
|
* It avoids things like moving a big widget over a little one, clicking
|
|
* right button to cancel the movement and the little widget getting the
|
|
* event, thus not cancelling the movement in the big widget.
|
|
*/
|
|
virtual void setCurrentWidget(UMLWidget* currentWidget);
|
|
|
|
/**
|
|
* Overriden from base class to do nothing, as arrow is the default tool.
|
|
*/
|
|
virtual void changeTool();
|
|
|
|
/**
|
|
* The selection rectangle that contains the four lines of its borders.
|
|
*/
|
|
TQPtrList<TQCanvasLine> m_selectionRect;
|
|
|
|
/**
|
|
* The start position of the selection rectangle.
|
|
*/
|
|
TQPoint m_startPosition;
|
|
|
|
};
|
|
|
|
#endif //TOOLBARSTATEARROW_H
|