summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/listpopupmenu.h
diff options
context:
space:
mode:
Diffstat (limited to 'umbrello/umbrello/listpopupmenu.h')
-rw-r--r--umbrello/umbrello/listpopupmenu.h330
1 files changed, 330 insertions, 0 deletions
diff --git a/umbrello/umbrello/listpopupmenu.h b/umbrello/umbrello/listpopupmenu.h
new file mode 100644
index 00000000..58d779ab
--- /dev/null
+++ b/umbrello/umbrello/listpopupmenu.h
@@ -0,0 +1,330 @@
+/***************************************************************************
+ * *
+ * 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) 2003-2007 *
+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
+ ***************************************************************************/
+
+#ifndef LISTPOPUPMENU_H
+#define LISTPOPUPMENU_H
+
+#include <kpopupmenu.h>
+#include "umlnamespace.h"
+
+class UMLView;
+class UMLWidget;
+class ClassifierWidget;
+
+/**
+ * A popup menu that depending on what type it is set to will
+ * display a different menu.
+ *
+ * @short Displays a popup menu.
+ * @author Paul Hensgen <phensgen@techie.com>
+ * Bugs and comments to uml-devel@lists.sf.net or http://bugs.kde.org
+ */
+
+class ListPopupMenu : public KPopupMenu {
+public:
+
+ /// This type hosts all possible menu types.
+ enum Menu_Type
+ {
+ mt_Model,
+ mt_Logical_View,
+ mt_UseCase_View,
+ mt_Component_View,
+ mt_Deployment_View,
+ mt_EntityRelationship_Model,
+ mt_UseCase_Diagram,
+ mt_Sequence_Diagram,
+ mt_Class_Diagram,
+ mt_Collaboration_Diagram,
+ mt_State_Diagram,
+ mt_Activity_Diagram,
+ mt_Component_Diagram,
+ mt_Deployment_Diagram,
+ mt_EntityRelationship_Diagram,
+ mt_On_UseCase_Diagram,
+ mt_On_Sequence_Diagram,
+ mt_On_Class_Diagram,
+ mt_On_Collaboration_Diagram,
+ mt_On_State_Diagram,
+ mt_On_Activity_Diagram,
+ mt_On_Component_Diagram,
+ mt_On_Deployment_Diagram,
+ mt_On_EntityRelationship_Diagram,
+ mt_Logical_Folder,
+ mt_UseCase_Folder,
+ mt_Component_Folder,
+ mt_Deployment_Folder,
+ mt_EntityRelationship_Folder,
+ mt_Class,
+ mt_Package,
+ mt_Subsystem,
+ mt_Component,
+ mt_Node,
+ mt_Artifact,
+ mt_Interface,
+ mt_Enum,
+ mt_Entity,
+ mt_Datatype,
+ mt_Actor,
+ mt_UseCase,
+ mt_Attribute,
+ mt_EntityAttribute,
+ mt_EnumLiteral,
+ mt_Object,
+ mt_Initial_State,
+ mt_End_State,
+ mt_State,
+ mt_Activity,
+ mt_Initial_Activity,
+ mt_End_Activity,
+ mt_Operation,
+ mt_Template,
+ mt_New_Parameter,
+ mt_New_Operation,
+ mt_New_Attribute,
+ mt_New_Template,
+ mt_New_EnumLiteral,
+ mt_New_EntityAttribute,
+ mt_Parameter_Selected,
+ mt_Operation_Selected,
+ mt_Attribute_Selected,
+ mt_Template_Selected,
+ mt_EnumLiteral_Selected,
+ mt_EntityAttribute_Selected,
+ mt_Association_Selected, // Association without role names
+ mt_Show_Attributes,
+ mt_Show_Attributes_Selection, //SHOWATTS, multiple items
+ mt_Show_Operations,
+ mt_Show_Operations_Selection, //SHOWOPS, multiple items
+ mt_Show_Packages,
+ mt_Show_Packages_Selection, //SHOWPACKAGE, multiple items
+ mt_Show_Stereotypes,
+ mt_Show_Stereotypes_Selection, //SHOWSTEREOTYPE, multiple items
+ mt_Visibility,
+ mt_Visibility_Selection, //SCOPE, multiple items
+ mt_DrawAsCircle,
+ mt_DrawAsCircle_Selection, //DRAWASCIRCLE, multiple items
+ mt_ChangeToClass,
+ mt_ChangeToClass_Selection,
+ mt_ChangeToInterface,
+ mt_ChangeToInterface_Selection,
+ mt_Rename_Object,
+ mt_Select_Operation,
+ mt_Anchor,
+ mt_Properties,
+ mt_Rename,
+ mt_Delete,
+ mt_Export_Image,
+ mt_Import_Classes,
+ mt_Sequence_Number,
+ mt_Cut,
+ mt_Copy,
+ mt_Paste,
+ mt_Clear,
+ mt_Redo,
+ mt_Undo,
+ mt_Link_Docs,
+ mt_Show_Operation_Signature,
+ mt_Show_Operation_Signature_Selection, //SHOWOPSIG, multiple items
+ mt_Show_Attribute_Signature,
+ mt_Show_Attribute_Signature_Selection, //SHOWATTSIG, multiple items
+ mt_Message_Text,
+ mt_Collaboration_Message,
+ mt_FloatText,
+ mt_MultiA,
+ mt_MultiB,
+ mt_Name, //Association name
+ mt_FullAssociation, // Association with role names
+ mt_AttributeAssociation, // Rendering of an attribute as an association
+ mt_RoleNameA,
+ mt_RoleNameB,
+ mt_Delete_Selection,
+ mt_Reset_Label_Positions,
+ mt_Line_Color,
+ mt_Line_Color_Selection, //LINECOLOR, multiple items
+ mt_Fill_Color,
+ mt_Fill_Color_Selection, //FILLCOLOR, multiple items
+ mt_Use_Fill_Color,
+ mt_Default_Properties,
+ mt_Rename_MultiA,
+ mt_Rename_MultiB,
+ mt_Rename_Name,
+ mt_Rename_RoleAName,
+ mt_Rename_RoleBName,
+ mt_Change_Font,
+ mt_Change_Font_Selection,
+ mt_SnapToGrid,
+ mt_ShowSnapGrid,
+ mt_Activity_Selected,
+ mt_New_Activity,
+ mt_Up,
+ mt_Down,
+ mt_Branch,
+ mt_Flip,
+
+ mt_Expand_All, //Expand all items in the list
+ mt_Collapse_All, //Collapse all items in the list
+
+ mt_Refactoring,
+ mt_ViewCode, // view code document contents
+ mt_Clone, // Create a deep copy of the object.
+ mt_Show_Public_Only, // (not currently used)
+ mt_Show_Public_Only_Selection, // Show public operations/attributes only.
+ mt_Externalize_Folder, // Mark folder for saving as separate submodel
+ mt_Internalize_Folder, // Reintegrate separate submodel into main model
+
+ mt_Undefined = - 1
+ };
+
+ /**
+ * Constructs the popup menu for a diagram
+ *
+ * @param parent The parent to ListPopupMenu.
+ * @param type The type of menu to display.
+ * @param view The UMLView in which this ListPopupMenu is going to be displayed
+ */
+ explicit ListPopupMenu(QWidget* parent, Menu_Type type = mt_Undefined, UMLView* view = 0);
+
+ /**
+ * Constructs the popup menu for a list view item.
+ *
+ * @param parent The parent to ListPopupMenu.
+ * @param type The type of menu to display.
+ */
+ ListPopupMenu(QWidget* parent, Uml::ListView_Type type);
+
+ /**
+ * Constructs the popup menu for a canvas widget.
+ *
+ * @param parent The parent to ListPopupMenu.
+ * @param object The UMLWidget to represent a menu for.
+ * @param multi True if multiple items are selected.
+ * @param unique True if multiple selected items all have
+ * the same type (e.g. Class, Interface)
+ */
+ ListPopupMenu(QWidget* parent, UMLWidget* object, bool multi = false, bool unique = false);
+
+ /**
+ * Standard deconstructor.
+ */
+ ~ListPopupMenu();
+
+ /**
+ * Utility: Convert a Menu_Type value to an Object_Type value.
+ */
+ static Uml::Object_Type convert_MT_OT(Menu_Type mt);
+
+ /**
+ * Utility: Convert a Menu_Type value to a Diagram_Type value.
+ */
+ static Uml::Diagram_Type convert_MT_DT(Menu_Type mt);
+
+private:
+ /**
+ * Basic initialization - common to all constructors.
+ */
+ void init();
+
+ /**
+ * Shortcut for inserting a "File->New" choice.
+ */
+ void insertFileNew();
+
+ /**
+ * Shortcut for the most frequently used insertItem() calls.
+ *
+ * @param m The Menu_Type for which to insert a menu item.
+ */
+ void insertStdItem(Menu_Type m);
+
+ /**
+ * Shortcut for the most frequently used insertStdItem() calls.
+ *
+ * @param insertLeadingSeparator Set this true if the group shall
+ * start with a separator.
+ * @param type The Widget_Type for which to insert the menu items.
+ * If no argument is supplied then a Rename item will be
+ * included.
+ */
+ void insertStdItems(bool insertLeadingSeparator = true,
+ Uml::Widget_Type type = Uml::wt_UMLWidget);
+
+ /**
+ * Shortcut for inserting standard model items (Class, Interface,
+ * Datatype, Enum, Package) as well as diagram choices.
+ *
+ * @param folderAndDiagrams Set this true if folders and diagram
+ * types shall be included as choices.
+ */
+ void insertContainerItems(bool folderAndDiagrams);
+
+ /**
+ * Inserts a menu item for an association related text
+ * (such as name, role, multiplicity etc.)
+ *
+ * @param label The menu text.
+ * @param mt The menu type.
+ */
+ void insertAssocItem(const QString &label, Menu_Type mt);
+
+ /**
+ * Inserts a menu item for externalization/de-externalization
+ * of a folder.
+ */
+ void insertSubmodelAction();
+
+ /**
+ * Creates a popup menu for a multiple selection of class and
+ * interface widgets.
+ */
+ void makeMultiClassifierPopup(ClassifierWidget *c);
+
+ /**
+ * Creates a popup menu for a single class or interface widgets.
+ */
+ void makeClassifierPopup(ClassifierWidget *c);
+
+ /**
+ * Shortcut for commonly used menu initializations.
+ *
+ * @param type The Menu_Type for which to set up the menu.
+ * @param view The UMLView parent of the menu.
+ */
+ void setupMenu(Menu_Type type, UMLView * view = 0);
+
+ enum PixMap_Type {
+ pm_Class,
+ pm_Package,
+ pm_Interface,
+ pm_Datatype,
+ pm_Enum,
+ pm_Actor,
+ pm_Usecase,
+ pm_InitialState,
+ pm_EndState,
+ pm_Branch,
+ pm_Object,
+ pm_Component,
+ pm_Node,
+ pm_Artifact,
+ pm_Text,
+ pm_Entity,
+ pm_Subsystem,
+ pm_NUMBER_OF_PIXMAPS
+ };
+ QPixmap m_pixmap[pm_NUMBER_OF_PIXMAPS];
+ KPopupMenu * m_pInsert, * m_pShow, * m_pColor;
+ void setupColor(bool fc);
+ void setupColorSelection(bool fc);
+ void setupDiagramMenu(UMLView* view);
+};
+
+#endif