You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdesdk/umbrello/umbrello/toolbarstateother.cpp

164 lines
5.4 KiB

/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* copyright (C) 2004-2006 *
* Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
***************************************************************************/
// own header
#include "toolbarstateother.h"
// kde includes
#include <kdebug.h>
#include <tdelocale.h>
#include <kinputdialog.h>
// app includes
#include "activitywidget.h"
#include "boxwidget.h"
#include "dialog_utils.h"
#include "floatingtextwidget.h"
#include "forkjoinwidget.h"
#include "notewidget.h"
#include "object_factory.h"
#include "statewidget.h"
#include "uml.h"
#include "umlview.h"
#include "umldoc.h"
using namespace Uml;
ToolBarStateOther::ToolBarStateOther(UMLView *umlView) : ToolBarStatePool(umlView) {
}
ToolBarStateOther::~ToolBarStateOther() {
}
void ToolBarStateOther::setCurrentElement() {
}
void ToolBarStateOther::mouseReleaseEmpty() {
if (m_pMouseEvent->button() == TQt::LeftButton) {
if (!newWidget()) {
// Is UMLObject?
m_pUMLView->setCreateObject(true);
Object_Factory::createUMLObject(getObjectType());
}
m_pUMLView->resizeCanvasToItems();
}
}
Uml::Object_Type ToolBarStateOther::getObjectType() {
Object_Type ot;
switch(getButton()) {
case WorkToolBar::tbb_Actor: ot = ot_Actor; break;
case WorkToolBar::tbb_UseCase: ot = ot_UseCase; break;
case WorkToolBar::tbb_Class: ot = ot_Class; break;
case WorkToolBar::tbb_Object: ot = ot_Class; break; // Object is a class.
case WorkToolBar::tbb_Package: ot = ot_Package; break;
case WorkToolBar::tbb_Component: ot = ot_Component; break;
case WorkToolBar::tbb_Node: ot = ot_Node; break;
case WorkToolBar::tbb_Artifact: ot = ot_Artifact; break;
case WorkToolBar::tbb_Interface: ot = ot_Interface; break;
case WorkToolBar::tbb_Enum: ot = ot_Enum; break;
case WorkToolBar::tbb_Entity: ot = ot_Entity; break;
case WorkToolBar::tbb_Datatype: ot = ot_Datatype; break;
default: ot = ot_UMLObject; break;
}
return ot;
}
// TODO: The name is a bit confusing.
bool ToolBarStateOther::newWidget() {
UMLWidget* umlWidget = NULL;
switch (getButton()) {
case WorkToolBar::tbb_Note:
umlWidget = new NoteWidget(m_pUMLView);
break;
case WorkToolBar::tbb_Box:
umlWidget = new BoxWidget(m_pUMLView);
break;
case WorkToolBar::tbb_Text:
umlWidget = new FloatingTextWidget(m_pUMLView, tr_Floating, "");
break;
// Activity buttons
case WorkToolBar::tbb_Initial_Activity:
umlWidget = new ActivityWidget(m_pUMLView, ActivityWidget::Initial);
break;
case WorkToolBar::tbb_Activity:
umlWidget = new ActivityWidget(m_pUMLView, ActivityWidget::Normal);
break;
case WorkToolBar::tbb_End_Activity:
umlWidget = new ActivityWidget(m_pUMLView, ActivityWidget::End);
break;
case WorkToolBar::tbb_Branch:
umlWidget = new ActivityWidget(m_pUMLView, ActivityWidget::Branch);
break;
case WorkToolBar::tbb_Fork:
case WorkToolBar::tbb_StateFork:
umlWidget = new ForkJoinWidget(m_pUMLView);
break;
case WorkToolBar::tbb_Initial_State:
umlWidget = new StateWidget(m_pUMLView, StateWidget::Initial);
break;
case WorkToolBar::tbb_State:
umlWidget = new StateWidget(m_pUMLView, StateWidget::Normal);
break;
case WorkToolBar::tbb_End_State:
umlWidget = new StateWidget(m_pUMLView, StateWidget::End);
break;
default:
break;
}
// Return false if we didn't find a suitable widget.
if (umlWidget == NULL) {
return false;
}
// Special treatment for some buttons
if (getButton() == WorkToolBar::tbb_Activity) {
Dialog_Utils::askNameForWidget(
umlWidget, i18n("Enter Activity Name"),
i18n("Enter the name of the new activity:"), i18n("new activity"));
} else if (getButton() == WorkToolBar::tbb_State) {
Dialog_Utils::askNameForWidget(
umlWidget, i18n("Enter State Name"),
i18n("Enter the name of the new state:"), i18n("new state"));
} else if (getButton() == WorkToolBar::tbb_Text) {
// It is pretty invisible otherwise.
FloatingTextWidget* ft = (FloatingTextWidget*) umlWidget;
ft->changeTextDlg();
}
// Create the widget. Some setup functions can remove the widget.
if (umlWidget != NULL) {
m_pUMLView->setupNewWidget(umlWidget);
}
return true;
}
#include "toolbarstateother.moc"