Java Eclipse UML tool - white paper abstract

P

Paul Wells

This white paper abstract is published 1st March 2004. Any comments upon it can be sent via our
website www.modelistic.com or responding on this newsgroup. This forms part of the technical
specification for a new product called Modelistic JME, as created by Modelistic Software Ltd in the
UK. The contents are copyrighted © Modelistic Software Ltd., all rights reserved.



The product is packaged as a plugin for the Eclipse (www.eclipse.org) platform, and centres upon the
creation of UML class diagram, for use by Java programmers, and driven directly from the Eclipse
Java Development Tooling (JDT) model.



There are two major innovations in this product. Firstly, Modelistic JME has no need to store any
more information than the name of the class, and where it is positioned on the diagram; the members
of the class are populated from the JDT model as the diagram is opened. Diagram information is
stored in XML.



The second innovation is that the user is permitted to define sets of model elements, in so called
"profile files" which are written in XML. There are a range of attributes which qualify elements to
a set including, name, package, Javadoc tag, owner superclass, signature and others. Sets can be
built up using inclusion and exclusion rules applied to the attributes. Sets may also be combined to
create other sets, or control the qualification by attributes of elements in other sets.



Appearance of model elements on a diagram are defined through colors, colorset and a range of
element and line styles. These are used to build up abstract sets of directives for displaying a
Java model element.



Finally, mappings may be created to instruct Modelistic JME to present elements conforming to a
particular element set using a declared appearance. This in turn can be used to view class diagrams
with filtering, ordering, grouping and highlighting as driven by the profile file suited to the
particular Java technology being used by the Java programmer.



Below is the factory (out of the box) profile as an example.





<?xml version="1.0" encoding="UTF-8"?>



<!-- This file contains the factory settings which control the look and

feel of the Modelistic JME plugin for Eclipse. Project specific classes and

files should not be mentioned here, as they are beyond the reach of the

refactoring functions. Project specific profiles should be kept under the project

directory to indicate that they belong to the project and should be included in

refactoring operations.

-->



<jmeProfile>



<!-- colors -->



<color id="defaultProfile.color.black" value="#000000"/>

<color id="defaultProfile.color.white" value="#FFFFFF"/>

<color id="defaultProfile.color.lightGray" value="#CCCCCC"/>

<color id="defaultProfile.color.darkGray" value="#666666"/>

<color id="defaultProfile.color.lightYellow" value="#FFFFBB"/>

<color id="defaultProfile.color.darkYellow" value="#FFFF99"/>

<color id="defaultProfile.color.buff" value="#FFCC66"/>

<color id="defaultProfile.color.lightBlue" value="#CCCCFF"/>

<color id="defaultProfile.color.darkBlue" value="#000077"/>

<color id="defaultProfile.color.mediumBlue" value="#0000DD"/>

<color id="defaultProfile.color.deepRed" value="#770000"/>







<!-- color sets -->



<colorset

id="defaultProfile.colorset.defaultBackground"

normal="defaultProfile.color.lightYellow"

selected="defaultProfile.color.darkYellow"

print="defaultProfile.color.white"/>



<colorset

id="defaultProfile.colorset.defaultBorder"

normal="defaultProfile.color.lightGray"

selected="defaultProfile.color.lightGray"

print="defaultProfile.color.black"/>



<colorset

id="defaultProfile.colorset.defaultNameText"

normal="defaultProfile.color.darkGray"

selected="defaultProfile.color.black"

print="defaultProfile.color.black"/>



<colorset

id="defaultProfile.colorset.defaultTypeText"

normal="defaultProfile.color.darkGray"

selected="defaultProfile.color.deepRed"

print="defaultProfile.color.black"/>



<colorset

id="defaultProfile.colorset.defaultTitleBar"

normal="defaultProfile.color.darkGray"

selected="defaultProfile.color.darkBlue"

print="defaultProfile.color.black"/>



<colorset

id="defaultProfile.colorset.defaultTitleText"

normal="defaultProfile.color.lightGray"

selected="defaultProfile.color.white"

print="defaultProfile.color.white"/>



<colorset

id="defaultProfile.colorset.defaultIconBackgroud"

normal="defaultProfile.color.lightGray"

selected="defaultProfile.color.white"

print="defaultProfile.color.white"/>



<colorset

id="defaultProfile.colorset.defaultLine"

normal="defaultProfile.color.lightGray"

selected="defaultProfile.color.black"

print="defaultProfile.color.black"/>







<!-- text styles -->



<textStyle

id="defaultProfile.textStyle.defaultName"

colors="defaultProfile.colorset.defaultNameText"

bold="true"

italic="false"/>



<textStyle

id="defaultProfile.textStyle.defaultType"

colors="defaultProfile.colorset.defaultTypeText"

bold="false"

italic="true"/>



<textStyle

id="defaultProfile.textStyle.defaultTitle"

colors="defaultProfile.colorset.defaultTitleText"

bold="true"

italic="false"/>



<textStyle

id="defaultProfile.textStyle.defaultOther"

colors="defaultProfile.colorset.defaultNameText"

bold="false"

italic="false"/>









<!-- element sets -->



<elementSet id="defaultProfile.elementSet.all" defaultInclude="true"/>



<elementSet id="defaultProfile.elementSet.allTypes">

<types/>

</elementSet>



<elementSet id="defaultProfile.elementSet.allFields">

<fields/>

</elementSet>



<elementSet id="defaultProfile.elementSet.allMethods">

<methods/>

</elementSet>



<elementSet id="defaultProfile.elementSet.allInitializers">

<initializers/>

</elementSet>









<!-- member orders -->



<memberOrder id="defaultProfile.memberOrder.default">



<memberDivision visibleMembers="defaultProfile.elementSet.allFields">

<orderBy set="defaultProfile.elementSet.all" qualifier="name"/>

</memberDivision>



<memberDivision visibleMembers="defaultProfile.elementSet.allMethods">

<orderBy set="defaultProfile.elementSet.all" qualifier="name"/>

</memberDivision>



<memberDivision visibleMembers="defaultProfile.elementSet.allInitializers">

<orderBy set="defaultProfile.elementSet.all" qualifier="name"/>

</memberDivision>



<memberDivision visibleMembers="defaultProfile.elementSet.allTypes">

<orderBy set="defaultProfile.elementSet.all" qualifier="name"/>

</memberDivision>



</memberOrder>









<!-- member display styles -->



<classDisplayStyle

id="defaultProfile.classDisplayStyle.default"

colors.background="defaultProfile.colorset.defaultBackground"

colors.border="defaultProfile.colorset.defaultBorder"

colors.titleBar="defaultProfile.colorset.defaultTitleBar"

colors.iconBackground="defaultProfile.colorset.defaultIconBackgroud"

show.icon="yes"

show.package="yes"

textStyle.name="defaultProfile.textStyle.defaultTitle"

textStyle.other="defaultProfile.textStyle.defaultOther"/>



<fieldDisplayStyle

id="defaultProfile.fieldDisplayStyle.default"

colors.background="defaultProfile.colorset.defaultBackground"

colors.border="defaultProfile.colorset.defaultBorder"

show.icon="yes"

show.type="yes"

show.typePackage="yes"

textStyle.name="defaultProfile.textStyle.defaultName"

textStyle.type="defaultProfile.textStyle.defaultType"

textStyle.other="defaultProfile.textStyle.defaultOther"/>



<methodDisplayStyle

id="defaultProfile.methodDisplayStyle.default"

colors.background="defaultProfile.colorset.defaultBackground"

colors.border="defaultProfile.colorset.defaultBorder"

show.icon="yes"

show.exceptionPackages="yes"

show.exceptions="yes"

show.parameterNames="yes"

show.parameterTypePackages="yes"

show.parameterTypes="yes"

show.returnType="yes"

show.returnTypePackage="yes"

textStyle.name="defaultProfile.textStyle.defaultName"

textStyle.exception="defaultProfile.textStyle.defaultType"

textStyle.parameterName="defaultProfile.textStyle.defaultName"

textStyle.parameterType="defaultProfile.textStyle.defaultType"

textStyle.returnType="defaultProfile.textStyle.defaultType"

textStyle.other="defaultProfile.textStyle.defaultOther"/>



<initializerDisplayStyle

id="defaultProfile.initializerDisplayStyle.default"

colors.background="defaultProfile.colorset.defaultBackground"

colors.border="defaultProfile.colorset.defaultBorder"

show.icon="yes"

textStyle.name="defaultProfile.textStyle.defaultName"

textStyle.other="defaultProfile.textStyle.defaultOther"/>







<!-- line styles -->



<lineStyle id="defaultProfile.lineStyle.default" color="defaultProfile.colorset.defaultLine"/>









<!-- diagram styles -->



<diagramStyle

id="defaultProfile.diagramStyle.default"

name="Default Diagram Style"

description="Shows all elements with default colors"

backgroundColor="defaultProfile.color.white"

offLimitsColor="defaultProfile.color.lightGray"

margin="40"

uml="yes">



<mapping

elementSet="defaultProfile.elementSet.allTypes"

ordering="defaultProfile.memberOrder.default"

style="defaultProfile.classDisplayStyle.default"/>



<mapping

elementSet="defaultProfile.elementSet.allFields"

style="defaultProfile.fieldDisplayStyle.default"/>



<mapping

elementSet="defaultProfile.elementSet.allMethods"

style="defaultProfile.methodDisplayStyle.default"/>



<mapping elementSet="defaultProfile.elementSet.allInitializers"

style="defaultProfile.initializerDisplayStyle.default"/>



<lineMapping

fromSet="defaultProfile.elementSet.all"

toSet="defaultProfile.elementSet.all"

type="inheritance"

style="defaultProfile.lineStyle.default"/>



<lineMapping

fromSet="defaultProfile.elementSet.all"

toSet="defaultProfile.elementSet.all"

type="field"

style="defaultProfile.lineStyle.default"/>



</diagramStyle>



</jmeProfile>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,533
Members
45,007
Latest member
OrderFitnessKetoCapsules

Latest Threads

Top