umbrello API Documentation

listpopupmenu.cpp

00001 /***************************************************************************
00002  *                                                                         *
00003  *   This program is free software; you can redistribute it and/or modify  *
00004  *   it under the terms of the GNU General Public License as published by  *
00005  *   the Free Software Foundation; either version 2 of the License, or     *
00006  *   (at your option) any later version.                                   *
00007  *                                                                         *
00008  *   copyright (C) 2002-2006                                               *
00009  *   Umbrello UML Modeller Authors <uml-devel@uml.sf.net>                  *
00010  ***************************************************************************/
00011 
00012 // own header
00013 #include "listpopupmenu.h"
00014 
00015 // qt/kde includes
00016 #include <kstandarddirs.h>
00017 #include <kiconloader.h>
00018 #include <klocale.h>
00019 #include <kdebug.h>
00020 
00021 // app includes
00022 #include "umlwidget.h"
00023 #include "umldoc.h"
00024 #include "umllistview.h"
00025 #include "umllistviewitem.h"
00026 #include "classifierwidget.h"
00027 #include "classifier.h"
00028 #include "floatingtextwidget.h"
00029 #include "uml.h"
00030 #include "model_utils.h"
00031 #include "widget_utils.h"
00032 #include "folder.h"
00033 #include "umlview.h"
00034 #include "statewidget.h"
00035 #include "activitywidget.h"
00036 #include "forkjoinwidget.h"
00037 #include "objectwidget.h"
00038 
00039 //ListPopupMenu for a UMLView (diagram)
00040 ListPopupMenu::ListPopupMenu(QWidget *parent, Menu_Type type, UMLView * view)
00041         : KPopupMenu(parent) {
00042     init();
00043     setupMenu(type, view);
00044 }
00045 
00046 //ListPopupMenu for the tree list view
00047 ListPopupMenu::ListPopupMenu(QWidget *parent, Uml::ListView_Type type)
00048         : KPopupMenu(parent) {
00049     init();
00050     Menu_Type mt = mt_Undefined;
00051     switch(type)
00052     {
00053     case Uml::lvt_Logical_View:
00054         mt = mt_Logical_View;
00055         break;
00056 
00057     case Uml::lvt_UseCase_View:
00058         mt = mt_UseCase_View;
00059         break;
00060 
00061     case Uml::lvt_Component_View:
00062         mt = mt_Component_View;
00063         break;
00064 
00065     case Uml::lvt_EntityRelationship_Model:
00066         mt = mt_EntityRelationship_Model;
00067         break;
00068 
00069     case Uml::lvt_Deployment_View:
00070         mt = mt_Deployment_View;
00071         break;
00072 
00073     case Uml::lvt_Logical_Folder:
00074         mt = mt_Logical_Folder;
00075         break;
00076 
00077     case Uml::lvt_UseCase_Folder:
00078         mt = mt_UseCase_Folder;
00079         break;
00080 
00081     case Uml::lvt_Component_Folder:
00082         mt = mt_Component_Folder;
00083         break;
00084 
00085     case Uml::lvt_Deployment_Folder:
00086         mt = mt_Deployment_Folder;
00087         break;
00088 
00089     case Uml::lvt_EntityRelationship_Folder:
00090         mt = mt_EntityRelationship_Folder;
00091         break;
00092 
00093     case Uml::lvt_UseCase_Diagram:
00094         mt = mt_UseCase_Diagram;
00095         break;
00096 
00097     case Uml::lvt_Class_Diagram:
00098         mt = mt_Class_Diagram;
00099         break;
00100 
00101     case Uml::lvt_Collaboration_Diagram:
00102         mt = mt_Collaboration_Diagram;
00103         break;
00104 
00105     case Uml::lvt_Sequence_Diagram:
00106         mt = mt_Sequence_Diagram;
00107         break;
00108 
00109     case Uml::lvt_State_Diagram:
00110         mt = mt_State_Diagram;
00111         break;
00112 
00113     case Uml::lvt_Activity_Diagram:
00114         mt = mt_Activity_Diagram;
00115         break;
00116 
00117     case Uml::lvt_Component_Diagram:
00118         mt = mt_Component_Diagram;
00119         break;
00120 
00121     case Uml::lvt_Deployment_Diagram:
00122         mt = mt_Deployment_Diagram;
00123         break;
00124 
00125     case Uml::lvt_EntityRelationship_Diagram:
00126         mt = mt_EntityRelationship_Diagram;
00127         break;
00128 
00129     case Uml::lvt_Actor:
00130         mt = mt_Actor;
00131         break;
00132 
00133     case Uml::lvt_UseCase:
00134         mt = mt_UseCase;
00135         break;
00136 
00137     case Uml::lvt_Class:
00138         mt = mt_Class;
00139         break;
00140 
00141     case Uml::lvt_Package:
00142         mt = mt_Package;
00143         break;
00144 
00145     case Uml::lvt_Subsystem:
00146         mt = mt_Subsystem;
00147         break;
00148 
00149     case Uml::lvt_Component:
00150         mt = mt_Component;
00151         break;
00152 
00153     case Uml::lvt_Node:
00154         mt = mt_Node;
00155         break;
00156 
00157     case Uml::lvt_Artifact:
00158         mt = mt_Artifact;
00159         break;
00160 
00161     case Uml::lvt_Interface:
00162         mt = mt_Interface;
00163         break;
00164 
00165     case Uml::lvt_Enum:
00166         mt = mt_Enum;
00167         break;
00168 
00169     case Uml::lvt_EnumLiteral:
00170         mt = mt_EnumLiteral;
00171         break;
00172 
00173     case Uml::lvt_Datatype:
00174         mt = mt_Datatype;
00175         break;
00176 
00177     case Uml::lvt_Attribute:
00178         mt = mt_Attribute;
00179         break;
00180 
00181     case Uml::lvt_Operation:
00182         mt = mt_Operation;
00183         break;
00184 
00185     case Uml::lvt_Template:
00186         mt = mt_Template;
00187         break;
00188 
00189     case Uml::lvt_Entity:
00190         mt = mt_Entity;
00191         break;
00192 
00193     case Uml::lvt_EntityAttribute:
00194         mt = mt_EntityAttribute;
00195         break;
00196 
00197     case Uml::lvt_Model:
00198         mt = mt_Model;
00199         break;
00200 
00201     default:   ;
00202         //break;
00203     }
00204     setupMenu(mt);
00205 }
00206 
00207 //ListPopupMenu for a canvas widget
00208 ListPopupMenu::ListPopupMenu(QWidget * parent, UMLWidget * object,
00209                              bool multi, bool unique)
00210         : KPopupMenu(parent)
00211 {
00212     init();
00213     //make the right menu for the type
00214     //make menu for logical view
00215     if(!object)
00216         return;
00217     Uml::Widget_Type type = object -> getBaseType();
00218 
00219     if(multi) {
00220         ClassifierWidget *c = NULL;
00221         if (unique && (type == Uml::wt_Class || type == Uml::wt_Interface)) {
00222             c = static_cast<ClassifierWidget *>( object );
00223             makeMultiClassifierPopup(c);
00224         }
00225         setupColorSelection(object -> getUseFillColour());
00226         insertSeparator();
00227         insertStdItem(mt_Cut);
00228         insertStdItem(mt_Copy);
00229         insertStdItem(mt_Paste);
00230         insertSeparator();
00231         insertItem(SmallIcon( "fonts" ), i18n( "Change Font..." ),
00232                    mt_Change_Font_Selection );
00233         insertItem(SmallIcon( "editdelete" ), i18n("Delete Selected Items"),
00234                    mt_Delete_Selection);
00235 
00236         // add this here and not above with the other stuff of the interface
00237         // user might expect it at this position of the context menu
00238         if (unique) {
00239             if (type == Uml::wt_Interface) {
00240                 insertItem(i18n("Draw as Circle"), mt_DrawAsCircle_Selection);
00241                 setItemChecked( mt_DrawAsCircle_Selection,
00242                                 c->getDrawAsCircle() );
00243                 insertItem(i18n("Change into Class"), mt_ChangeToClass_Selection);
00244             } else if (type == Uml::wt_Class) {
00245                 UMLClassifier *umlc = c->getClassifier();
00246                 if (umlc->getAbstract() && umlc->attributes() == 0)
00247                     insertItem(i18n("Change into Interface"), mt_ChangeToInterface_Selection);
00248             }
00249         }
00250 
00251         if(m_pInsert)
00252             connect(m_pInsert, SIGNAL(activated(int)), this, SIGNAL(activated(int)));
00253         if(m_pShow)
00254             connect(m_pShow, SIGNAL(activated(int)), this, SIGNAL(activated(int)));
00255         if(m_pColor)
00256             connect(m_pColor, SIGNAL(activated(int)), this, SIGNAL(activated(int)));
00257         return;
00258     }
00259 
00260     StateWidget *pState;
00261     ActivityWidget *pActivity;
00262     UMLView * pView = static_cast<UMLView *>( parent );
00263 
00264     switch(type) {
00265     case Uml::wt_Actor:
00266     case Uml::wt_UseCase:
00267         setupColor(object -> getUseFillColour());
00268         insertStdItems(true, type);
00269         insertStdItem(mt_Rename);
00270         insertStdItem(mt_Change_Font);
00271         insertStdItem(mt_Properties);
00272         break;
00273 
00274     case Uml::wt_Class:
00275     case Uml::wt_Interface:
00276         makeClassifierPopup(static_cast<ClassifierWidget*>(object));
00277         break;
00278 
00279     case Uml::wt_Enum:
00280         m_pInsert = new KPopupMenu(this);
00281         m_pInsert->insertItem(SmallIcon("source"), i18n("Enum Literal..."), mt_EnumLiteral);
00282         insertFileNew();
00283         setupColor(object->getUseFillColour());
00284         insertStdItems(true, type);
00285         insertStdItem(mt_Rename);
00286         insertStdItem(mt_Change_Font);
00287         insertStdItem(mt_Properties);
00288         break;
00289 
00290     case Uml::wt_Entity:
00291         m_pInsert = new KPopupMenu(this);
00292         m_pInsert->insertItem(SmallIcon("source"), i18n("Entity Attribute..."), mt_EntityAttribute);
00293         insertFileNew();
00294         setupColor(object->getUseFillColour());
00295         insertStdItems(true, type);
00296         insertStdItem(mt_Rename);
00297         insertStdItem(mt_Change_Font);
00298         insertStdItem(mt_Properties);
00299         break;
00300 
00301     case Uml::wt_Datatype:
00302     case Uml::wt_Package:
00303     case Uml::wt_Component:
00304     case Uml::wt_Node:
00305     case Uml::wt_Artifact:
00306         setupColor(object->getUseFillColour());
00307         insertStdItems(false, type);
00308         insertStdItem(mt_Rename);
00309         insertStdItem(mt_Change_Font);
00310         insertStdItem(mt_Properties);
00311         break;
00312 
00313     case Uml::wt_Object:
00314         //Used for sequence diagram and collaboration diagram widgets
00315         setupColor( object->getUseFillColour() );
00316         if( pView->getType() == Uml::dt_Sequence ) {
00317             insertSeparator();
00318             int tabUp = insertItem( SmallIcon( "1uparrow"), i18n("Move Up"), mt_Up);
00319             insertItem( SmallIcon( "1downarrow"), i18n("Move Down"), mt_Down);
00320             if ( !(static_cast<ObjectWidget*>(object))->canTabUp() ) {
00321                 setItemEnabled(tabUp, false);
00322             }
00323         }
00324         insertStdItems(true, type);
00325         insertItem(i18n("Rename Class..."), mt_Rename);
00326         insertItem(i18n("Rename Object..."), mt_Rename_Object);
00327         insertStdItem(mt_Change_Font);
00328         insertStdItem(mt_Properties);
00329         break;
00330 
00331     case Uml::wt_Message:
00332         insertStdItems(false, type);
00333         insertStdItem(mt_Change_Font);
00334         insertItem(SmallIcon( "filenew"), i18n("New Operation..."), mt_Operation);
00335         insertItem(i18n("Select Operation..."), mt_Select_Operation);
00336         break;
00337 
00338     case Uml::wt_Note:
00339         setupColor(object -> getUseFillColour());
00340         insertSeparator();
00341         insertStdItem(mt_Cut);
00342         insertStdItem(mt_Copy);
00343         insertStdItem(mt_Paste);
00344         insertItem(SmallIcon( "editdelete"), i18n("Clear"), mt_Clear);
00345         insertSeparator();
00346         insertItem(i18n("Change Text..."), mt_Rename);
00347         insertStdItem(mt_Delete);
00348         insertStdItem(mt_Change_Font);
00349         break;
00350 
00351     case Uml::wt_Box:
00352         insertStdItems(false, type);
00353         insertStdItem(mt_Line_Color);
00354         break;
00355 
00356     case Uml::wt_State:
00357         pState = static_cast< StateWidget *>( object );
00358         if( pState -> getStateType() == StateWidget::Normal ) {
00359             m_pInsert = new KPopupMenu(this);
00360             m_pInsert -> insertItem(SmallIcon( "filenew"), i18n("Activity..."), mt_New_Activity);
00361             insertFileNew();
00362         }
00363         setupColor( object -> getUseFillColour() );
00364         insertStdItems(false, type);
00365         if( pState -> getStateType() == StateWidget::Normal ) {
00366             insertItem(i18n("Change State Name..."), mt_Rename);
00367             insertStdItem(mt_Change_Font);
00368             insertStdItem(mt_Properties);
00369         }
00370         break;
00371 
00372     case Uml::wt_ForkJoin:
00373         {
00374             ForkJoinWidget *pForkJoin = static_cast<ForkJoinWidget*>(object);
00375             if (pForkJoin->getDrawVertical())
00376                 insertItem(i18n("Flip Horizontal"), mt_Flip);
00377             else
00378                 insertItem(i18n("Flip Vertical"), mt_Flip);
00379         }
00380         break;
00381 
00382     case Uml::wt_Activity:
00383         pActivity = static_cast<ActivityWidget *>( object );
00384         if( pActivity -> getActivityType() == ActivityWidget::Normal )
00385             setupColor( object -> getUseFillColour() );
00386         insertStdItems(false, type);
00387         if( pActivity -> getActivityType() == ActivityWidget::Normal ) {
00388             insertItem(i18n("Change Activity Name..."), mt_Rename);
00389             insertStdItem(mt_Change_Font);
00390             insertStdItem(mt_Properties);
00391         }
00392         break;
00393 
00394     case Uml::wt_Text:
00395         switch( (static_cast<FloatingTextWidget*>(object))->getRole() ) {
00396         case Uml::tr_MultiB:
00397             insertAssocItem(i18n("Change Multiplicity..."), mt_Rename_MultiB);
00398             break;
00399         case Uml::tr_MultiA:
00400             insertAssocItem(i18n("Change Multiplicity..."), mt_Rename_MultiA);
00401             break;
00402         case Uml::tr_Name:
00403             insertAssocItem(i18n("Change Name"), mt_Rename_Name);
00404             break;
00405         case Uml::tr_RoleAName:
00406             insertAssocItem(i18n("Change Role A Name..."), mt_Rename_RoleAName);
00407             break;
00408         case Uml::tr_RoleBName:
00409             insertAssocItem(i18n("Change Role B Name..."), mt_Rename_RoleBName);
00410             break;
00411         case Uml::tr_ChangeA:
00412         case Uml::tr_ChangeB:
00413             insertStdItem(mt_Change_Font);
00414             insertStdItem(mt_Reset_Label_Positions);
00415             insertStdItem(mt_Properties);
00416             break;
00417 
00418         case Uml::tr_Coll_Message_Self:
00419         case Uml::tr_Coll_Message:
00420         case Uml::tr_Seq_Message_Self:
00421         case Uml::tr_Seq_Message:
00422             insertStdItem(mt_Change_Font);
00423             insertItem(SmallIcon( "filenew"), i18n("New Operation..."), mt_Operation);
00424             insertItem(i18n("Select Operation..."), mt_Select_Operation);
00425             break;
00426 
00427         case Uml::tr_Floating:
00428         default:
00429             insertStdItems(false, type);
00430             insertItem(i18n("Change Text..."), mt_Rename);
00431             insertStdItem(mt_Change_Font);
00432             break;
00433         }
00434         break;
00435     default:
00436         break;
00437     }//end switch
00438 
00439     if(m_pInsert)
00440         connect(m_pInsert, SIGNAL(activated(int)), this, SIGNAL(activated(int)));
00441     if(m_pShow)
00442         connect(m_pShow, SIGNAL(activated(int)), this, SIGNAL(activated(int)));
00443     if(m_pColor)
00444         connect(m_pColor, SIGNAL(activated(int)), this, SIGNAL(activated(int)));
00445 
00446     bool bCutState = UMLApp::app() -> getCutCopyState();
00447     setItemEnabled( mt_Cut, bCutState );
00448     setItemEnabled( mt_Copy, bCutState );
00449     setItemEnabled( mt_Paste, false );
00450 }
00451 
00452 ListPopupMenu::~ListPopupMenu() {}
00453 
00454 void ListPopupMenu::init() {
00455     m_pInsert = 0;
00456     m_pShow = 0;
00457     m_pColor = 0;
00458 }
00459 
00460 void ListPopupMenu::insertFileNew() {
00461     insertItem(SmallIcon("filenew"), i18n("New"), m_pInsert);
00462 }
00463 
00464 void ListPopupMenu::insertStdItem(Menu_Type m)
00465 {
00466     switch (m) {
00467     case mt_Properties:
00468         insertItem(SmallIcon("info"), i18n("Properties"), mt_Properties);
00469         break;
00470     case mt_Rename:
00471         insertItem(i18n("Rename..."), mt_Rename);
00472         break;
00473     case mt_Delete:
00474         insertItem(SmallIcon("editdelete"), i18n("Delete"), mt_Delete);
00475         break;
00476     case mt_Cut:
00477         insertItem(SmallIcon("editcut"), i18n("Cut"), mt_Cut);
00478         break;
00479     case mt_Copy:
00480         insertItem(SmallIcon("editcopy"), i18n("Copy"), mt_Copy);
00481         break;
00482     case mt_Paste:
00483         insertItem(SmallIcon("editpaste"), i18n("Paste"), mt_Paste);
00484         break;
00485     case mt_Change_Font:
00486         insertItem(SmallIcon("fonts"), i18n("Change Font..."), mt_Change_Font);
00487         break;
00488     case mt_Line_Color:
00489         insertItem(SmallIcon("color_line"), i18n("Line Color..."), mt_Line_Color);
00490         break;
00491     case mt_Expand_All:
00492         insertItem(i18n("Expand All"), mt_Expand_All);
00493         break;
00494     case mt_Collapse_All:
00495         insertItem(i18n("Collapse All"), mt_Collapse_All);
00496         break;
00497     case mt_Clone:
00498         insertItem(i18n("Duplicate"), mt_Clone);
00499         break;
00500     case mt_Externalize_Folder:
00501         insertItem(i18n("Externalize Folder..."), mt_Externalize_Folder);
00502         break;
00503     case mt_Internalize_Folder:
00504         insertItem(i18n("Internalize Folder"), mt_Internalize_Folder);
00505         break;
00506     case mt_Import_Classes:
00507         insertItem(BarIcon("source_cpp"), i18n("Import Classes..."), mt_Import_Classes);
00508         break;
00509     case mt_Package:
00510         m_pInsert->insertItem(m_pixmap[pm_Package], i18n("Package"), mt_Package);
00511     case mt_Subsystem:
00512         m_pInsert->insertItem(m_pixmap[pm_Subsystem], i18n("Subsystem"), mt_Subsystem);
00513         break;
00514     case mt_Component:
00515         m_pInsert->insertItem(m_pixmap[pm_Component], i18n("Component"), mt_Component);
00516         break;
00517     case mt_Artifact:
00518         m_pInsert->insertItem(m_pixmap[pm_Artifact], i18n("Artifact"), mt_Artifact);
00519         break;
00520     case mt_Component_Diagram:
00521         m_pInsert->insertItem(BarIcon("umbrello_diagram_component"), i18n("Component Diagram..."),
00522                               mt_Component_Diagram);
00523         break;
00524     case mt_Node:
00525         m_pInsert->insertItem(m_pixmap[pm_Node], i18n("Node"), mt_Node);
00526         break;
00527     case mt_Deployment_Diagram:
00528         m_pInsert->insertItem(Widget_Utils::iconSet(Uml::dt_Deployment), i18n("Deployment Diagram..."),
00529                               mt_Deployment_Diagram);
00530         break;
00531     case mt_Deployment_Folder:
00532     case mt_Component_Folder:
00533     case mt_UseCase_Folder:
00534     case mt_EntityRelationship_Folder:
00535         m_pInsert->insertItem(BarIcon("folder_new"), i18n("Folder"), m);
00536         break;
00537     case mt_Entity:
00538         m_pInsert->insertItem(m_pixmap[pm_Entity], i18n("Entity"), mt_Entity);
00539         break;
00540     case mt_EntityRelationship_Diagram:
00541         m_pInsert->insertItem(Widget_Utils::iconSet(Uml::dt_EntityRelationship), i18n("Entity Relationship Diagram..."),
00542                               mt_EntityRelationship_Diagram);
00543         break;
00544     case mt_Actor:
00545         m_pInsert->insertItem(m_pixmap[pm_Actor], i18n("Actor"), mt_Actor);
00546         break;
00547     case mt_UseCase:
00548         m_pInsert->insertItem(m_pixmap[pm_Usecase], i18n("Use Case"), mt_UseCase);
00549         break;
00550     case mt_UseCase_Diagram:
00551         m_pInsert->insertItem(Widget_Utils::iconSet(Uml::dt_UseCase), i18n("Use Case Diagram..."),
00552                               mt_UseCase_Diagram);
00553         break;
00554     case mt_FloatText:
00555         m_pInsert->insertItem(m_pixmap[pm_Text], i18n("Text Line..." ), mt_FloatText);
00556         break;
00557     case mt_Reset_Label_Positions:
00558         insertItem(i18n("Reset Label Positions"), mt_Reset_Label_Positions);
00559         break;
00560     case mt_New_Parameter:
00561         insertItem(SmallIcon("source"), i18n("New Parameter..."), mt_New_Parameter);
00562         break;
00563     case mt_New_Operation:
00564         insertItem(SmallIcon("CVpublic_meth"),i18n("New Operation..."), mt_New_Operation);
00565         break;
00566     case mt_New_Attribute:
00567         insertItem(SmallIcon("CVpublic_var"), i18n("New Attribute..."), mt_New_Attribute);
00568         break;
00569     case mt_New_Template:
00570         insertItem(SmallIcon("source"), i18n("New Template..."), mt_New_Template);
00571         break;
00572     case mt_New_EnumLiteral:
00573         insertItem(SmallIcon("source"), i18n("New Literal..."), mt_New_EnumLiteral);
00574         break;
00575     case mt_New_EntityAttribute:
00576         insertItem(SmallIcon("source"), i18n("New Entity Attribute..."), mt_New_EntityAttribute);
00577         break;
00578     case mt_New_Activity:
00579         m_pInsert->insertItem(SmallIcon("source"), i18n("Activity..."), mt_New_Activity);
00580         break;
00581     case mt_Export_Image:
00582         insertItem(SmallIcon("image"), i18n("Export as Picture..."), mt_Export_Image);
00583         break;
00584     default:
00585         kWarning() << "ListPopupMenu::insertStdItem called on unimplemented Menu_Type " << m << endl;
00586         break;
00587     }
00588 }
00589 
00590 void ListPopupMenu::insertStdItems(bool insertLeadingSeparator /* = true */,
00591                                    Uml::Widget_Type type /* = wt_UMLWidget */)
00592 {
00593     if (insertLeadingSeparator)
00594         insertSeparator();
00595     insertStdItem(mt_Cut);
00596     insertStdItem(mt_Copy);
00597     insertStdItem(mt_Paste);
00598     insertSeparator();
00599     if (type == Uml::wt_UMLWidget)
00600         insertStdItem(mt_Rename);
00601     else if (Model_Utils::isCloneable(type))
00602         insertStdItem(mt_Clone);
00603     insertStdItem(mt_Delete);
00604 }
00605 
00606 void ListPopupMenu::insertContainerItems(bool folderAndDiagrams) {
00607     if (folderAndDiagrams)
00608         m_pInsert -> insertItem(BarIcon("folder_new"), i18n("Folder"), mt_Logical_Folder);
00609     m_pInsert -> insertItem(m_pixmap[pm_Class], i18n("Class"), mt_Class);
00610     m_pInsert -> insertItem(m_pixmap[pm_Interface], i18n("Interface"), mt_Interface);
00611     m_pInsert -> insertItem(m_pixmap[pm_Datatype], i18n("Datatype"), mt_Datatype);
00612     m_pInsert -> insertItem(m_pixmap[pm_Enum], i18n("Enum"), mt_Enum);
00613     insertStdItem(mt_Package);
00614     if (folderAndDiagrams) {
00615         m_pInsert->insertItem(Widget_Utils::iconSet(Uml::dt_Class), i18n("Class Diagram..."), mt_Class_Diagram);
00616         m_pInsert->insertItem(Widget_Utils::iconSet(Uml::dt_State), i18n("State Diagram..."), mt_State_Diagram);
00617         m_pInsert->insertItem(Widget_Utils::iconSet(Uml::dt_Activity), i18n("Activity Diagram..."), mt_Activity_Diagram);
00618         m_pInsert->insertItem(Widget_Utils::iconSet(Uml::dt_Sequence), i18n("Sequence Diagram..."), mt_Sequence_Diagram);
00619         m_pInsert->insertItem(Widget_Utils::iconSet(Uml::dt_Collaboration), i18n("Collaboration Diagram..."), mt_Collaboration_Diagram);
00620     }
00621     insertFileNew();
00622 }
00623 
00624 void ListPopupMenu::insertAssocItem(const QString &label, Menu_Type mt) {
00625     insertItem(label, mt);
00626     insertStdItem(mt_Change_Font);
00627     insertStdItem(mt_Reset_Label_Positions);
00628     insertStdItem(mt_Properties);
00629 }
00630 
00631 void ListPopupMenu::insertSubmodelAction() {
00632     const Settings::OptionState& ostat = Settings::getOptionState();
00633     if (ostat.generalState.tabdiagrams) {
00634         // Umbrello currently does not support External Folders
00635         // in combination with Tabbed Diagrams.
00636         // If you need external folders then disable the tabbed diagrams
00637         // in the General Settings.
00638         return;
00639     }
00640     UMLListView *listView = UMLApp::app()->getListView();
00641     UMLListViewItem *current = static_cast<UMLListViewItem*>(listView->currentItem());
00642     UMLObject *o = current->getUMLObject();
00643     if (o == NULL) {
00644         kError() << "ListPopupMenu::insertSubmodelAction: "
00645             << current->getText() << " getUMLObject()  returns NULL" << endl;
00646         return;
00647     }
00648     UMLFolder *f = dynamic_cast<UMLFolder*>(o);
00649     if (f == NULL) {
00650         kError() << "ListPopupMenu::insertSubmodelAction: "
00651             << "current->getUMLObject (" << o->getName() << ") is not a Folder" << endl;
00652         return;
00653     }
00654     QString submodelFile = f->getFolderFile();
00655     if (submodelFile.isEmpty())
00656         insertStdItem(mt_Externalize_Folder);
00657     else
00658         insertStdItem(mt_Internalize_Folder);
00659 }
00660 
00661 void ListPopupMenu::makeMultiClassifierPopup(ClassifierWidget *c)
00662 {
00663     Uml::Widget_Type type = c->getBaseType();
00664     ClassifierWidget *cls = NULL;
00665 
00666     m_pShow = new KPopupMenu(this);
00667     m_pShow->setCheckable(true);
00668     if (type == Uml::wt_Class) {
00669         cls = static_cast<ClassifierWidget*>(c);
00670         m_pShow->insertItem( i18n("Attributes"), mt_Show_Attributes_Selection);
00671         m_pShow->setItemChecked(mt_Show_Attributes_Selection,
00672                                 cls->getShowAtts());
00673     }
00674     m_pShow->insertItem(i18n("Operations"), mt_Show_Operations_Selection);
00675     m_pShow->setItemChecked(mt_Show_Operations_Selection, c->getShowOps());
00676     m_pShow->insertItem(i18n("Public Only"), mt_Show_Public_Only_Selection);
00677     m_pShow->setItemChecked(mt_Show_Public_Only_Selection, c->getShowPublicOnly());
00678     m_pShow->insertItem(i18n("Visibility"), mt_Visibility_Selection);
00679     m_pShow->setItemChecked(mt_Visibility_Selection, c->getShowVisibility());
00680     m_pShow->insertItem(i18n("Operation Signature"),
00681                         mt_Show_Operation_Signature_Selection);
00682     bool sig = (c->getShowOpSigs() == Uml::st_SigNoVis ||
00683                 c->getShowOpSigs() == Uml::st_ShowSig);
00684     m_pShow->setItemChecked(mt_Show_Operation_Signature_Selection, sig);
00685     if (type == Uml::wt_Class) {
00686         m_pShow->insertItem(i18n("Attribute Signature"),
00687                             mt_Show_Attribute_Signature_Selection);
00688         sig = (cls->getShowAttSigs() == Uml::st_SigNoVis ||
00689                cls->getShowAttSigs() == Uml::st_ShowSig);
00690         m_pShow->setItemChecked(mt_Show_Attribute_Signature_Selection, sig);
00691     }
00692     m_pShow->insertItem(i18n("Package"), mt_Show_Packages_Selection);
00693     m_pShow->setItemChecked(mt_Show_Packages_Selection, c->getShowPackage());
00694     if (type == Uml::wt_Class) {
00695         m_pShow->insertItem(i18n("Stereotype"), mt_Show_Stereotypes_Selection);
00696         m_pShow->setItemChecked(mt_Show_Stereotypes_Selection,
00697                                 cls->getShowStereotype());
00698     }
00699     insertItem(i18n("Show"), m_pShow);
00700 }
00701 
00702 void ListPopupMenu::makeClassifierPopup(ClassifierWidget *c)
00703 {
00704     Uml::Widget_Type type = c->getBaseType();
00705     m_pInsert = new KPopupMenu(this);
00706     if (type == Uml::wt_Class)
00707         m_pInsert->insertItem(SmallIcon( "CVpublic_var" ), i18n("Attribute..."), mt_Attribute);
00708     m_pInsert->insertItem( SmallIcon( "CVpublic_meth"), i18n("Operation..."), mt_Operation);
00709     insertFileNew();
00710 
00711     makeMultiClassifierPopup(c);
00712 
00713     setupColor(c->getUseFillColour());
00714     insertStdItems(true, type);
00715     insertStdItem(mt_Rename);
00716     insertStdItem(mt_Change_Font);
00717     if (type == Uml::wt_Interface) {
00718         insertItem(i18n("Draw as Circle"), mt_DrawAsCircle);
00719         setItemChecked( mt_DrawAsCircle, c->getDrawAsCircle() );
00720         insertItem(i18n("Change into Class"), mt_ChangeToClass);
00721     } else {
00722         insertItem(i18n("Refactor"), mt_Refactoring);
00723         insertItem(i18n("View Code"), mt_ViewCode);
00724         UMLClassifier *umlc = c->getClassifier();
00725         if (umlc->getAbstract() && umlc->attributes() == 0)
00726             insertItem(i18n("Change into Interface"), mt_ChangeToInterface);
00727     }
00728     insertStdItem(mt_Properties);
00729 }
00730 
00731 void ListPopupMenu::setupColor(bool fc)
00732 {
00733     m_pColor = new KPopupMenu(this);
00734     m_pColor -> insertItem(SmallIcon( "color_line"), i18n("Line Color..."), mt_Line_Color);
00735     m_pColor -> insertItem(SmallIcon( "color_fill"), i18n("Fill Color..."), mt_Fill_Color);
00736     m_pColor -> insertItem( i18n("Use Fill Color"), mt_Use_Fill_Color);
00737 
00738     m_pColor -> setItemChecked(mt_Use_Fill_Color, fc);
00739     insertItem(SmallIcon( "colorize"), i18n("Color"), m_pColor);
00740 }
00741 
00742 void ListPopupMenu::setupColorSelection(bool fc)
00743 {
00744     m_pColor = new KPopupMenu(this);
00745     m_pColor -> insertItem(SmallIcon( "color_line"), i18n("Line Color..."), mt_Line_Color_Selection);
00746     m_pColor -> insertItem(SmallIcon( "color_fill"), i18n("Fill Color..."), mt_Fill_Color_Selection);
00747     m_pColor -> insertItem( i18n("Use Fill Color"), mt_Use_Fill_Color);
00748 
00749     m_pColor -> setItemChecked(mt_Use_Fill_Color, fc);
00750     insertItem(SmallIcon( "colorize"), i18n("Color"), m_pColor);
00751 }
00752 
00753 Uml::Diagram_Type ListPopupMenu::convert_MT_DT(Menu_Type mt) {
00754     Uml::Diagram_Type type =  Uml::dt_Undefined;
00755 
00756     switch(mt) {
00757     case mt_UseCase_Diagram:
00758         type = Uml::dt_UseCase;
00759         break;
00760     case mt_Class_Diagram:
00761         type = Uml::dt_Class;
00762         break;
00763     case mt_Sequence_Diagram:
00764         type = Uml::dt_Sequence;
00765         break;
00766     case mt_Collaboration_Diagram:
00767         type = Uml::dt_Collaboration;
00768         break;
00769     case mt_State_Diagram:
00770         type = Uml::dt_State;
00771         break;
00772     case mt_Activity_Diagram:
00773         type = Uml::dt_Activity;
00774         break;
00775     case mt_Component_Diagram:
00776         type = Uml::dt_Component;
00777         break;
00778     case mt_Deployment_Diagram:
00779         type = Uml::dt_Deployment;
00780         break;
00781     case mt_EntityRelationship_Diagram:
00782         type = Uml::dt_EntityRelationship;
00783         break;
00784     default:
00785         break;
00786     }
00787     return type;
00788 }
00789 
00790 Uml::Object_Type ListPopupMenu::convert_MT_OT(Menu_Type mt) {
00791     Uml::Object_Type type =  Uml::ot_UMLObject;
00792 
00793     switch(mt) {
00794     case mt_UseCase:
00795         type = Uml::ot_UseCase;
00796         break;
00797     case mt_Actor:
00798         type = Uml::ot_Actor;
00799         break;
00800     case mt_Class:
00801         type = Uml::ot_Class;
00802         break;
00803     case mt_Attribute:
00804         type = Uml::ot_Attribute;
00805         break;
00806     case mt_EntityAttribute:
00807         type = Uml::ot_EntityAttribute;
00808         break;
00809     case mt_Operation:
00810         type = Uml::ot_Operation;
00811         break;
00812     default:
00813         break;
00814     }
00815     return type;
00816 }
00817 
00818 void ListPopupMenu::setupMenu(Menu_Type type, UMLView* view) {
00819     //make the right menu for the type
00820     //make menu for logical view
00821     m_pInsert = 0;
00822 
00823     m_pShow = 0;
00824     m_pColor = 0;
00825 
00826     KStandardDirs* dirs = KGlobal::dirs();
00827     QString dataDir = dirs->findResourceDir("data", "umbrello/pics/object.png");
00828     dataDir += "/umbrello/pics/";
00829     m_pixmap[pm_Class]       .load(dataDir+"class.png",         "PNG");
00830     m_pixmap[pm_Package]     .load(dataDir+"package.png",       "PNG");
00831     m_pixmap[pm_Interface]   .load(dataDir+"interface.png",     "PNG");
00832     m_pixmap[pm_Datatype]    .load(dataDir+"datatype.png",      "PNG");
00833     m_pixmap[pm_Enum]        .load(dataDir+"enum.png",          "PNG");
00834     m_pixmap[pm_Actor]       .load(dataDir+"actor.png",         "PNG");
00835     m_pixmap[pm_Usecase]     .load(dataDir+"usecase.png",       "PNG");
00836     m_pixmap[pm_InitialState].load(dataDir+"initial_state.png", "PNG");
00837     m_pixmap[pm_EndState]    .load(dataDir+"end_state.png",     "PNG");
00838     m_pixmap[pm_Branch]      .load(dataDir+"branch.png",        "PNG");
00839     m_pixmap[pm_Object]      .load(dataDir+"object.png",        "PNG");
00840     m_pixmap[pm_Component]   .load(dataDir+"component.png",     "PNG");
00841     m_pixmap[pm_Node]        .load(dataDir+"node.png",          "PNG");
00842     m_pixmap[pm_Entity]      .load(dataDir+"entity.png",        "PNG");
00843     m_pixmap[pm_Artifact]    .load(dataDir+"artifact.png",      "PNG");
00844     m_pixmap[pm_Text]        .load(dataDir+"text.png",          "PNG");
00845     m_pixmap[pm_Subsystem]   .load(dataDir+"subsystem.png",     "PNG");
00846 
00847     switch(type) {
00848     case mt_Logical_View:
00849         m_pInsert = new KPopupMenu(this);
00850         insertContainerItems(true);
00851         insertSeparator();
00852         insertStdItem(mt_Paste);
00853         insertSeparator();
00854         insertStdItem(mt_Import_Classes);
00855         insertSeparator();
00856         insertStdItem(mt_Expand_All);
00857         insertStdItem(mt_Collapse_All);
00858         break;
00859 
00860     case mt_Component_View:
00861         m_pInsert = new KPopupMenu(this);
00862         insertStdItem(mt_Component_Folder);
00863         insertStdItem(mt_Subsystem);
00864         insertStdItem(mt_Component);
00865         insertStdItem(mt_Artifact);
00866         insertStdItem(mt_Component_Diagram);
00867         insertFileNew();
00868         insertSeparator();
00869         insertStdItem(mt_Paste);
00870         insertSeparator();
00871         insertStdItem(mt_Expand_All);
00872         insertStdItem(mt_Collapse_All);
00873         break;
00874 
00875     case mt_Deployment_View:
00876         m_pInsert = new KPopupMenu(this);
00877         insertStdItem(mt_Deployment_Folder);
00878         insertStdItem(mt_Node);
00879         insertStdItem(mt_Deployment_Diagram);
00880         insertFileNew();
00881         insertSeparator();
00882         insertStdItem(mt_Paste);
00883         insertSeparator();
00884         insertStdItem(mt_Expand_All);
00885         insertStdItem(mt_Collapse_All);
00886         break;
00887 
00888     case mt_EntityRelationship_Model:
00889         m_pInsert = new KPopupMenu(this);
00890         insertStdItem(mt_EntityRelationship_Folder);
00891         insertStdItem(mt_Entity);
00892         insertStdItem(mt_EntityRelationship_Diagram);
00893         insertFileNew();
00894         insertSeparator();
00895         insertStdItem(mt_Paste);
00896         insertSeparator();
00897         insertStdItem(mt_Expand_All);
00898         insertStdItem(mt_Collapse_All);
00899         break;
00900 
00901     case mt_UseCase_View:
00902         m_pInsert = new KPopupMenu(this);
00903         insertStdItem(mt_UseCase_Folder);
00904         insertStdItem(mt_Actor);
00905         insertStdItem(mt_UseCase);
00906         insertStdItem(mt_UseCase_Diagram);
00907         insertFileNew();
00908         insertSeparator();
00909         //                      insertStdItem(mt_Cut);
00910         //                      insertStdItem(mt_Copy);
00911         insertStdItem(mt_Paste);
00912         insertSeparator();
00913         insertStdItem(mt_Expand_All);
00914         insertStdItem(mt_Collapse_All);
00915         break;
00916 
00917     case mt_Logical_Folder:
00918         m_pInsert = new KPopupMenu(this);
00919         insertContainerItems(true);
00920         insertStdItems();
00921         insertStdItem(mt_Import_Classes);
00922         insertSubmodelAction();
00923         insertSeparator();
00924         insertStdItem(mt_Expand_All);
00925         insertStdItem(mt_Collapse_All);
00926         break;
00927 
00928     case mt_Component_Folder:
00929         m_pInsert = new KPopupMenu(this);
00930         insertStdItem(mt_Component_Folder);
00931         insertStdItem(mt_Subsystem);
00932         insertStdItem(mt_Component);
00933         insertStdItem(mt_Artifact);
00934         insertStdItem(mt_Component_Diagram);
00935         insertFileNew();
00936         insertStdItems();
00937         insertSubmodelAction();
00938         insertSeparator();
00939         insertStdItem(mt_Expand_All);
00940         insertStdItem(mt_Collapse_All);
00941         break;
00942 
00943     case mt_Deployment_Folder:
00944         m_pInsert = new KPopupMenu(this);
00945         insertStdItem(mt_Deployment_Folder);
00946         insertStdItem(mt_Node);
00947         insertStdItem(mt_Deployment_Diagram);
00948         insertFileNew();
00949         insertStdItems();
00950         insertSubmodelAction();
00951         insertSeparator();
00952         insertStdItem(mt_Expand_All);
00953         insertStdItem(mt_Collapse_All);
00954         break;
00955 
00956     case mt_UseCase_Folder:
00957         m_pInsert = new KPopupMenu(this);
00958         insertStdItem(mt_UseCase_Folder);
00959         insertStdItem(mt_Actor);
00960         insertStdItem(mt_UseCase);
00961         insertStdItem(mt_UseCase_Diagram);
00962         insertFileNew();
00963         insertStdItems();
00964         insertSubmodelAction();
00965         insertSeparator();
00966         insertStdItem(mt_Expand_All);
00967         insertStdItem(mt_Collapse_All);
00968         break;
00969 
00970     case mt_EntityRelationship_Folder:
00971         m_pInsert = new KPopupMenu(this);
00972         insertStdItem(mt_EntityRelationship_Folder);
00973         insertStdItem(mt_Entity);
00974         insertStdItem(mt_EntityRelationship_Diagram);
00975         insertFileNew();
00976         insertStdItems();
00977         insertSubmodelAction();
00978         insertSeparator();
00979         insertStdItem(mt_Expand_All);
00980         insertStdItem(mt_Collapse_All);
00981         break;
00982 
00983     case mt_UseCase_Diagram:
00984     case mt_Sequence_Diagram:
00985     case mt_Class_Diagram:
00986     case mt_Collaboration_Diagram:
00987     case mt_State_Diagram:
00988     case mt_Activity_Diagram:
00989     case mt_Component_Diagram:
00990     case mt_Deployment_Diagram:
00991     case mt_EntityRelationship_Diagram:
00992         //don't insert standard items because cut/copy not currently
00993         // possible with tabbed diagrams (it didn't work anyway)
00994         //insertStdItems(false);
00995         insertStdItem(mt_Rename);
00996         insertStdItem(mt_Delete);
00997         insertStdItem(mt_Export_Image);
00998         insertStdItem(mt_Properties);
00999         break;
01000 
01001         //FIXME a lot of these insertItem()s could be insertStandardItem()s
01002     case mt_On_UseCase_Diagram:
01003         m_pInsert = new KPopupMenu( this );
01004         m_pInsert -> insertItem(m_pixmap[pm_Actor], i18n( "Actor..." ), mt_Actor );
01005         m_pInsert -> insertItem(m_pixmap[pm_Usecase], i18n( "Use Case..."), mt_UseCase );
01006         insertStdItem(mt_FloatText );
01007         insertFileNew();
01008         insertSeparator();
01009         setupDiagramMenu(view);
01010         break;
01011 
01012     case mt_On_Class_Diagram:
01013         m_pInsert = new KPopupMenu( this );
01014         m_pInsert -> insertItem(m_pixmap[pm_Class], i18n("Class..."), mt_Class);
01015         m_pInsert->insertItem(m_pixmap[pm_Interface], i18n("Interface..."), mt_Interface);
01016         m_pInsert->insertItem(m_pixmap[pm_Datatype], i18n("Datatype..."), mt_Datatype);
01017         m_pInsert->insertItem(m_pixmap[pm_Enum], i18n("Enum..."), mt_Enum);
01018         m_pInsert -> insertItem(m_pixmap[pm_Package], i18n("Package..."), mt_Package);
01019         insertStdItem(mt_FloatText);
01020         insertFileNew();
01021         insertSeparator();
01022         setupDiagramMenu(view);
01023         break;
01024 
01025     case mt_On_State_Diagram:
01026         m_pInsert = new KPopupMenu( this );
01027         m_pInsert -> insertItem(m_pixmap[pm_InitialState], i18n("Initial State"), mt_Initial_State );
01028         m_pInsert -> insertItem(m_pixmap[pm_EndState], i18n("End State"), mt_End_State );
01029         m_pInsert -> insertItem(m_pixmap[pm_Usecase], i18n("State..."), mt_State );
01030         insertStdItem(mt_FloatText);
01031         insertFileNew();
01032         insertSeparator();
01033         setupDiagramMenu(view);
01034         break;
01035 
01036     case mt_On_Activity_Diagram:
01037         m_pInsert = new KPopupMenu( this );
01038         m_pInsert -> insertItem(m_pixmap[pm_InitialState], i18n("Initial Activity"), mt_Initial_Activity );
01039         m_pInsert -> insertItem(m_pixmap[pm_EndState], i18n("End Activity"), mt_End_Activity );
01040         m_pInsert -> insertItem(m_pixmap[pm_Usecase], i18n("Activity..."), mt_Activity );
01041         m_pInsert -> insertItem(m_pixmap[pm_Branch], i18n("Branch/Merge"), mt_Branch );
01042         insertStdItem(mt_FloatText);
01043         insertFileNew();
01044         insertSeparator();
01045         setupDiagramMenu(view);
01046         break;
01047 
01048     case mt_On_Component_Diagram:
01049         m_pInsert = new KPopupMenu(this);
01050         m_pInsert->insertItem(m_pixmap[pm_Subsystem], i18n("Subsystem..."), mt_Subsystem);
01051         m_pInsert->insertItem(m_pixmap[pm_Component], i18n("Component..."), mt_Component);
01052         m_pInsert->insertItem(m_pixmap[pm_Artifact], i18n("Artifact..."), mt_Artifact);
01053         insertFileNew();
01054         insertSeparator();
01055         setupDiagramMenu(view);
01056         break;
01057 
01058     case mt_On_Deployment_Diagram:
01059         m_pInsert = new KPopupMenu(this);
01060         m_pInsert->insertItem(m_pixmap[pm_Node], i18n("Node..."), mt_Node);
01061         insertFileNew();
01062         insertSeparator();
01063         setupDiagramMenu(view);
01064         break;
01065 
01066     case mt_On_EntityRelationship_Diagram:
01067         m_pInsert = new KPopupMenu(this);
01068         m_pInsert->insertItem(m_pixmap[pm_Entity], i18n("Entity..."), mt_Entity);
01069         insertFileNew();
01070         insertSeparator();
01071         setupDiagramMenu(view);
01072         break;
01073 
01074     case mt_On_Sequence_Diagram:
01075     case mt_On_Collaboration_Diagram:
01076         m_pInsert = new KPopupMenu( this );
01077         m_pInsert -> insertItem(m_pixmap[pm_Object], i18n("Object..."), mt_Object);
01078         insertStdItem(mt_FloatText);
01079         insertFileNew();
01080         insertSeparator();
01081         setupDiagramMenu(view);
01082         break;
01083 
01084     case mt_Class:
01085         m_pInsert = new KPopupMenu(this);
01086         m_pInsert -> insertItem(SmallIcon( "CVpublic_var"), i18n("Attribute"), mt_Attribute);
01087         m_pInsert -> insertItem(SmallIcon( "CVpublic_meth"), i18n("Operation"), mt_Operation);
01088         m_pInsert -> insertItem(SmallIcon("source"), i18n("Template"), mt_Template);
01089         insertFileNew();
01090         insertStdItems();
01091         insertStdItem(mt_Properties);
01092         break;
01093 
01094     case mt_Interface:
01095         m_pInsert = new KPopupMenu(this);
01096         m_pInsert->insertItem(SmallIcon("CVpublic_meth"), i18n("Operation"), mt_Operation);
01097         m_pInsert -> insertItem(SmallIcon("source"), i18n("Template"), mt_Template);
01098         insertFileNew();
01099         insertStdItems();
01100         insertStdItem(mt_Properties);
01101         break;
01102 
01103     case mt_Package:
01104         m_pInsert = new KPopupMenu(this);
01105         insertContainerItems(false);
01106         insertStdItems();
01107         insertStdItem(mt_Properties);
01108         insertSeparator();
01109         insertStdItem(mt_Expand_All);
01110         insertStdItem(mt_Collapse_All);
01111         break;
01112 
01113     case mt_Subsystem:
01114         m_pInsert = new KPopupMenu(this);
01115         insertStdItem(mt_Subsystem);
01116         insertStdItem(mt_Component);
01117         insertStdItem(mt_Artifact);
01118         insertFileNew();
01119         insertStdItems();
01120         insertStdItem(mt_Properties);
01121         insertSeparator();
01122         insertStdItem(mt_Expand_All);
01123         insertStdItem(mt_Collapse_All);
01124         break;
01125 
01126     case mt_Component:
01127         m_pInsert = new KPopupMenu(this);
01128         insertStdItem(mt_Component);
01129         insertStdItem(mt_Artifact);
01130         insertFileNew();
01131         insertStdItems();
01132         insertStdItem(mt_Properties);
01133         insertSeparator();
01134         insertStdItem(mt_Expand_All);
01135         insertStdItem(mt_Collapse_All);
01136         break;
01137 
01138     case mt_Entity:
01139         m_pInsert = new KPopupMenu(this);
01140         m_pInsert->insertItem(SmallIcon("source"), i18n("Entity Attribute..."), mt_EntityAttribute);
01141         insertFileNew();
01142         insertStdItems();
01143         insertStdItem(mt_Properties);
01144         break;
01145 
01146     case mt_Datatype:
01147     case mt_Enum:
01148     case mt_Node:
01149     case mt_Artifact:
01150     case mt_Actor:
01151     case mt_UseCase:
01152     case mt_Attribute:
01153     case mt_EntityAttribute:
01154     case mt_Operation:
01155     case mt_Template:
01156         insertStdItems(false);
01157         insertStdItem(mt_Properties);
01158         break;
01159 
01160     case mt_New_Parameter:
01161         insertStdItem(mt_New_Parameter);
01162         break;
01163 
01164     case mt_New_Operation:
01165         insertStdItem(mt_New_Operation);
01166         break;
01167 
01168     case mt_New_Attribute:
01169         insertStdItem(mt_New_Attribute);
01170         break;
01171 
01172     case mt_New_Template:
01173         insertStdItem(mt_New_Template);
01174         break;
01175 
01176     case mt_New_EnumLiteral:
01177         insertStdItem(mt_New_EnumLiteral);
01178         break;
01179 
01180     case mt_New_EntityAttribute:
01181         insertStdItem(mt_New_EntityAttribute);
01182         break;
01183 
01184     case mt_New_Activity:
01185         m_pInsert = new KPopupMenu(this);
01186         insertStdItem(mt_New_Activity);
01187         insertFileNew();
01188         break;
01189 
01190     case mt_Activity_Selected:
01191         m_pInsert = new KPopupMenu(this);
01192         insertStdItem(mt_New_Activity);
01193         insertFileNew();
01194         insertStdItem(mt_Rename);
01195         insertStdItem(mt_Delete);
01196         break;
01197 
01198     case mt_Parameter_Selected:
01199         insertStdItem(mt_New_Parameter);
01200         insertStdItem(mt_Rename);
01201         insertStdItem(mt_Delete);
01202         insertStdItem(mt_Properties);
01203         break;
01204 
01205     case mt_Operation_Selected:
01206         insertStdItem(mt_New_Operation);
01207         insertStdItem(mt_Delete);
01208         insertStdItem(mt_Properties);
01209         break;
01210 
01211     case mt_Attribute_Selected:
01212         insertStdItem(mt_New_Attribute);
01213         insertStdItem(mt_Delete);
01214         insertStdItem(mt_Properties);
01215         break;
01216 
01217     case mt_Template_Selected:
01218         insertItem(SmallIcon("source"),i18n("New Template..."), mt_New_Attribute);
01219         insertStdItem(mt_Delete);
01220         insertStdItem(mt_Properties);
01221         break;
01222 
01223     case mt_EnumLiteral_Selected:
01224         insertStdItem(mt_New_EnumLiteral);
01225         insertStdItem(mt_Delete);
01226         insertStdItem(mt_Properties);
01227         break;
01228 
01229     case mt_EntityAttribute_Selected:
01230         insertStdItem(mt_New_EntityAttribute);
01231         insertStdItem(mt_Delete);
01232         insertStdItem(mt_Properties);
01233         break;
01234 
01235     case mt_Association_Selected:
01236         insertStdItem(mt_Delete);
01237         insertStdItem(mt_Line_Color);
01238         insertStdItem(mt_Properties);
01239         break;
01240 
01241     case mt_Anchor:
01242         insertItem(SmallIcon( "editdelete"),i18n("Delete Anchor"), mt_Delete);
01243         break;
01244 
01245     case mt_RoleNameA:
01246         insertAssocItem(i18n("Change Role A Name..."), mt_Rename_RoleAName);
01247         break;
01248 
01249     case mt_RoleNameB:
01250         insertAssocItem(i18n("Change Role B Name..."), mt_Rename_RoleBName);
01251         break;
01252 
01253     case mt_MultiB:
01254         insertAssocItem(i18n("Change Multiplicity..."), mt_Rename_MultiB);
01255         break;
01256 
01257     case mt_MultiA:
01258         insertAssocItem(i18n("Change Multiplicity..."), mt_Rename_MultiA);
01259         break;
01260 
01261     case mt_Name:
01262         insertAssocItem(i18n("Change Name"), mt_Rename_Name);
01263         break;
01264 
01265     case mt_FullAssociation:
01266         insertStdItem(mt_Delete);
01267         insertItem(i18n("Change Association Name..."), mt_Rename_Name);
01268         insertItem(i18n("Change Role A Name..."), mt_Rename_RoleAName);
01269         insertItem(i18n("Change Role B Name..."), mt_Rename_RoleBName);
01270         insertStdItem(mt_Change_Font);
01271         insertStdItem(mt_Reset_Label_Positions);
01272         insertStdItem(mt_Line_Color);
01273         insertStdItem(mt_Properties);
01274         break;
01275 
01276     case mt_Collaboration_Message:
01277         //                      insertStdItem(mt_Cut);
01278         //                      insertStdItem(mt_Copy);
01279         //                      insertStdItem(mt_Paste);
01280         //                      insertSeparator();
01281         insertStdItem(mt_Delete);
01282         insertStdItem(mt_Change_Font);
01283         insertStdItem(mt_New_Operation);
01284         insertItem(i18n("Select Operation..."), mt_Select_Operation);
01285         break;
01286 
01287     case mt_Model:
01288         insertItem(i18n("Rename..."), mt_Model);
01289         break;
01290 
01291     default:
01292         insertStdItem(mt_Expand_All);
01293         insertStdItem(mt_Collapse_All);
01294         break;
01295     }//end switch
01296 
01297     if( view ) {
01298         bool bCutState = UMLApp::app() -> getCutCopyState();
01299         setItemEnabled( mt_Undo, UMLApp::app()->getUndoEnabled() );
01300         setItemEnabled( mt_Redo, UMLApp::app()->getRedoEnabled() );
01301         setItemEnabled( mt_Cut, bCutState );
01302         setItemEnabled( mt_Copy, bCutState );
01303         setItemEnabled( mt_Paste, UMLApp::app() -> getPasteState() );
01304     }
01305     if(m_pInsert)
01306         connect(m_pInsert, SIGNAL(activated(int)), this, SIGNAL(activated(int)));
01307     if(m_pShow)
01308         connect(m_pShow, SIGNAL(activated(int)), this, SIGNAL(activated(int)));
01309     if(m_pColor)
01310         connect(m_pColor, SIGNAL(activated(int)), this, SIGNAL(activated(int)));
01311 }
01312 
01313 void ListPopupMenu::setupDiagramMenu(UMLView* view) {
01314     insertItem(SmallIcon("undo"), i18n("Undo"), mt_Undo);
01315     insertItem(SmallIcon("redo"), i18n("Redo"), mt_Redo);
01316     insertSeparator();
01317     insertStdItem(mt_Cut);
01318     insertStdItem(mt_Copy);
01319     insertStdItem(mt_Paste);
01320     insertSeparator();
01321     insertItem(SmallIcon("editclear"), i18n("Clear Diagram"), mt_Clear);
01322     insertStdItem(mt_Export_Image);
01323     insertSeparator();
01324     insertItem(i18n("Snap to Grid"), mt_SnapToGrid);
01325     setItemChecked(mt_SnapToGrid, view->getSnapToGrid() );
01326     insertItem(i18n("Show Grid"), mt_ShowSnapGrid );
01327     setItemChecked(mt_ShowSnapGrid, view->getShowSnapGrid() );
01328     insertStdItem(mt_Properties);
01329 }
01330 
KDE Logo
This file is part of the documentation for umbrello Version 3.1.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Jun 26 08:07:58 2007 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003