Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Graphiti"

(Replaced content with "Moved to GitLab: https://gitlab.eclipse.org/eclipse/graphiti/graphiti/-/wikis/Graphiti")
 
(32 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Image:BackgroundMain.png|900px]]
+
Moved to GitLab:
 
+
https://gitlab.eclipse.org/eclipse/graphiti/graphiti/-/wikis/Graphiti
= Graphiti - a Graphical Tooling Infrastructure  =
+
 
+
This page contains useful information for developers working on the Graphiti framework itself. Users of the framework (building Graphiti-based tools) should rather have a look onto our Eclipse page at [http://www.eclipse.org/graphiti http://www.eclipse.org/graphiti].
+
 
+
== Central Build  ==
+
 
+
=== Build Job  ===
+
 
+
Our central Hudson build job can be found [https://hudson.eclipse.org/hudson/job/gmp-graphiti-nightly/ here]. Graphiti uses [http://www.eclipse.org/buckminster/ Buckminster] for its automated build and test run. See [[GraphitiBuildProcessDescription|here]] for a detailed description of the Graphiti build process.<br>
+
 
+
=== Providing the Build for a Milestone  ===
+
 
+
These steps need to be done in order to provide a new delivery for an Eclipse milestone:  
+
 
+
*The week before the milestone (see [http://wiki.eclipse.org/GMP/Graphiti#How_to_do_a_build_for_Graphiti_on_Hudson below])<br>
+
**Update reference to Orbit in rmap file in the Graphiti releng project (latest S-build gets released in the week before the milestone or during the weekend). Orbit dowloads sites are listed here: [http://download.eclipse.org/tools/orbit/downloads/ http://download.eclipse.org/tools/orbit/downloads/]<br>
+
**Register at cross-project issues mailing list ([https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev]) and bugzilla component ([https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;component=Cross-Project;product=Community;classification=Eclipse%20Foundation])
+
**Add email adress to Graphiti part of aggregation build to get notified in case Graphiti causes the aggregation to fail. The wiki page [http://wiki.eclipse.org/Indigo/Contributing_to_Indigo_Build wiki.eclipse.org/Indigo/Contributing_to_Indigo_Build] describes what you need to do.
+
**Do at least one test build on Friday
+
*The week of the milestone(see [http://wiki.eclipse.org/GMP/Graphiti#How_to_do_a_build_for_Graphiti_on_Hudson below])<br>
+
**Do a milestone candidate build every day in the week of the milestone
+
**Update News&amp;Noteworthy document (on Graphiti site and copy into doc plugin) before building last milestone
+
**Provide the final milestone build on +3 day
+
**Update the downloads page on our web site with the newest ZIP file link and update site content<br>
+
**Do some more testing after +3 day using the EPP packages
+
**Check that everything gets installed correctly from the staging update site (sent around on cross-project issues mailing list as soon as it is ready)
+
 
+
=== How to do a build for Graphiti on Hudson and provide it as a Milestone  ===
+
 
+
*Open https://hudson.eclipse.org/hudson and log on using your Eclipse dev user<br>
+
*Go to the Graphiti build job (https://hudson.eclipse.org/hudson) and select build
+
*Set the build properties
+
**build_type "S"
+
**build_alias should be meaningfull, e.g. 0.9.0M1
+
**site_signing should be enabled
+
*Use shell access to build.eclipse.org to copy build result (ZIP and signed P2 site for 0.8 and before, ZIP and packed P2 site for versions 0.9 and beyond; both are stored after a successful build in the last_success folder of the build job at /opt/public/jobs/gmp-graphiti-nightly/workspace) to the Eclipse download area under graphiti/updates/milestones/&lt;build name and ID&gt; and graphiti/archives/milestones/&lt;build name and ID&gt;.<br>
+
*Add the new update site to the composite milestones update site
+
**Use SFTP to access the build server and download the JARs describing the content of the composite update site
+
**Extract the XML files from them and add links to the new site
+
**Update the number of children and the date
+
**Create new JARs and upload them
+
**There's also some ANT tasks out there that should do the job...
+
*Do the testing on +2 day based on the daily milestone candidate
+
 
+
== Coding  ==
+
 
+
=== API Tooling  ===
+
 
+
We use the Eclipse API tooling to fulfill Eclipse version number and API stability requirements. You have to define an API baseline if you are working on the Graphiti releases 0.8.x (service releases only) and beyond. For service releases use the same version as baseline (e.g. 0.8.0 for Indigo SR1) otherwise the last major release (e.g. 0.8.0 for Juno developement).
+
 
+
=== Coding Conventions  ===
+
 
+
We use the standard Eclipse formatter for our coding with just one exceptional setting: the maximum line width is changed to 120. This setting can be found in the Eclipse preferences under 'Java -&gt; Code Style -&gt; Formatter' by editing the 'Eclipse [built-in]' profile on tab 'Line Wrapping': set the 'Maximum Line Width' in Section 'General settings' to 120.
+
 
+
To be sure that the formatter is really used for all your changes define your save actions (Eclipe preferences under 'Java -&gt; Editor -&gt; Save Actions') to include 'Format source code' with 'Format edited lines' only. Also enable the 'Organize imports' action on this page to get an automated clean-up of the import statements.
+
 
+
=== Repository<br>  ===
+
 
+
The source code of Graphiti is publicly available from the Eclipse Git repository. A general page on Git at Eclipse.org can be found [http://wiki.eclipse.org/Git here]. If you just want to browse the source code without checking out all the projects, you can use this [http://git.eclipse.org/c/gmp/org.eclipse.gmp.graphiti.git/ link for the web access] to the Eclipse Git repository for Graphiti.
+
 
+
==== Git Anonymous Access  ====
+
 
+
Please set up the following Eclipse Git repository location: ''&lt;protocol&gt;://git.eclipse.org/gitroot/gmp/org.eclipse.gmp.graphiti.git'', where &lt;protocol&gt; is one of git, ssh or http dependending on what your your network infrastructure allows.
+
 
+
==== Committer Git Access  ====
+
 
+
Same details as anonymous access, using git, ssh or https as protocol and specific username/password as assigned by Eclipse. Eclipse Git repository location is ''&lt;protocol&gt;://&lt;Eclipse dev user name&gt;@git.eclipse.org/gitroot/gmp/org.eclipse.gmp.graphiti.git''
+
 
+
Here are the steps to set up EGit in Eclipse:
+
 
+
#Set environment variable HOME to define the folder where Git will clone repositories to, e.g. "C:\Users\&lt;windows user name&gt;\.git"
+
#Import Git repository:
+
#*Supported protocols for cloning are git, ssh, http and https
+
#*From behind a firewall http and https will work
+
#*Recommendation is to use ssh (no firewall) or https (in case of a firewall)<br>
+
#Open Windows --&gt; Preferences --&gt; Team --&gt; Git --&gt; Configuration and set the following user setting in the .gitconfig file in your HOME directory
+
#*user.name &lt;Eclipse dev user name&gt;
+
#*user.email &lt;Email adress registered for Eclipse dev user&gt;
+
 
+
=== Plugin Structure<br>  ===
+
 
+
In the Git repository you will find the following projects:
+
 
+
<br>
+
 
+
{| width="600" cellspacing="1" cellpadding="1" border="1"
+
|-
+
| examples
+
| org.eclipse.graphiti.doc
+
| Graphiti tutorial in Eclipse help
+
|-
+
| examples
+
| org.eclipse.graphiti.examples.common
+
| Common parts for samples and test tools for Graphiti; helper UIs, e.g. repository explorer and wizard(for Graphiti internal use; must not be used by the Graphiti customers)
+
|-
+
| examples
+
| org.eclipse.graphiti.examples.tutorial
+
| Implementation of Graphiti tutorial in final stage
+
|-
+
| examples
+
| org.eclipse.graphiti.ui.capabilities
+
| Small example showing how the Eclipse capabilities mechanism can be used for Graphiti
+
|-
+
| features
+
| org.eclipse.graphiti.feature
+
| The feature containing purely the Graphiti framework without any additional functionality like SVG export
+
|-
+
| features
+
| org.eclipse.graphiti.feature.examples
+
| The feature containing purely the Graphiti examples and documentation
+
|-
+
| features
+
| org.eclipse.graphiti.sdk.feature
+
| The feature containing the Graphiti framework, the examples and the documentation
+
|-
+
| features
+
| org.eclipse.graphiti.sdk.plus.feature
+
| The feature containing the Graphiti framework, additional framework funktionality (currently only the SVG export), the examples and the documentation
+
|-
+
| features
+
| org.eclipse.graphiti.site
+
| The feature defining the Graphiti update site content, needed for release engineering
+
|-
+
| features
+
| org.eclipse.graphiti.tests-feature
+
| The feature containing the Graphiti tests
+
|-
+
| plugins
+
| org.eclipse.graphiti
+
| Graphiti framework: UI platform independent part
+
|-
+
| plugins
+
| org.eclipse.graphiti.export.batik
+
| Graphiti framework: Export functionality (e.g. save as SVG) using Batik functionality
+
|-
+
| plugins
+
| org.eclipse.graphiti.mm
+
| Graphiti framework: EMF pictogram model
+
|-
+
| plugins
+
| org.eclipse.graphiti.pattern
+
| Graphiti framework: an alternative generic approach to combine all implementation aspects in one pattern
+
|-
+
| plugins
+
| org.eclipse.graphiti.ui
+
| Graphiti framework: UI platform independent part
+
|-
+
| releng
+
| org.eclipse.graphiti.releng
+
| Release engineering stuff needed for the Buckminster based build
+
|-
+
| tests
+
| org.eclipse.graphiti.bot.tests
+
| Graphiti internal UI and SWT Bot tests
+
|-
+
| tests
+
| org.eclipse.graphiti.tests
+
| Graphiti internal tests for UI independent part
+
|-
+
| tests
+
| org.eclipse.graphiti.testtool.ecore
+
| Graphiti internal test tool Ecore editing
+
|-
+
| tests
+
| org.eclipse.graphiti.testtool.sketch
+
| Graphiti internal test tool Sketch editing
+
|-
+
| tests
+
| org.eclipse.graphiti.ui.tests
+
| Graphiti internal tests for UI dependent part
+
|}
+
 
+
=== Working on Bugzillas (Contributions and Commiting)  ===
+
 
+
This is what you should do to fully complete a Bugzilla:
+
 
+
*Of course, fix the bug or provide the enhancement
+
*Create a JUnit test testing the change and add it to one of the Graphiti test suites
+
**Prefered tests are the pure JUnit tests, if not possible also adding to the SWTBot test suite (as JUnit Plugin or real SWTBot test) is ok as well
+
**It should be green, of course&nbsp;;-)
+
*All other tests contained in all the test suites should still pass
+
*Check for any warnings in your coding and fix them if possible
+
*Provide some kind of raw documentation for your change, this may be directly in the Bugzilla, in the JavaDoc, on this Wiki page or in the online help (e.g. in the tutorial)
+
**Bugs will need very little documentation, while functional enhancements will need more attention
+
 
+
== Installation<br>  ==
+
 
+
As development IDE you should use the newest Eclipse installation of your choice, at the time this was written the newest Eclipse version was 3.7 (Indigo). You will need SWTBot in your developement IDE to be able to run the Graphiti SWTBot-based UI tests. Also you will need to add Buckminster (version 3.7 at the time this was written) to your installation. For more details see the [http://www.eclipse.org/graphiti/documentation/gettingStarted.php Getting Started Guide].
+
 
+
Basically you will need the same installation for your target platform as well, but it needs to contain EMF SDK, EMF Transactions SDK and GEF SDK (see getting started guide). Buckminster is not needed here, but SWTBot is. Additionally you will need to install GMF runtime (it hosts some vector support functionality we use from export.batik plugin that you have to collect individually otherwise).<br>
+
 
+
== Mailing List<br>  ==
+
 
+
The Graphiti developer mailing list allows to follow and participate in discussions on the Graphiti framework. You can [https://dev.eclipse.org/mailman/listinfo/graphiti-dev subscribe here]. <br>
+

Latest revision as of 07:34, 14 July 2023

Moved to GitLab: https://gitlab.eclipse.org/eclipse/graphiti/graphiti/-/wikis/Graphiti

Back to the top