1
////////////////////////////////////////////////////////////////////////////////
3
// This file is part of Toolkit for Conceptual Modeling (TCM).
4
// (c) copyright 1997, Vrije Universiteit Amsterdam.
5
// Author: Frank Dehne (frank@cs.vu.nl).
7
// TCM is free software; you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License as published by
9
// the Free Software Foundation; either version 2 of the License, or
10
// (at your option) any later version.
12
// TCM is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
// GNU General Public License for more details.
17
// You should have received a copy of the GNU General Public License
18
// along with TCM; if not, write to the Free Software
19
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
21
////////////////////////////////////////////////////////////////////////////////
22
#include "ssdsingleclassbox.h"
23
#include "ssddoubleclassbox.h"
24
#include "ssdtripleclassbox.h"
25
#include "diagramviewer.h"
27
#include "ssdupdateclassboxpropertycmd.h"
29
SSDUpdateClassBoxPropertyCmd::SSDUpdateClassBoxPropertyCmd(
30
ShapeView *v, PropertyType p, bool b):
31
Command(v->GetViewer()->GetDiagram(), v->GetViewer()) {
35
shapes = new List<GShape *>;
36
List<GShape *> *selection = view->GetSelection();
37
for (selection->first(); !selection->done(); selection->next()) {
38
GShape *shape = selection->cur();
39
if (shape->GetClassType()==Code::SSD_SINGLE_CLASS_BOX) {
40
SSDSingleClassBox *sbs = (SSDSingleClassBox *)shape;
41
if ((property == STEREOTYPE &&
42
sbs->IsShowStereotype() != set) ||
43
(property == PROPERTIES &&
44
sbs->IsShowProperties() != set))
47
else if (shape->GetClassType()==Code::SSD_DOUBLE_CLASS_BOX) {
48
SSDDoubleClassBox *dbs = (SSDDoubleClassBox *)shape;
49
if ((property == STEREOTYPE &&
50
dbs->IsShowStereotype() != set) ||
51
(property == PROPERTIES &&
52
dbs->IsShowProperties() != set))
55
else if (shape->GetClassType()==Code::SSD_TRIPLE_CLASS_BOX) {
56
SSDTripleClassBox *tbs = (SSDTripleClassBox *)shape;
57
if ((property == STEREOTYPE &&
58
tbs->IsShowStereotype() != set) ||
59
(property == PROPERTIES &&
60
tbs->IsShowProperties() != set))
66
SSDUpdateClassBoxPropertyCmd::~SSDUpdateClassBoxPropertyCmd() {
70
void SSDUpdateClassBoxPropertyCmd::Execute() {
71
if (!shapes->first()) {
72
GetMainWindow()->SetStatus(
73
"aborted: no shapes need to be updated");
81
void SSDUpdateClassBoxPropertyCmd::UnExecute() {
88
void SSDUpdateClassBoxPropertyCmd::ChangeProperties() {
89
for (shapes->first(); !shapes->done(); shapes->next()) {
90
GShape *shape = shapes->cur();
91
if (shape->GetClassType()==Code::SSD_SINGLE_CLASS_BOX) {
92
if (property == STEREOTYPE)
93
((SSDSingleClassBox *)shape)->UpdateShowStereotype(set);
94
else if (property == PROPERTIES)
95
((SSDSingleClassBox *)shape)->UpdateShowProperties(set);
97
else if (shape->GetClassType()==Code::SSD_DOUBLE_CLASS_BOX) {
98
if (property == STEREOTYPE)
99
((SSDDoubleClassBox *)shape)->UpdateShowStereotype(set);
100
else if (property == PROPERTIES)
101
((SSDDoubleClassBox *)shape)->UpdateShowProperties(set);
103
else if (shape->GetClassType()==Code::SSD_TRIPLE_CLASS_BOX) {
104
if (property == STEREOTYPE)
105
((SSDTripleClassBox *)shape)->UpdateShowStereotype(set);
106
else if (property == PROPERTIES)
107
((SSDTripleClassBox *)shape)->UpdateShowProperties(set);