diff options
Diffstat (limited to 'umbrello/umbrello/toolbarstateother.h')
-rw-r--r-- | umbrello/umbrello/toolbarstateother.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/umbrello/umbrello/toolbarstateother.h b/umbrello/umbrello/toolbarstateother.h new file mode 100644 index 00000000..d5c6f412 --- /dev/null +++ b/umbrello/umbrello/toolbarstateother.h @@ -0,0 +1,83 @@ +/*************************************************************************** + * * + * 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 TOOLBARSTATEOTHER_H +#define TOOLBARSTATEOTHER_H + +#include "toolbarstatepool.h" + +/** + * Other tool creates almost all the objects (except associations and messages). + * Objects are created when left button is released, no matter if it was + * released on an association, on a widget or on an empty space. + * + * Associations and widgets aren't taken into account, and are treated as empty + * spaces. + */ +class ToolBarStateOther : public ToolBarStatePool { + Q_OBJECT +public: + + /** + * Creates a new ToolBarStateOther. + * + * @param umlView The UMLView to use. + */ + ToolBarStateOther(UMLView *umlView); + + /** + * Destroys this ToolBarStateOther. + */ + virtual ~ToolBarStateOther(); + +private: + + /** + * Sets nothing. + * Overriden from base class to ignore associations and widgets and treat + * them as empty spaces to create widgets on it. + */ + virtual void setCurrentElement(); + + /** + * Called when the release event happened on an empty space. + * Associations, widgets and actual empty spaces are all treated as empty + * spaces. It creates a new widget if the left button was released. + * The widget to create depends on the type of the toolbar button selected. + * If the widget is the visual representation of an UMLObject, the object + * factory handles its creation. Otherwise, the widget is created using + * newWidget(). + * The UMLView is resized to fit on all the items. + */ + virtual void mouseReleaseEmpty(); + + /** + * Returns the object type of this tool. + * + * @return The object type of this tool. + */ + Uml::Object_Type getObjectType(); + + /** + * Creates and adds a new widget to the UMLView (if widgets of that type + * don't have an associated UMLObject). + * If the type of the widget doesn't use an UMLObject (for example, a note + * or a box), it creates the widget, adds it to the view and returns true. + * Otherwise, it returns false. + * + * @return True if the widget was created, false otherwise. + * @todo rename to something more clear + */ + bool newWidget(); + +}; + +#endif //TOOLBARSTATEOTHER_H |