00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "listpopupmenu.h"
00014
00015
00016 #include <kstandarddirs.h>
00017 #include <kiconloader.h>
00018 #include <klocale.h>
00019 #include <kdebug.h>
00020
00021
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
00040 ListPopupMenu::ListPopupMenu(QWidget *parent, Menu_Type type, UMLView * view)
00041 : KPopupMenu(parent) {
00042 init();
00043 setupMenu(type, view);
00044 }
00045
00046
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
00203 }
00204 setupMenu(mt);
00205 }
00206
00207
00208 ListPopupMenu::ListPopupMenu(QWidget * parent, UMLWidget * object,
00209 bool multi, bool unique)
00210 : KPopupMenu(parent)
00211 {
00212 init();
00213
00214
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
00237
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
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 }
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 ,
00591 Uml::Widget_Type type )
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
00635
00636
00637
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
00820
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
00910
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
00993
00994
00995 insertStdItem(mt_Rename);
00996 insertStdItem(mt_Delete);
00997 insertStdItem(mt_Export_Image);
00998 insertStdItem(mt_Properties);
00999 break;
01000
01001
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
01278
01279
01280
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 }
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