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/toolbarstatefactory.cpp

97 lines
3.2 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> *
***************************************************************************/
#include "toolbarstatefactory.h"
#include "toolbarstate.h"
#include "toolbarstatepool.h"
#include "toolbarstateother.h"
#include "toolbarstatearrow.h"
#include "toolbarstatemessages.h"
#include "toolbarstateassociation.h"
#include "umlview.h"
ToolBarStateFactory::ToolBarStateFactory(UMLView *umlView)
{
m_pUMLView = umlView;
for (int i = 0; i < NR_OF_TOOLBAR_STATES; i++)
{
states[i] = NULL;
}
}
ToolBarStateFactory::~ToolBarStateFactory()
{
for (int i = 0; i < NR_OF_TOOLBAR_STATES; i++)
{
if (states[i] != NULL) delete states[i];
}
}
ToolBarState* ToolBarStateFactory::getState(const WorkToolBar::ToolBar_Buttons &toolbarButton)
{
int key = getKey(toolbarButton);
if (states[key] == NULL)
{
switch (key)
{
// When you add a new state, make sure you also increase the
// NR_OF_TOOLBAR_STATES
case 0: states[0] = new ToolBarStateOther(m_pUMLView); break;
case 1: states[1] = new ToolBarStateAssociation(m_pUMLView); break;
case 2: states[2] = new ToolBarStateMessages(m_pUMLView); break;
// This case has no pool.
case 3: states[3] = new ToolBarStateArrow(m_pUMLView); break;
}
}
// Make explicit the selected button. This is only necessary for states with a pool.
if (key <= 2) ((ToolBarStatePool *) states[key])->setButton(toolbarButton);
return states[key];
}
int ToolBarStateFactory::getKey(const WorkToolBar::ToolBar_Buttons &toolbarButton) const
{
switch (toolbarButton)
{
// Associations
case WorkToolBar::tbb_Dependency: return 1;
case WorkToolBar::tbb_Aggregation: return 1;
case WorkToolBar::tbb_Relationship: return 1;
case WorkToolBar::tbb_Generalization: return 1;
case WorkToolBar::tbb_Association: return 1;
case WorkToolBar::tbb_UniAssociation: return 1;
case WorkToolBar::tbb_Composition: return 1;
case WorkToolBar::tbb_Containment: return 1;
case WorkToolBar::tbb_Anchor: return 1;
case WorkToolBar::tbb_Coll_Message: return 1;
case WorkToolBar::tbb_State_Transition: return 1;
case WorkToolBar::tbb_Activity_Transition: return 1;
// Messages
case WorkToolBar::tbb_Seq_Message_Synchronous: return 2;
case WorkToolBar::tbb_Seq_Message_Asynchronous: return 2;
// Arrow pointer
case WorkToolBar::tbb_Arrow: return 3;
// Other.
default: return 0;
}
}