Interaction::CommandResult* CCreateField::create(Visualization::Item* /*source*/, Visualization::Item* target, const QString& name, const QStringList& attributes) { auto cl = dynamic_cast<OOModel::Class*> (target->node()); Q_ASSERT(cl); auto f = new OOModel::Field(); f->setTypeExpression(new OOModel::EmptyExpression()); if (!name.isEmpty()) f->setName(name); // Set visibility if (attributes.first() == "private" ) f->setVisibility(OOModel::Visibility::PRIVATE); else if (attributes.first() == "protected" ) f->setVisibility(OOModel::Visibility::PROTECTED); else if (attributes.first() == "public" ) f->setVisibility(OOModel::Visibility::PUBLIC); else f->setVisibility(OOModel::Visibility::DEFAULT); // Set scope if (attributes.last() == "static") f->setStorageSpecifier(OOModel::StorageSpecifier::CLASS_VARIABLE); else f->setStorageSpecifier(OOModel::StorageSpecifier::INSTANCE_VARIABLE); cl->fields()->beginModification("create field"); cl->fields()->append(f); cl->fields()->endModification(); target->setUpdateNeeded(Visualization::Item::StandardUpdate); target->scene()->addPostEventAction(new Interaction::SetCursorEvent(target, (name.isEmpty() ? static_cast<Model::Node*>(f->nameNode()) : f->typeExpression()), Interaction::SetCursorEvent::CursorDefault, false)); return new Interaction::CommandResult(); }
Method::Method(const QString& name, Visibility::VisibilityType vis, StorageSpecifier::StorageSpecifierTypes storage) : Model::ExtendableNode (nullptr, Method::getMetaData()) { setName(name); setVisibility(vis); setStorageSpecifier(storage); }