'*****BEGIN SCRIPT '********************************************************************* ' ' Purpose: to allow insertion of multiselected items to be put on ' class and module diagrams. ' Author: Tony Lew, Rational Technical Support ' Date: 14 July 2000 ' Last rev:14 July 2000 ' '********************************************************************* Sub spitMessage(x As RoseItem, y As diagram) Dim m As String m = "Could Not Write " + x.identifyClass + " " + x.name + _ " to "+ y.getPropertyClassName + " " +y.name Roseapp.writeErrorLog m End Sub Function GetActiveModuleDiagram As ModuleDiagram Dim d As diagram Dim md As moduleDiagram Set d = Roseapp.currentmodel.getActiveDiagram If Not d.canTypecast(md) Then Set GetActiveDiagram = Nothing Exit Function End If Set getActiveModuleDiagram = d.typecast(md) End Function Sub doModule(m As module) Dim md As moduleDiagram Set md = GetActiveModuleDiagram If Not md Is Nothing Then If Not md.exists(m) Then added = md.addModule(m) End If Else spitmessage m,roseapp.currentmodel.getactivediagram End If End Sub Sub doSubsystem(s As subsystem) Dim md As moduleDiagram Set md = GetActiveModuleDiagram If Not md Is Nothing Then If Not md.exists(s) Then added = md.addSubsystemView(s) End If Else spitmessage s,roseapp.currentmodel.getactivediagram End If End Sub Function GetActiveClassDiagram As ClassDiagram Dim d As diagram Dim cd As classDiagram Set d = Roseapp.currentmodel.getActiveDiagram If Not d.canTypecast(cd) Then Set GetActiveDiagram = Nothing Exit Function End If Set GetActiveClassDiagram = d.Typecast(cd) End Function Sub doClass(c As class) Dim cd As classDiagram Set cd = GetActiveClassDiagram If Not cd Is Nothing Then If Not cd.exists(c) Then added = cd.addclass(c) End If Else spitmessage c,roseapp.currentmodel.getactivediagram End If End Sub Sub doCategory(c As category) Dim cd As classDiagram Set cd = GetActiveClassDiagram If Not cd Is Nothing Then If Not cd.exists(c) Then added = cd.addcategory(c) End If Else spitmessage c,roseapp.currentmodel.getactivediagram End If End Sub Sub Main Dim x As itemCollection Dim cat As category Dim c As class Dim m As module Dim s As subsystem Dim item As RoseItem Dim d As diagram Roseapp.WriteErrorLog "[MULTISELECT]" Set x = Roseapp.currentmodel.getSelectedItems Set d = Roseapp.currentmodel.getactiveDiagram If d Is Nothing Then msgbox "ERROR - No active Diagram" Exit Sub End If For i = 1 To x.count Set item = x.getat(i) If item.canTypecast(c) Then Set c = item.Typecast(c) DoClass c ElseIf item.canTypecast(cat) Then Set cat = item.Typecast(cat) DoCategory cat ElseIf item.canTypecast(m) Then Set m = item.typecast(m) DoModule m ElseIf item.canTypecast(s) Then Set s = item.Typecast(s) DoSubSystem s End If Next i End Sub '*****END SCRIPT