<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5895345394045038548</id><updated>2012-01-06T14:48:58.714-08:00</updated><category term='Model Generator Test EMF Eclipse'/><category term='Tutorial'/><category term='Git'/><category term='Egit'/><category term='EMFStore EMF Repository'/><category term='Eclipse'/><title type='text'>UNICASE</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-3927010038056000384</id><published>2011-03-16T04:18:00.000-07:00</published><updated>2011-03-16T04:18:24.471-07:00</updated><title type='text'>What every Eclipse developer should know about EMF - Tutorial at EclipseCon</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:HyphenationZone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;DE&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:EnableOpenTypeKerning/&gt;    &lt;w:DontFlipMirrorIndents/&gt;    &lt;w:OverrideTableStyleHps/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val="Cambria Math"/&gt;    &lt;m:brkBin m:val="before"/&gt;    &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;    &lt;m:smallFrac m:val="off"/&gt;    &lt;m:dispDef/&gt;    &lt;m:lMargin m:val="0"/&gt;    &lt;m:rMargin m:val="0"/&gt;    &lt;m:defJc m:val="centerGroup"/&gt;    &lt;m:wrapIndent m:val="1440"/&gt;    &lt;m:intLim m:val="subSup"/&gt;    &lt;m:naryLim m:val="undOvr"/&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;   &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;   &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;   &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;   &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;   &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;   &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;   &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;   &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;   &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;   &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;   &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;   &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;   &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Normale Tabelle"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;}&lt;/style&gt; &lt;![endif]--&gt;  &lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;We are looking forward to present &lt;span&gt;&amp;nbsp;&lt;/span&gt;the tutorial &lt;a href="http://www.eclipsecon.org/2011/sessions/?page=sessions&amp;amp;id=2144"&gt;„What every Eclipse developer should know about EMF&lt;/a&gt;“ at &lt;a href="http://www.eclipsecon.org/2011/"&gt;EclipseCon&lt;/a&gt; next week, Monday 9.00 am. Let us shortly explain how we got to that idea. The starting points for this idea were:&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;Even if modeling is a very active area in the Eclipse community, there are many developers who have no experience with EMF at all&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;Many of those developers complain that it is hard to gain an initial overview about modeling techniques and frameworks. Eclipse is always not only about knowing a specific technology but also knowing about the Ecosystem.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;So the goal of the tutorial is to tackle both issues and introduce “What every Eclipse developer should know about EMF”. The title is of course inspired by the &lt;a href="http://www.eclipsecon.org/summiteurope2010/sessions/?page=sessions&amp;amp;id=1753"&gt;great talk about dependency injection&lt;/a&gt; by Sven Efftinge on Eclipse Summit`10.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;For the first issue we created a basic EMF tutorial, which covers EMF modeling and gives entry points for the most important topics such as UI programming and data management. The second issue is a little bit harder to resolve. How could we give a good overview about different modeling technologies? There were two great things influencing us. The first was the &lt;a href="http://ed-merks.blogspot.com/2010_11_01_archive.html"&gt;Model &lt;span&gt;&amp;nbsp;&lt;/span&gt;Symposium &lt;/a&gt;at Eclipse Summit, which showed us how many short talks can provide a nice overview of many technologies. The second influence was the Ignite Competition held by the Eclipse Foundation. An &lt;a href="http://en.wikipedia.org/wiki/Ignite_%28event%29"&gt;Ignite talk&lt;/a&gt; consist of 20 slides, switched automatically every 15 seconds and is therefore exactly 5 minutes. This format forces to concentrate on the most important facts instead of going into detail about specific topics. We combined these two ideas and invited Project Leads of modeling projects to introduce their projects with an Ignite talk during the second part of our tutorial. We hope this will provide a good overview of available technologies and therefore cover the second part of “What every Eclipse developer should know about EMF”.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;We are looking forward to welcome you as participants of this tutorial. As a preparation for the hands-on part, we kindly ask you to have a (fresh) &lt;a href="http://www.eclipse.org/downloads/packages/eclipse-modeling-tools-includes-incubating-components/heliossr2"&gt;installation of the Eclipse Modeling Edition (Helios)&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-3927010038056000384?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/3927010038056000384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2011/03/what-every-eclipse-developer-should.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/3927010038056000384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/3927010038056000384'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2011/03/what-every-eclipse-developer-should.html' title='What every Eclipse developer should know about EMF - Tutorial at EclipseCon'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-537347034449356431</id><published>2011-03-10T06:58:00.000-08:00</published><updated>2011-03-10T06:58:54.582-08:00</updated><title type='text'>New Logos for EMFStore and EMF Client Platform</title><content type='html'>...long story short: we are proud to present the new logos for the &lt;a href="http://emfstore.org/"&gt;EMFStore &lt;/a&gt;and the &lt;a href="http://emfcp.org/"&gt;EMF Client Platform&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-P3TJ_wkKXtU/TXjlKFUjxGI/AAAAAAAAAMc/JKRGXe-MKhg/s1600/emfstore.png" imageanchor="0" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-P3TJ_wkKXtU/TXjlKFUjxGI/AAAAAAAAAMc/JKRGXe-MKhg/s1600/emfstore.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-family: Calibri,Helvetica,sans-serif; font-size: x-large;"&gt;EMFStore&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-tD6vQCEtCkw/TXjlJzaqDZI/AAAAAAAAAMY/gydK2KlcTq4/s1600/emf_client1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-tD6vQCEtCkw/TXjlJzaqDZI/AAAAAAAAAMY/gydK2KlcTq4/s1600/emf_client1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-family: Calibri,Helvetica,sans-serif; font-size: x-large;"&gt;EMF Client Platform&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-537347034449356431?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/537347034449356431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2011/03/new-logos-for-emfstore-and-emf-client.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/537347034449356431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/537347034449356431'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2011/03/new-logos-for-emfstore-and-emf-client.html' title='New Logos for EMFStore and EMF Client Platform'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-P3TJ_wkKXtU/TXjlKFUjxGI/AAAAAAAAAMc/JKRGXe-MKhg/s72-c/emfstore.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-284173388759460658</id><published>2011-03-02T03:24:00.000-08:00</published><updated>2011-03-02T03:24:55.660-08:00</updated><title type='text'>A generic widget for multi attributes for the EMF Client Platform</title><content type='html'>The &lt;a href="http://emfcp.org/"&gt;EMF Client Platform&lt;/a&gt; provides a generic and reflective editor for arbitrary EMF models. All visible attributes and references of a model are rendered in an form-based editor with generic widgets.&lt;br /&gt;However, the EMF Client Platform UI did not yet support multi attributes, for example an Integer attribute with a multiplicity of 3. During the implementation of a multi attribute widget we had to make several decisions. The solution for multi-attribute is not as intuitive as it was for single attributes. We came up with several inital propsals and combined the best parts of each of them. The most important questions were the following, which are addressed by the proposals shown afterwards.&lt;br /&gt;&lt;br /&gt;What kind of manipulation operation is required (besides add/change/delete)?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Change order --&amp;gt; proposal 2,3&lt;/li&gt;&lt;li&gt;Sorting --&amp;gt; proposal 2&lt;/li&gt;&lt;/ul&gt;How can the representation look like?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;List view --&amp;gt; proposal 2,3&lt;/li&gt;&lt;li&gt;Single-Control-Composite-View --&amp;gt; proposal 1&lt;/li&gt;&lt;/ul&gt;How to manipulate data?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Implicit (no buttons) --&amp;gt; proposal 1&lt;/li&gt;&lt;li&gt;Explicit (buttons / keystrokes) --&amp;gt; proposal 2&lt;/li&gt;&lt;li&gt;Combination --&amp;gt; proposal 3&lt;/li&gt;&lt;/ul&gt;How to design buttons?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Text Buttons --&amp;gt; proposal 2&lt;/li&gt;&lt;li&gt;Image Links --&amp;gt; proposal 3&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;Proposal 1: minimal look N feel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-GPT-NaJNU2Y/TWOXuTsISjI/AAAAAAAAALo/-VrcI_6elZI/s1600/idea1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="78" src="http://1.bp.blogspot.com/-GPT-NaJNU2Y/TWOXuTsISjI/AAAAAAAAALo/-VrcI_6elZI/s320/idea1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;new entries are created when you start typing in the bottom one (another empty field appears)&lt;/li&gt;&lt;li&gt;changes are saved whenever a field is edited&lt;/li&gt;&lt;li&gt;entries are deleted by deleting a field's content&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;PRO/CONTRA: &lt;/b&gt;&lt;br /&gt;+ intuitive usage&lt;br /&gt;+ simple style that fits into every editor window&lt;br /&gt;&lt;br /&gt;- no multiselection in order to delete/move several entries at once&lt;br /&gt;- there has to be one "empty" value (here: "") that is not stored&lt;br /&gt;- no change order functionality&lt;br /&gt;- can become pretty big because of missing scrollbars (but they could be implemented)&lt;br /&gt;&lt;br /&gt;=&amp;gt; disadvantages led to idea 3&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Proposal 2: the widget works with a list - so let's create one in the GUI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-LH9-b8hLKtE/TWOZVttdqKI/AAAAAAAAALs/_RsV3YpCExI/s1600/idea2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="295" src="http://4.bp.blogspot.com/-LH9-b8hLKtE/TWOZVttdqKI/AAAAAAAAALs/_RsV3YpCExI/s320/idea2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;new entries are created by clicking the "+" Button (Pop-Up appears)&lt;/li&gt;&lt;li&gt;changes can be made by selecting an entry and clicking "..." (Pop-Up appears)&lt;/li&gt;&lt;li&gt;entries are deleted by selecting them and pressing Del&lt;/li&gt;&lt;li&gt;entries are moved up and down with the corresponding buttons (not visible in the screenshot)&lt;/li&gt;&lt;li&gt;Sort funtionality by clicking the button&lt;/li&gt;&lt;li&gt;windows are automatically resizeable according to content&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;PRO/CONTRA: &lt;/b&gt;&lt;br /&gt;+ intuitive representation and manipulation of the list&lt;br /&gt;+ easy implementation of global listeners (for keystrokes) because there aren't individual&lt;br /&gt;buttons for each entry (as in idea 3)&lt;br /&gt;&lt;br /&gt;- much clicking because of pop-ups&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Q_S61fQv1VA/TWObnqJooZI/AAAAAAAAAL0/o4FoXggtcnI/s1600/idea4.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Proposal 3 and Final Solution: combine look and feel of proposal 1 with more functionality&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZYkOWg7xrKE/TWOa-lwjuuI/AAAAAAAAALw/I_DL_9ICuao/s1600/idea3.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="191" src="http://2.bp.blogspot.com/-ZYkOWg7xrKE/TWOa-lwjuuI/AAAAAAAAALw/I_DL_9ICuao/s320/idea3.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;new entries are created when you start typing in the bottom one (another empty field appears)&lt;/li&gt;&lt;li&gt;you can add an "empty" new entry by clicking the plus button&lt;/li&gt;&lt;li&gt;changes are saved whenever a field is edited&lt;/li&gt;&lt;li&gt;entries are deleted by clicking the red cross&lt;/li&gt;&lt;li&gt;entries are moved up and down with the corresponding buttons&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;PRO/CONTRA: &lt;/b&gt;&lt;br /&gt;+ style still quite simple, the buttons don't "jump out" - fits into every editor window&lt;br /&gt;(the button design could be changed easily if necessary)&lt;br /&gt;+ each single-element-control can be designed without any restrictions (see difference between&lt;br /&gt;String and integer) depending on its type&lt;br /&gt;&lt;br /&gt;- no multiselection in order to delete/move several entries at once&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Q_S61fQv1VA/TWObnqJooZI/AAAAAAAAAL0/o4FoXggtcnI/s1600/idea4.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-284173388759460658?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/284173388759460658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2011/03/generic-widget-for-multi-attributes-for.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/284173388759460658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/284173388759460658'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2011/03/generic-widget-for-multi-attributes-for.html' title='A generic widget for multi attributes for the EMF Client Platform'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-GPT-NaJNU2Y/TWOXuTsISjI/AAAAAAAAALo/-VrcI_6elZI/s72-c/idea1.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-5134481854132785777</id><published>2011-02-22T11:58:00.001-08:00</published><updated>2011-02-22T11:58:10.095-08:00</updated><title type='text'>Eclipse Stammtisch munich</title><content type='html'>Greetings to all Eclipse Folks from the longest Eclipse Stammtisch ever :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href='http://photo.blogpressapp.com/show_photo.php?p=11/02/22/1809.jpg'&gt;&lt;img src='http://photo.blogpressapp.com/photos/11/02/22/s_1809.jpg' border='0' width='281' height='210' style='margin:5px'&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;We have good food, good beer and good conversations. Thanks to Ralph for the drinks!&lt;br /&gt;&lt;p class='blogpress_location'&gt;Position:&lt;a href='http://maps.google.com/maps?q=Kuglerstra%C3%9Fe,M%C3%BCnchen,Deutschland%4048.136390%2C11.605175&amp;z=10'&gt;Kuglerstraße,München,Deutschland&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-5134481854132785777?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/5134481854132785777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2011/02/eclipse-stammtisch-munich.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/5134481854132785777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/5134481854132785777'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2011/02/eclipse-stammtisch-munich.html' title='Eclipse Stammtisch munich'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-8265253753661096081</id><published>2011-02-15T00:37:00.000-08:00</published><updated>2011-02-15T00:37:54.631-08:00</updated><title type='text'>Eclipse Stammtisch München, few seats available</title><content type='html'>The democamp in November proofed, that there is a large and active Eclipse community in Munich. We have already 31 registrations for the Eclipse Stammtisch on February 22nd 19.00 at &lt;a href="http://www.unionsbraeu.de/"&gt;Unionsbräu&lt;/a&gt;.&lt;br /&gt;There a only 9 seats available to fill the worlds longest Eclipse Stammtisch (&lt;a href="http://ekkescorner.wordpress.com/2011/02/04/oop2011-entwicklertage2011-eclipsecon2011-jax2011/"&gt;as stated by Ekke&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TU_1w41TN-I/AAAAAAAAALg/VSt_BG-CjaU/s1600/stammtisch.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_gSKno1K1saU/TU_1w41TN-I/AAAAAAAAALg/VSt_BG-CjaU/s320/stammtisch.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We are looking forward to meet you there and we will make a reservation for additional tables, if the "long" table is full. &lt;br /&gt;Please help us to organize the event by registering &lt;a href="https://spreadsheets.google.com/viewform?hl=en&amp;amp;formkey=dGg3YU92dml5eHYtaUY0XzVUdkFSekE6MA#gid=0"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-8265253753661096081?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/8265253753661096081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2011/02/eclipse-stammtisch-munchen-few-seats.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/8265253753661096081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/8265253753661096081'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2011/02/eclipse-stammtisch-munchen-few-seats.html' title='Eclipse Stammtisch München, few seats available'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gSKno1K1saU/TU_1w41TN-I/AAAAAAAAALg/VSt_BG-CjaU/s72-c/stammtisch.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-6547782799617526124</id><published>2011-02-08T00:56:00.000-08:00</published><updated>2011-02-08T00:56:56.105-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Model Generator Test EMF Eclipse'/><title type='text'>Test Model Generator for EMF</title><content type='html'>In several EMF projects I have seen a test model generator. The goal is to generate model instances of a certain model, which can be used for testing. For some tests, it is only important to have an arbitrary instance of a certain size, and sometimes it just makes sense to create arbitrary model instances to detect failures. We (Andrea, Metteo, Hong and Stephan) have developed a geneeirc generetor appyable for arbitrary ecore models. I am interested in feedback on this, we plan to make it available under EPL in the &lt;a href="http://emfcp.org/"&gt;EMF Client Platform Project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Models can be created like this:&lt;br /&gt;&lt;br /&gt;1. Generating Ecore model (Library) without using any further Configuration:&lt;br /&gt;&lt;br /&gt;&lt;script class="brush: html" type="syntaxhighlighter"&gt;&lt;![CDATA[String modelKey = "http://org/eclipse/example/library.ecore";EPackage ePackage = ModelGeneratorUtil.getEPackage(modelKey);EObject root = ePackage.getEClassifier("EPackage");ModelGenerator.generateModel(ePackage, root);]]&gt;&lt;/script&gt;&lt;br /&gt;2. Generating Ecore model (Ecore ecore) using ModelGeneratorConfiguration:&lt;br /&gt;&lt;script class="brush: html" type="syntaxhighlighter"&gt;&lt;![CDATA[int width = 3;int depth = 3;String modelKey = "http://www.eclipse.org/emf/2002/Ecore";EPackage ePackage = ModelGeneratorUtil.getEPackage(modelKey);EObject root = ePackage.getEClassifier("EPackage");ModelGeneratorConfiguration config = new ModelGeneratorConfiguration(ePackage, root, width, depth);ModelGenerator.generateModel(config);]]&gt;&lt;/script&gt;&lt;br /&gt;3. Changing values of the configuration (OCL model):&lt;br /&gt;&lt;script class="brush: html" type="syntaxhighlighter"&gt;&lt;![CDATA[String modelKey =    "http://www.eclipse.org/ocl/1.1.0/Ecore";EPackage ePackage = ModelGeneratorUtil.getEPackage(modelKey);EObject root = ePackage.getEClassifier("EPackage");ModelGeneratorConfiguration config = new ModelGeneratorConfiguration(ePackage, root);config.setSeed(1234);config.setIgnoreAndLog(true);ModelGenerator.generateModel(config);]]&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-6547782799617526124?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/6547782799617526124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2011/02/test-model-generator-for-emf.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/6547782799617526124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/6547782799617526124'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2011/02/test-model-generator-for-emf.html' title='Test Model Generator for EMF'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-9127797469271951111</id><published>2011-02-01T00:39:00.000-08:00</published><updated>2011-02-01T08:06:05.720-08:00</updated><title type='text'>The curious case of VisibleWhen</title><content type='html'>Almost every Eclipse developer has used it, but I have seen many cases, where the VisibleWhen tag is just copied. It is used to define the visibility of the menu item of your plugin. As an example you could show a specific menu item in the navigator right click menue of a certain type (e.g. a Java File). This post describes a typical example of the VisibleWhen in detail, thanks to Stephan for wrapping thing up.&lt;br /&gt;A very easy way to test the VisibleWhen condition is to register an example command on Java elements. They can be created in the target (the compiled and started Eclipse instance). In this example I register an example command in the right click menue of an ICompilationUnit (Java Class) and an IJavaProject (Java Project). The following screenshots shows these two elements in the target.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TUcxAjVwomI/AAAAAAAAALU/DZDaF9Ia46w/s1600/projekt.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="111" src="http://4.bp.blogspot.com/_gSKno1K1saU/TUcxAjVwomI/AAAAAAAAALU/DZDaF9Ia46w/s320/projekt.PNG" width="234" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The following example shows the menue entry, if one IJavaProject is selected.&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush:xml"&gt;&lt;extension point="org.eclipse.ui.menus"&gt;&lt;br /&gt;      &amp;lt;menucontribution allpopups="false" locationuri="popup:org.eclipse.jdt.ui.PackageExplorer"&amp;gt;&lt;br /&gt;         &amp;lt;command commandid="menucontributions.commands.sampleCommand"&amp;gt;&lt;br /&gt;            &amp;lt;visiblewhen checkenabled="false"&amp;gt;&lt;br /&gt;               &amp;lt;and&amp;gt;&lt;br /&gt;                  &amp;lt;iterate ifempty="false" operator="and"&amp;gt;&lt;br /&gt;                     &amp;lt;instanceof value="org.eclipse.jdt.core.IJavaProject"&amp;gt;&lt;br /&gt;                     &amp;lt;/instanceof&amp;gt;&lt;br /&gt;                  &amp;lt;/iterate&amp;gt;&lt;br /&gt;                    &amp;lt;count value="1"&amp;gt;&lt;br /&gt;                &amp;lt;/count&amp;gt;&lt;br /&gt;               &amp;lt;/and&amp;gt;&lt;br /&gt;            &amp;lt;/visiblewhen&amp;gt;&lt;br /&gt;         &amp;lt;/command&amp;gt;&lt;br /&gt;      &amp;lt;/menucontribution&amp;gt;&lt;br /&gt;   &amp;lt;/extension&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;-By setting the attribute &lt;b&gt;checkEnabled &lt;/b&gt;to true the menu will check if the corresponding handler has been enabled; if it has been enabled then it will show the menue entry, otherwise it will not. &lt;br /&gt;&lt;br /&gt;- &lt;b&gt;&lt;and&gt;&lt;/and&gt;&lt;/b&gt; is combining the conditions: In this case the "&lt;b&gt;iterate&lt;/b&gt;" condition AND the "&lt;b&gt;count&lt;/b&gt;" condition have to be true. Otherwise the item isn't shown.&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;&lt;iterate&gt;&lt;/iterate&gt;&lt;/b&gt; iterates over all selected elements and checks the conditions underneath for every element. If you directly right click an item, only one element is selected. If multi-selection is allowed, many elements can be selected on right click. &lt;b&gt;ifEmpty=false&lt;/b&gt; means that if nothing is selected, the menu item isn't shown. &lt;b&gt;operator="and"&lt;/b&gt; says that the conditions (in this case there is only one &lt;b&gt;instanceof &lt;/b&gt;condition, but there can be more) must be true for all selected elements. &lt;b&gt;operator="or"&lt;/b&gt; will show the menue entry, if the condition is true for at least one selected element.&lt;br /&gt;&lt;br /&gt;-instanceof checks for every selection if the selected element is an instance of the type &lt;i&gt;someClass&lt;/i&gt; in this case &lt;b&gt;org.eclipse.jdt.core.IJavaProject&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;- With &lt;b&gt;count &lt;/b&gt;you can set the number of selected items. If more or less are selected, the menu item isn't shown.&lt;br /&gt;You can also use th following parameters:&lt;br /&gt;&lt;table border="0" cellpadding="5" cellspacing="5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;*&lt;/td&gt; &lt;td&gt;Arbitrary number of items&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;?&lt;/td&gt; &lt;td&gt;Zero or one item&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;+&lt;/td&gt; &lt;td&gt;One ore more items&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;!&lt;/td&gt; &lt;td&gt;No items&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The following example shows the menue entry if exactly two items are selected and both items are either an ICompilationUnit or an IJavaProject:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="brush:xml"&gt;&amp;lt;visiblewhen checkenabled="true"&amp;gt;&lt;br /&gt;               &amp;lt;and&amp;gt;&lt;br /&gt;                  &amp;lt;iterate ifempty="false" operator="and"&amp;gt;&lt;br /&gt;                     &amp;lt;or&amp;gt;&lt;br /&gt;                        &amp;lt;instanceof value="org.eclipse.jdt.core.IJavaProject"&amp;gt;&lt;br /&gt;                        &amp;lt;/instanceof&amp;gt;&lt;br /&gt;                        &amp;lt;instanceof value="org.eclipse.jdt.core.ICompilationUnit"&amp;gt;&lt;br /&gt;                        &amp;lt;/instanceof&amp;gt;&lt;br /&gt;                     &amp;lt;/or&amp;gt;&lt;br /&gt;                  &amp;lt;/iterate&amp;gt;&lt;br /&gt;                  &amp;lt;count value="2"&amp;gt;&lt;br /&gt;                  &amp;lt;/count&amp;gt;&lt;br /&gt;               &amp;lt;/and&amp;gt;&lt;br /&gt;            &amp;lt;/visiblewhen&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-9127797469271951111?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/9127797469271951111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2011/02/curious-case-of-visiblewhen.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/9127797469271951111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/9127797469271951111'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2011/02/curious-case-of-visiblewhen.html' title='The curious case of VisibleWhen'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gSKno1K1saU/TUcxAjVwomI/AAAAAAAAALU/DZDaF9Ia46w/s72-c/projekt.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-5499483095106762383</id><published>2011-01-20T04:04:00.000-08:00</published><updated>2011-01-20T04:04:33.126-08:00</updated><title type='text'>Automatic Bug Reporting in Eclipse</title><content type='html'>Recently I have been looking for a framework for Eclipse to automatically report bugs, which result in a error message or an error log entry. The reason is quite easy: whenever something goes wrong while someone is using your product or framework, you would like to know that to fix the issue. Many commercial products like MS Office offer the feature to automatically submit crash reports to the vendor. Surprisingly, I did not find any framework offering this feature for Eclipse. There is an implementation within Window Builder, but it is (not yet) available stand-alone.&lt;br /&gt;&lt;br /&gt;I would like to ask for opinions about the following feature list, whether they are required by more poeple or projects and how this issue is solved in other projects:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Features &lt;/span&gt;&lt;br /&gt;When an error occurs, there should be an option to view relevant errors and the information to be sent to a specified location such as an email address or the development team.&lt;br /&gt;&lt;br /&gt;The required features are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A listener to recognize that an error has occurred. This listener should include the error log as well as runtime exceptions.&lt;/li&gt;&lt;li&gt; An ability to filter the listener by different categories such as by&lt;br /&gt;packages or projects, i.e. org.unicase.*, Emf, etc. Depending on the filter, the&lt;br /&gt;UI for reporting the bug appears. &lt;/li&gt;&lt;li&gt; A UI element showing the relevant errors and collected information such as&lt;br /&gt;operating system, java version, and target definition. The collected information should be transparent for the user for privacy reasons.&lt;/li&gt;&lt;li&gt;  Sending the collected data to a specified email address, bugzilla or google group&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Furthermore you could think about several refinements, which improve the user acceptance such as an aggregation. In case there are many relevant errors, the framework should aggregate them and only ask the user once in time.&lt;br /&gt;I am interested in any feedback on this.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-5499483095106762383?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/5499483095106762383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2011/01/automatic-bug-reporting-in-eclipse.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/5499483095106762383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/5499483095106762383'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2011/01/automatic-bug-reporting-in-eclipse.html' title='Automatic Bug Reporting in Eclipse'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-2719542347487663337</id><published>2011-01-19T02:24:00.000-08:00</published><updated>2011-01-19T11:24:36.654-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Git'/><category scheme='http://www.blogger.com/atom/ns#' term='Egit'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>EGit Tutorial for Beginners</title><content type='html'>&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Matteo recently created a very comprehensive tutorial for EGit, which I would like to share. The tutorial describes all basic features of EGit including screenshots. It is meant for people who are just starting to use EGit.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Installing EGit into Eclipse&lt;/span&gt;&lt;br /&gt;Open the Eclipse Wizard to install new software &lt;i&gt;Help =&amp;gt; Install New Software&lt;/i&gt;. Insert &lt;a href="http://download.eclipse.org/egit/updates"&gt;http://download.eclipse.org/egit/updates&lt;/a&gt; after &lt;i&gt;Work with:&lt;/i&gt; and hit Return. Select Eclipse EGit (Incubation) as a child from Eclipse Team Git Provider (Incubation). You don't have to install any other plugins. Click &lt;i&gt;Next&lt;/i&gt; and confirm your selection in the following window pressing &lt;i&gt;Next &lt;/i&gt;again. Finally, accept the terms of license agreement and click &lt;i&gt;Finish &lt;/i&gt;to start the installation. After the installation has finished, restart Eclipse to work with EGit&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TTRgd8UC0II/AAAAAAAAAII/KE7HDhW4P1E/s1600/InstallZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="181" src="http://4.bp.blogspot.com/_gSKno1K1saU/TTRgd8UC0II/AAAAAAAAAII/KE7HDhW4P1E/s320/InstallZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;EGit Configuration&lt;/span&gt;&lt;br /&gt;Every commit in EGit will include the user's name and his email-address. These attributes can be set in the Preferences-window &lt;i&gt;Window =&amp;gt; Preferences&lt;/i&gt;. Navigate to &lt;i&gt;Team =&amp;gt; Git =&amp;gt; Configuration&lt;/i&gt; and hit the &lt;i&gt;New Entry...&lt;/i&gt; Button. Enter&lt;i&gt; user.name&lt;/i&gt; as &lt;i&gt;Key &lt;/i&gt;and your name as &lt;i&gt;Value &lt;/i&gt;and confirm. Repeat this procedure with &lt;i&gt;user.email&lt;/i&gt; and your email-address and click &lt;i&gt;OK &lt;/i&gt;in the Preferences-window.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTRhO4JwaYI/AAAAAAAAAIM/Qt4DRU-TwOM/s1600/NewEntryZoom.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="194" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTRhO4JwaYI/AAAAAAAAAIM/Qt4DRU-TwOM/s320/NewEntryZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Creating Local Repositories&lt;/span&gt;&lt;br /&gt;First ,you have to create any project you want to share via your local repository. For later purposes it would be useful to also add a class to your project. After you have created your project, rightclick it and navigate to &lt;i&gt;Team =&amp;gt; Share Project...&lt;/i&gt; . Select &lt;i&gt;Git &lt;/i&gt;as the repository type and hit &lt;i&gt;Next&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TTRh962BmfI/AAAAAAAAAIQ/b0EDbKOHJh8/s1600/ShareProjectZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="199" src="http://3.bp.blogspot.com/_gSKno1K1saU/TTRh962BmfI/AAAAAAAAAIQ/b0EDbKOHJh8/s320/ShareProjectZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;In the following window select your project, hit the &lt;i&gt;Create Repository&lt;/i&gt;-button and click &lt;i&gt;Finish&lt;/i&gt;. The repository will be assigned automatically.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TTRiOdCCxvI/AAAAAAAAAIU/43qosTnqL9g/s1600/CreateRepositoryZoom.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="146" src="http://2.bp.blogspot.com/_gSKno1K1saU/TTRiOdCCxvI/AAAAAAAAAIU/43qosTnqL9g/s320/CreateRepositoryZoom.png" width="320" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The created repository will be empty, although the project is assigned to it (note the changed icons: the project node will have a repository-sign, the child nodes will have a question mark-sign, ignored files, e.g. the bin-directory, won't have any sign at all). Before you can commit the files to your repository, you have to add them. Simply rightclick the shared project's node and navigate to &lt;i&gt;Team =&amp;gt; Add&lt;/i&gt;. After this operation, the question mark-signs should have turned into plus-signs. The last thing to do is to commit the project: Rightclick the project node and select &lt;i&gt;Team =&amp;gt; Commit...&lt;/i&gt; from the context menu. In the Commit-wizard, all files should be selected automatically. Enter a commit message (the first line should be headline-like, as it will appear in the history view) and hit the &lt;i&gt;Commit&lt;/i&gt;-button. If successful, the plus-signs should have turned into repository-signs as well.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TTRjIMAaDHI/AAAAAAAAAIY/4TglEd39MU8/s1600/CommitWizardZoom.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="204" src="http://2.bp.blogspot.com/_gSKno1K1saU/TTRjIMAaDHI/AAAAAAAAAIY/4TglEd39MU8/s320/CommitWizardZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Commit&lt;/span&gt;&lt;br /&gt;To save changes done in your workspace into your repository, you will have to commit them. After changing files in your project, a "&amp;gt;" sign will be added, right after the icon, telling you the status of these files is dirty. Any parent folder of this file will be dirty as well.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTRlDfMt4cI/AAAAAAAAAIc/DWGgqdI9V6I/s1600/DirtyZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTRlDfMt4cI/AAAAAAAAAIc/DWGgqdI9V6I/s1600/DirtyZoom.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If you want to commit the changes to your repository, rightclick the project (or the files you want to commit) and select &lt;i&gt;Team =&amp;gt; Commit...&lt;/i&gt; . This will open a new window, allowing you to select the files you want to commit. Before you can commit the files, you will have to enter a commit message in the upper textbox. After you're done, click &lt;i&gt;Commit &lt;/i&gt;to commit the selected files to your repository.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTRlcUj2OKI/AAAAAAAAAIg/Sy1uX7kDq40/s1600/CommitZoom2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTRlcUj2OKI/AAAAAAAAAIg/Sy1uX7kDq40/s320/CommitZoom2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Note that the status of the changed file is &lt;i&gt;Mod., not staged&lt;/i&gt;. By staging the files before you commit (see section Additional Information), you can change the status to &lt;i&gt;Modified &lt;/i&gt;(and the dirty sign to a staged icon).&lt;br /&gt;&lt;br /&gt;If you realize your previous commit was incomplete (e.g. you missed to commit a file) or your last commit's commit message was wrong in any way, you might want to check &lt;i&gt;Amend previous commit&lt;/i&gt;. This will merge the current commit and the previous commit into one, so you don't have to perform an extra commit (and maybe cause confusion). However, this should only be done if the previous commit hasn't already been published to a shared repository.&lt;br /&gt;Another option is &lt;i&gt;Show untracked files.&lt;/i&gt; By checking this checkbox, new files you created, but did not add yet, will be available for you to select. Checking untracked files will add them to your repository, after clicking &lt;i&gt;Commit&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Adding Files&lt;/span&gt;&lt;br /&gt;To add a new file to the repository, you will have to create it in your shared project first. The new file will, again, appear with a question mark-sign.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTRmf8owk2I/AAAAAAAAAIk/uEkv66_-l8Y/s1600/NewFileZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTRmf8owk2I/AAAAAAAAAIk/uEkv66_-l8Y/s1600/NewFileZoom.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Rightclick it and navigate to &lt;i&gt;Team =&amp;gt; Add&lt;/i&gt;. The question mark-sign will turn into a plus-sign - the file is now tracked by Git, but not yet commited. All of the file's parent folders should now have a staged-sign (more on that later). In the next commit, the file will be added to the repository, therefore the plus-sign will turn into a repository-sign. The repository-signs of all the file's parents (packages/project...) will turn into staged-signs.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TTRnBsfbTWI/AAAAAAAAAIo/vx4c6k4_U14/s1600/AddedFileZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_gSKno1K1saU/TTRnBsfbTWI/AAAAAAAAAIo/vx4c6k4_U14/s1600/AddedFileZoom.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Reverting Changes&lt;/span&gt;&lt;br /&gt;If you want to revert any changes, there are two possibilities: You can compare each file you want to revert with the HEAD revision (or the index, more on that later) and undo some or all changes done. Otherwise you can hard-reset your project, causing any changes in the working directory to be reverted.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Revert via Compare&lt;/span&gt;&lt;br /&gt;Rightclick the file you want to revert and select &lt;i&gt;Compare With =&amp;gt; HEAD Revision&lt;/i&gt;. This will open a comparison with the HEAD Revision, pointing out any changes done. If you want to completely revert your file, hit the&lt;i&gt; Copy  All Non-Conflicting Changes from Right to Left&lt;/i&gt;-button in the Java Source Compare-toolbar. If you only want to revert several lines, select each line and hit the &lt;i&gt;Copy Current Change from Right to Left&lt;/i&gt;-button from the toolbar each time. After any of these two you will have to save either the comparison or your local copy of the file to complete the revert operation.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTRsZ3nSUiI/AAAAAAAAAIs/QzY3ZRqkEHE/s1600/RevertFileZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTRsZ3nSUiI/AAAAAAAAAIs/QzY3ZRqkEHE/s320/RevertFileZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Revert via Reset&lt;/span&gt;&lt;br /&gt;To reset all changes done to your project, rightclick the project node and navigate to &lt;i&gt;Team =&amp;gt; Reset&lt;/i&gt;... . Select the branch you want to reset to (if you haven't created any other branches, there will be just one) and choose &lt;i&gt;Hard &lt;/i&gt;as a reset type. By confirming this operation, all changes will be resetted to this branch's last commit, including all changes done in the workspace (and index, more on that later).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TTRs5_El6LI/AAAAAAAAAIw/wWc2zzBVjgk/s1600/RevertProjectZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://4.bp.blogspot.com/_gSKno1K1saU/TTRs5_El6LI/AAAAAAAAAIw/wWc2zzBVjgk/s320/RevertProjectZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Cloning Repositories&lt;/span&gt;&lt;br /&gt;Note: For this and some of the following (especially Fetch/Push) sections, you might want to use &lt;a href="https://github.com/"&gt;https://github.com&lt;/a&gt; for creating your own remote repository. This might be useful to perform several actions and gain some insight.&lt;br /&gt;&lt;br /&gt;In order to checkout a remote project, you will have to clone its repository first. Open the Eclipse Import-wizard (e.g.&lt;i&gt; File =&amp;gt; Import&lt;/i&gt;), select &lt;i&gt;Git =&amp;gt; Projects from Git&lt;/i&gt; and click &lt;i&gt;Next&lt;/i&gt;. This will open the Git Repository Selection. Hit the &lt;i&gt;Clone...&lt;/i&gt; button to open another wizard for cloning Git repositories.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TTVpKTwXr5I/AAAAAAAAAI0/Fsi23Os2wuY/s1600/ImportProjectZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://3.bp.blogspot.com/_gSKno1K1saU/TTVpKTwXr5I/AAAAAAAAAI0/Fsi23Os2wuY/s320/ImportProjectZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTVpTDmxIAI/AAAAAAAAAI4/YfjVlIDdfZ8/s1600/CloneZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="220" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTVpTDmxIAI/AAAAAAAAAI4/YfjVlIDdfZ8/s320/CloneZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;First you will have to enter the repository's location and connection data. Entering the URI will automatically fill some fields, if any other are required, fill these and hit &lt;i&gt;Next&lt;/i&gt;. Select all branches you wish to clone and hit &lt;i&gt;Next &lt;/i&gt;once more.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TTVpkBZoKgI/AAAAAAAAAI8/Of5MejLFTzA/s1600/CloneRepositoryZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_gSKno1K1saU/TTVpkBZoKgI/AAAAAAAAAI8/Of5MejLFTzA/s320/CloneRepositoryZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTVpnsWSYFI/AAAAAAAAAJA/ziJbZwLFfjY/s1600/BranchSelectZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTVpnsWSYFI/AAAAAAAAAJA/ziJbZwLFfjY/s320/BranchSelectZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Choose a local directory to save this repository in.&lt;br /&gt;&lt;div style="color: blue;"&gt;Warning: I ran into some errors when choosing the default directory, as this was my workspace directory and I couldn't import projects into a subfolder in my workspace as Eclipse prohibited this. If you can't import projects from a repository, try changing this directory!&lt;/div&gt;After clicking &lt;i&gt;Finish&lt;/i&gt;, the cloned repository should appear in your repository list.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTVqHM4A_HI/AAAAAAAAAJE/N7oLcbSXr68/s1600/LocalDestinationZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTVqHM4A_HI/AAAAAAAAAJE/N7oLcbSXr68/s320/LocalDestinationZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTVqKlrjFlI/AAAAAAAAAJI/zecrJGnr9zU/s1600/CloneDoneZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTVqKlrjFlI/AAAAAAAAAJI/zecrJGnr9zU/s320/CloneDoneZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;To import the projects, select the cloned repository and hit &lt;i&gt;Next&lt;/i&gt;. Select &lt;i&gt;Import Existing Project&lt;/i&gt;s and &lt;i&gt;Try to share newly created projects automatically&lt;/i&gt; (otherwise you would have to share the projects manually) and hit &lt;i&gt;Next&lt;/i&gt;. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TTVqlmrSjmI/AAAAAAAAAJM/iZJdIHUWbJQ/s1600/ImportOptionsZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="http://2.bp.blogspot.com/_gSKno1K1saU/TTVqlmrSjmI/AAAAAAAAAJM/iZJdIHUWbJQ/s320/ImportOptionsZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the following window, select all projects you want to import and click &lt;i&gt;Finish&lt;/i&gt;. The projects should now appear in the Navigator/Package Explorer (note the repository-sign in the icons - the projects are already shared)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTVq8oyuEPI/AAAAAAAAAJQ/gaxdU0af0Tg/s1600/ProjectSelectZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="301" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTVq8oyuEPI/AAAAAAAAAJQ/gaxdU0af0Tg/s320/ProjectSelectZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TTVrAK3XTeI/AAAAAAAAAJU/BhfZN-wmCRg/s1600/ImportCompleteZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_gSKno1K1saU/TTVrAK3XTeI/AAAAAAAAAJU/BhfZN-wmCRg/s1600/ImportCompleteZoom.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;Creating Branches&lt;/span&gt;&lt;br /&gt;To create a new branch in your repository, rightclick a shared project and navigate to &lt;i&gt;Team =&amp;gt; Branch...&lt;/i&gt; from the context menu. Select the branch you want to create a new branch from, hit &lt;i&gt;New branch&lt;/i&gt; and enter a name for the new branch.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TTVrtfx01BI/AAAAAAAAAJY/gD3IpKOOea8/s1600/NewBranchZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://4.bp.blogspot.com/_gSKno1K1saU/TTVrtfx01BI/AAAAAAAAAJY/gD3IpKOOea8/s320/NewBranchZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TTVr55piVcI/AAAAAAAAAJc/SNKTyvuUORM/s1600/BranchNameZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" src="http://3.bp.blogspot.com/_gSKno1K1saU/TTVr55piVcI/AAAAAAAAAJc/SNKTyvuUORM/s320/BranchNameZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The new branch should appear in the branch selection window. If you would like to checkout the just created branch, select it and click &lt;i&gt;Checkout&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTVr_0NSqvI/AAAAAAAAAJg/L-y7kBNxrG0/s1600/CheckoutBranchZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTVr_0NSqvI/AAAAAAAAAJg/L-y7kBNxrG0/s320/CheckoutBranchZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Merge&lt;/span&gt;&lt;br /&gt;To merge one branch into another, you will have to checkout the branch you want to merge in to. Rightclick the project node and navigate to &lt;i&gt;Team =&amp;gt; Merge...&lt;/i&gt; . Select any branch (other than the checked out branch) and hit &lt;i&gt;Merge&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TTVvBX-SqLI/AAAAAAAAAJk/kgNGXbGAL9o/s1600/MergeWizardZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="191" src="http://4.bp.blogspot.com/_gSKno1K1saU/TTVvBX-SqLI/AAAAAAAAAJk/kgNGXbGAL9o/s320/MergeWizardZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The merge will happen automatically and pop up a result window telling you about the outcome. The possible results are &lt;i&gt;Already-up-to-date, Fast-forward, Merged, Conflicting, Failed&lt;/i&gt;. A &lt;i&gt;Conflicting &lt;/i&gt;result (see picture below) will leave the merge process incomplete, you will have to resolve the conflicts (see next chapter). A &lt;i&gt;Failed &lt;/i&gt;result may occur when there are conflicting changes in the working directory.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TTVvZ5UA7gI/AAAAAAAAAJo/Mrc5lRI468E/s1600/MergeResultZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="115" src="http://4.bp.blogspot.com/_gSKno1K1saU/TTVvZ5UA7gI/AAAAAAAAAJo/Mrc5lRI468E/s320/MergeResultZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Resolving Conflicts&lt;/span&gt;&lt;br /&gt;If your merge resulted in conflicts (note the red sign in the file icons), you will have to resolve these manually. Open the conflicting files and scroll to the conflicting changes (&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TTVvrvbRvjI/AAAAAAAAAJs/D0uDHFp2VVE/s1600/ConflictFileZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="93" src="http://3.bp.blogspot.com/_gSKno1K1saU/TTVvrvbRvjI/AAAAAAAAAJs/D0uDHFp2VVE/s320/ConflictFileZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;After you are done merging, you will have to tell Git that the conflict is resolved. To do so, &lt;i&gt;Add &lt;/i&gt;the files and &lt;i&gt;Commit &lt;/i&gt;afterwards to complete your conflicting merge.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TTVwIx7nLcI/AAAAAAAAAJw/w5XDAOnbqu4/s1600/ConflictResolvedZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="97" src="http://2.bp.blogspot.com/_gSKno1K1saU/TTVwIx7nLcI/AAAAAAAAAJw/w5XDAOnbqu4/s320/ConflictResolvedZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Fetch&lt;/span&gt;&lt;br /&gt;When cloning remote repositories, git creates a copy of the branches as local branches and as remote branches as well. A &lt;i&gt;Fetch&lt;/i&gt;-operation will update the remote branches only. To update your local branches as well, you will have to perform a &lt;i&gt;Merge&lt;/i&gt;-operation after fetching (&lt;i&gt;Fetch &lt;/i&gt;and &lt;i&gt;Merge&lt;/i&gt; is &lt;i&gt;Pull &lt;/i&gt;in the original Git). To perform a &lt;i&gt;Fetch&lt;/i&gt;, select &lt;i&gt;Team =&amp;gt; Fetch From...&lt;/i&gt; from the project's context menu. Enter the repository you want to fetch branches from (if you cloned this repository, the remote will be selected as default).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TTVxDUhfsmI/AAAAAAAAAJ0/l_1gkv-49S0/s1600/FetchRepositoryZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="281" src="http://3.bp.blogspot.com/_gSKno1K1saU/TTVxDUhfsmI/AAAAAAAAAJ0/l_1gkv-49S0/s320/FetchRepositoryZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the following window you will have to select what you want to fetch. By default, all branches are selected.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TTVxVveyo3I/AAAAAAAAAJ4/JOsJffD3nbM/s1600/FetchWizardZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="297" src="http://4.bp.blogspot.com/_gSKno1K1saU/TTVxVveyo3I/AAAAAAAAAJ4/JOsJffD3nbM/s320/FetchWizardZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The result of the &lt;i&gt;Fetch&lt;/i&gt;-operation will be shown in a final confirmation window:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTVxaLqUraI/AAAAAAAAAJ8/EeN6tE0Zbxk/s1600/FetchDoneZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTVxaLqUraI/AAAAAAAAAJ8/EeN6tE0Zbxk/s320/FetchDoneZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Push&lt;/span&gt;&lt;br /&gt;Local changes done to your local branches can be pushed to remote repositories causing a merge from your branches into the branches of the remote repository (X pulls from Y is the same as Y pushes to X). The &lt;i&gt;Push&lt;/i&gt;-wizard is pretty much the same as the &lt;i&gt;Fetch&lt;/i&gt;-wizard. First, rightclick the project node and navigate to &lt;i&gt;Team&amp;nbsp; =&amp;gt; Push...&lt;/i&gt; . Enter the repository you want to push your branches to (the default for this will be the same as the &lt;i&gt;Fetch&lt;/i&gt;-default if you didn't configure a &lt;i&gt;Push&lt;/i&gt;-default) and hit &lt;i&gt;Next&lt;/i&gt;. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TTVyE-Ocm2I/AAAAAAAAAKA/s7XnS4zfsWQ/s1600/PushRepositoryZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://4.bp.blogspot.com/_gSKno1K1saU/TTVyE-Ocm2I/AAAAAAAAAKA/s7XnS4zfsWQ/s320/PushRepositoryZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Choose the branches you want to push or click &lt;i&gt;Add all branches spec&lt;/i&gt; if you want to push all branches. You can also select branches you want to delete from the remote repository. If you are done hit &lt;i&gt;Finish&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTVycvUwjgI/AAAAAAAAAKE/7qOi9mXF514/s1600/PushWizardZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="297" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTVycvUwjgI/AAAAAAAAAKE/7qOi9mXF514/s320/PushWizardZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;A final window will show the results of the &lt;i&gt;Push&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTVymXk5-PI/AAAAAAAAAKI/dgGju3sR3Ik/s1600/PushConfirmationZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="207" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTVymXk5-PI/AAAAAAAAAKI/dgGju3sR3Ik/s320/PushConfirmationZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Synchronize&lt;/span&gt;&lt;br /&gt;Comparisons between branches are done via the &lt;i&gt;Synchronize&lt;/i&gt;-operation. Rightlick the project node and navigate to &lt;i&gt;Team =&amp;gt; Synchronize...&lt;/i&gt; . Select the branches you want to compare, include local uncommited changes if you like, and hit &lt;i&gt;OK&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TTVzHF7_-RI/AAAAAAAAAKM/BD-DOjdMEqg/s1600/SynchronizeWizardZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://2.bp.blogspot.com/_gSKno1K1saU/TTVzHF7_-RI/AAAAAAAAAKM/BD-DOjdMEqg/s320/SynchronizeWizardZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;To compare the branches you may want to switch to the Synchronizing perspective. You might get a more detailed view of the several changes. The following picture shows a &lt;i&gt;Synchronize &lt;/i&gt;in the Java perspective.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TTVzUEkSghI/AAAAAAAAAKQ/sXFaZtpjSVY/s1600/SynchronizeViewZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://3.bp.blogspot.com/_gSKno1K1saU/TTVzUEkSghI/AAAAAAAAAKQ/sXFaZtpjSVY/s320/SynchronizeViewZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;An example of a &lt;i&gt;Synchronize&lt;/i&gt;-operation in the Synchronizing perspective:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTVza2b4R_I/AAAAAAAAAKU/NuterMLeZUA/s1600/SynchronizePerspective.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTVza2b4R_I/AAAAAAAAAKU/NuterMLeZUA/s320/SynchronizePerspective.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;History View&lt;/span&gt;&lt;br /&gt;To show any shared file's history, rightclick it and select &lt;i&gt;Team =&amp;gt; Show in History&lt;/i&gt;. This will open the History View, granting an overview of the commits and allowing you to perform several actions (compare, creating branches/tags, reset...). Every commit you select comes up with a revision comment and revision details. The revision comment (bottom left corner) includes parents, children, commit message, changes... whereas the revision details (bottom right corner) name the changed files and the actions performed upon them (A=ADD, M=MODIFY, D=DELETE). Selecting a file in the revision details will scroll the revision comment to the changes of that file.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TTVz34O579I/AAAAAAAAAKY/80m_lP5syuY/s1600/HistoryAfterMergeZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="128" src="http://3.bp.blogspot.com/_gSKno1K1saU/TTVz34O579I/AAAAAAAAAKY/80m_lP5syuY/s320/HistoryAfterMergeZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Creating Patches&lt;/span&gt;&lt;br /&gt;EGit lets you create patches in Git patch format or default diff patch format. However, EGit doesn't support applying patches in Git patch format, yet. They could be applied via the command line though. Any patch can only include one commit, that is from a parent to its child (single parent, no merging allowed). To create a patch you have to open the History View first (see previous section). Rightclick a commit you want to create a patch for (this must be a child with exactly one parent) and select &lt;i&gt;Create Patch...&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TTa2XiCgUCI/AAAAAAAAAKc/A0O7UH_eQeE/s1600/CreatePatchZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_gSKno1K1saU/TTa2XiCgUCI/AAAAAAAAAKc/A0O7UH_eQeE/s1600/CreatePatchZoom.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Select either &lt;i&gt;Clipboard &lt;/i&gt;or &lt;i&gt;File &lt;/i&gt;and hit &lt;i&gt;Next&lt;/i&gt;. Export this patch in Git patch format if you like (reminder: can't be applied via EGit yet) and click &lt;i&gt;Finish&lt;/i&gt;. The resulting patch can be applied to the parent commit via &lt;i&gt;Team =&amp;gt; Apply Patch....&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTa2vHFBFpI/AAAAAAAAAKg/HN3GGkzEYtQ/s1600/ApplyPatchZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTa2vHFBFpI/AAAAAAAAAKg/HN3GGkzEYtQ/s320/ApplyPatchZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Repository View&lt;/span&gt;&lt;br /&gt;The repository view is useful when working with branches/tags and executing operations on them as well as handling remote repositories and granting an overview over all your repositories. To open this view, select &lt;i&gt;Team =&amp;gt; Show in Repositories View&lt;/i&gt; from any file's context menu.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TTa2-fTF2iI/AAAAAAAAAKk/XotfV8X1SKc/s1600/RepositoryViewZoom.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://3.bp.blogspot.com/_gSKno1K1saU/TTa2-fTF2iI/AAAAAAAAAKk/XotfV8X1SKc/s320/RepositoryViewZoom.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Additional Information&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Icon Decorations/Signs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TTa3dbtdz8I/AAAAAAAAAKo/qV0NVKyXMxo/s1600/ignored.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_gSKno1K1saU/TTa3dbtdz8I/AAAAAAAAAKo/qV0NVKyXMxo/s1600/ignored.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;ignored&lt;/i&gt;: The repository treats these files as if they were non-existent (e.g. the bin-directory by default). Add a .gitignore file or &lt;i&gt;Team =&amp;gt; Ignore&lt;/i&gt; to ignore a file.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TTa3qPR-wvI/AAAAAAAAAKs/KTuoabt3Ubw/s1600/untracked.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_gSKno1K1saU/TTa3qPR-wvI/AAAAAAAAAKs/KTuoabt3Ubw/s1600/untracked.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;untracked&lt;/i&gt;: Any file known, but not yet recorded. To track a file, add it or select the &lt;i&gt;Show untracked files&lt;/i&gt;-option in the commit-wizard and commit it directly.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTa34bfN13I/AAAAAAAAAKw/u6sGHHczKFE/s1600/tracked.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTa34bfN13I/AAAAAAAAAKw/u6sGHHczKFE/s1600/tracked.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;tracked&lt;/i&gt;: Any file known to and recorded by the repository.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TTa4Hbc4PVI/AAAAAAAAAK0/DQ0CrzV_vxE/s1600/added.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_gSKno1K1saU/TTa4Hbc4PVI/AAAAAAAAAK0/DQ0CrzV_vxE/s1600/added.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;added&lt;/i&gt;: Any file known to the repository, but not yet commited. Perform a &lt;i&gt;Commit &lt;/i&gt;to change this file's status to tracked.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTa4VpdhBKI/AAAAAAAAAK4/D-SWH75ik30/s1600/removed.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTa4VpdhBKI/AAAAAAAAAK4/D-SWH75ik30/s1600/removed.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;removed&lt;/i&gt;: Any file that shall be removed from the repository. For this icon to appear &lt;i&gt;Team =&amp;gt; Untrack&lt;/i&gt; has to be performed. By deleting the file from the workspace, the file will disappear (and therefore no icon will appear). However, it will still be removed from the repository with the next commit.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TTa4ndqWzlI/AAAAAAAAAK8/WTyqFU3s8-M/s1600/dirty.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_gSKno1K1saU/TTa4ndqWzlI/AAAAAAAAAK8/WTyqFU3s8-M/s1600/dirty.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;dirty&lt;/i&gt;: Any tracked file with changes, that are not yet added to the index.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTa40ieQuwI/AAAAAAAAALA/2TlcJN7B7MY/s1600/staged.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTa40ieQuwI/AAAAAAAAALA/2TlcJN7B7MY/s1600/staged.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;staged&lt;/i&gt;: Any tracked file with changes, that are already added to the index.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TTa49ovHB3I/AAAAAAAAALE/MVkUzS_keRw/s1600/partially-staged.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_gSKno1K1saU/TTa49ovHB3I/AAAAAAAAALE/MVkUzS_keRw/s1600/partially-staged.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;partially-staged:&lt;/i&gt; Any tracked file with changes, where some changes are already and others are not yet added to the index.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TTa5JUen0ZI/AAAAAAAAALI/ujKaeXjEb7U/s1600/conflicted.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_gSKno1K1saU/TTa5JUen0ZI/AAAAAAAAALI/ujKaeXjEb7U/s1600/conflicted.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;conflicted&lt;/i&gt;: Any file where the merge result caused a conflict. Resolve the conflicts and perform an &lt;i&gt;Add&lt;/i&gt;-operation to change this file's status.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TTa5R_5ylOI/AAAAAAAAALM/twR4lqQlrL0/s1600/assume-valid.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_gSKno1K1saU/TTa5R_5ylOI/AAAAAAAAALM/twR4lqQlrL0/s1600/assume-valid.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;assume-valid&lt;/i&gt;: Any modifications won't be checked by Git. This option can be activated via &lt;i&gt;Team =&amp;gt; Assume&lt;/i&gt; unchanged. However, it can only be turned off via the command line without taking further actions. Performing a &lt;i&gt;Reset&lt;/i&gt;-operation resets this status as well.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Index&lt;/span&gt;The index, sometimes referred to as staging area, is an area between the working directory and the repository. Any change done to any file will change this file's status to &lt;i&gt;dirty &lt;/i&gt;(see above). Any &lt;i&gt;dirty &lt;/i&gt;file can be added to the index with an &lt;i&gt;Add&lt;/i&gt;-operation. The file's status changes to &lt;i&gt;staged&lt;/i&gt;. You can compare files to the index and reset the index without resetting the workspace. In original Git, files had to be added to the index before performing a &lt;i&gt;Commit&lt;/i&gt;-operation. This is not necessary in EGit, as &lt;i&gt;Team =&amp;gt; Commit&lt;/i&gt; allows to commit unstaged changes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Reset Types&lt;/span&gt;&lt;br /&gt;You can reset your current branch to any other branch, tag or commit you want. Rightclick any commit in the History View and select &lt;i&gt;Reset&lt;/i&gt;. There are three options available:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Soft&lt;/b&gt;:&lt;br /&gt;The current branch's tip will point to this branch/tag/commit. Changes in index and working directory, however, won't be resetted.&lt;br /&gt;&lt;b&gt;Mixed:&lt;/b&gt;&lt;br /&gt;Same as a soft reset, only that the current index will be replaced by the selected branch/tag/commit's index. The working directory stays unchanged.&lt;br /&gt;&lt;b&gt;Hard&lt;/b&gt;:&lt;br /&gt;All changes will be reverted to the selected branch/tag/commit. Uncommited changes will be lost, therefore this operation has to be confirmed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Useful pages&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To create your own remote repositories and perform operations on them, you might want to register at &lt;a href="https://github.com/"&gt;https://github.com&lt;/a&gt;. As long as your repository is public, github is free. &lt;/li&gt;&lt;li&gt;A tutorial with more information on certain options and actions: &lt;a href="http://wiki.eclipse.org/EGit/User_Guide"&gt;http://wiki.eclipse.org/EGit/User_Guide&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please feel free to post any comments or feedback. Thanks to Matteo for warpping things up.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flattr.com/thing/85982/Unicase-Eclipse-Blog" target="_blank"&gt;&lt;br /&gt;&lt;img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-2719542347487663337?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/2719542347487663337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2011/01/egit-tutorial-for-beginners.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/2719542347487663337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/2719542347487663337'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2011/01/egit-tutorial-for-beginners.html' title='EGit Tutorial for Beginners'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gSKno1K1saU/TTRgd8UC0II/AAAAAAAAAII/KE7HDhW4P1E/s72-c/InstallZoom.png' height='72' width='72'/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-5747173104756594650</id><published>2011-01-10T03:03:00.000-08:00</published><updated>2011-01-10T03:03:29.648-08:00</updated><title type='text'>Eclipse Stammtisch Munich rescheduled to February 22nd</title><content type='html'>Due to many requests, we have decided to reschedule the Eclipse Stammtisch in Munich to February 22nd. We have already made a reservation for this table:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TSrmrQqWlgI/AAAAAAAAAIA/NHwXf9n8y3I/s1600/Picture%2B53.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="238" width="320" src="http://4.bp.blogspot.com/_gSKno1K1saU/TSrmrQqWlgI/AAAAAAAAAIA/NHwXf9n8y3I/s320/Picture%2B53.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;at &lt;a href="http://www.unionsbraeu.de/"&gt;Unionsbräu&lt;/a&gt;. We will meet at 7pm.&lt;br /&gt;&lt;br /&gt;If you plan to attend, we kindly ask you to fill out &lt;a href="https://spreadsheets.google.com/viewform?hl=en&amp;formkey=dGg3YU92dml5eHYtaUY0XzVUdkFSekE6MA#gid=0"&gt;this form&lt;/a&gt;. This helps us to organize the event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-5747173104756594650?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/5747173104756594650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2011/01/eclipse-stammtisch-munich-rescheduled.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/5747173104756594650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/5747173104756594650'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2011/01/eclipse-stammtisch-munich-rescheduled.html' title='Eclipse Stammtisch Munich rescheduled to February 22nd'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gSKno1K1saU/TSrmrQqWlgI/AAAAAAAAAIA/NHwXf9n8y3I/s72-c/Picture%2B53.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-4947508876506694363</id><published>2010-12-14T04:00:00.000-08:00</published><updated>2010-12-14T04:05:02.234-08:00</updated><title type='text'>Eclipse Stammtisch Munich, February 7th 2011</title><content type='html'>As Ekke already blogged &lt;a href="http://ekkescorner.wordpress.com/2010/12/10/eclipse-democamps-stammtisch-and-conference/"&gt;here&lt;/a&gt;, we will organize a "Eclipse Stammtisch" in Munich. The first one will be on February 7th in &lt;a href="http://www.unionsbraeu.de/"&gt;Unionsbräu Munich - Haidhausen&lt;/a&gt;. The goal of the "Stammtisch" is to meet informally and share interesting information about Eclipse related topics. You are also welcome, if you do not talk about Eclipse only :-)&lt;br /&gt;If you want to attend the "Stammtisch" or you want to get notified about future "Stammtischs", please help us to organize the event and fill out &lt;a href="https://spreadsheets.google.com/viewform?hl=en&amp;formkey=dE5qNkRhU05HbUlKVVl6eU1IaVd2cXc6MQ#gid=0"&gt;this&lt;/a&gt; form. (Short link: http://bit.ly/gMWv2c)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TQdcO2Yo-_I/AAAAAAAAAHg/zFGnRoUNt6c/s1600/01-CHEERS.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="247" src="http://1.bp.blogspot.com/_gSKno1K1saU/TQdcO2Yo-_I/AAAAAAAAAHg/zFGnRoUNt6c/s320/01-CHEERS.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We will inform you about the details of the event.&lt;br /&gt;&lt;br /&gt;Hope to see you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-4947508876506694363?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/4947508876506694363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/12/eclipse-stammtisch-munich-february-7th.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/4947508876506694363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/4947508876506694363'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/12/eclipse-stammtisch-munich-february-7th.html' title='Eclipse Stammtisch Munich, February 7th 2011'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gSKno1K1saU/TQdcO2Yo-_I/AAAAAAAAAHg/zFGnRoUNt6c/s72-c/01-CHEERS.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-664929408873945454</id><published>2010-12-06T04:29:00.000-08:00</published><updated>2011-03-08T07:31:23.687-08:00</updated><title type='text'>EMFStore and EMF Client Platform Ignite Talks</title><content type='html'>Inspired by the "Ignite-Fever" we have recorded two more Ignite talks about the EMFStore and the EMF Client Platform. These are short versions of the talks we have submitted to EclipseCon 2011 (EMFStore Ignite Talk was updated in March 2011):&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/i5o0eW0nZSc?hl=de&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/YrqEUjAo82U?hl=de&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is a link to the Submission: &lt;a href="https://www.eclipsecon.org/submissions/2011/view_talk.php?id=2011"&gt;https://www.eclipsecon.org/submissions/2011/view_talk.php?id=2011&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0cwRzQU3GJY?hl=de&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0cwRzQU3GJY?hl=de&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is a link to the Submission: &lt;a href="https://www.eclipsecon.org/submissions/2011/view_talk.php?id=2012"&gt;https://www.eclipsecon.org/submissions/2011/view_talk.php?id=2012&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-664929408873945454?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/664929408873945454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/12/emfstore-and-emf-client-platform-ignite.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/664929408873945454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/664929408873945454'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/12/emfstore-and-emf-client-platform-ignite.html' title='EMFStore and EMF Client Platform Ignite Talks'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-3153388225381812458</id><published>2010-11-23T19:22:00.000-08:00</published><updated>2010-11-24T03:38:22.766-08:00</updated><title type='text'>Eclipse Democamp Munich</title><content type='html'>We have changed the room, we have change the room again, but we finally did it. The Eclipse Democamp took place yesterday and was a great success. We were able to include all registrations. The room was packed, but everybody got a seat. Thanks to all the volunteers!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOx8W3mZQZI/AAAAAAAAAGo/DCMUb0ESLjI/s1600/P1010498.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TOx_BaMGzEI/AAAAAAAAAHI/3vbqHL2X6bE/s1600/P1010521.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/_gSKno1K1saU/TOx_BaMGzEI/AAAAAAAAAHI/3vbqHL2X6bE/s320/P1010521.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here is a wrap up of the talks:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOx8iY6mSeI/AAAAAAAAAGs/g4FpWY3lgCg/s1600/P1010501.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_gSKno1K1saU/TOx8iY6mSeI/AAAAAAAAAGs/g4FpWY3lgCg/s320/P1010501.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bernhard demonstrates the Eclipse Prolog &lt;a href="http://www4.informatik.tu-muenchen.de/%7Eschaetz/PETE/PETEFrame.html"&gt;EMF Transformation Engine&lt;/a&gt;. It allows to define model transformations using constraints. The transformation itself explores possible solutions for transformations, which confirm to the defined constraints. He demonstrates this on a example from an automotive application. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOx8s_BGdDI/AAAAAAAAAGw/0WGUE-00jEE/s1600/P1010503.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_gSKno1K1saU/TOx8s_BGdDI/AAAAAAAAAGw/0WGUE-00jEE/s320/P1010503.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Axel solves a very common problem with adpapters. He identified that the registration of many Adapters in EMF cause a performance problem. This is especially true if there are many adapters, which are not interested in an event. &lt;a href="http://www.axel-uhl.de/EMFEventManager.pptx"&gt;He proposes a solution based on hashmaps&lt;/a&gt;. The filter of every event registration is distributed in several hashmaps. This even allows fo and and or terms. The event filter can be defined via a custom API. It would be an interesting problem to transform existing filters written in Java to the more effective format.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOx846OFjnI/AAAAAAAAAG0/qJ9enALqZjU/s1600/P1010508.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_gSKno1K1saU/TOx846OFjnI/AAAAAAAAAG0/qJ9enALqZjU/s320/P1010508.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOx_oDPrdRI/AAAAAAAAAHM/qY8iIM8RiRw/s1600/P1010512.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Maximilian an me presented in a lightning session the &lt;a href="http://emfcp.org/"&gt;EMF Client Platform&lt;/a&gt;, the &lt;a href="http://emfstore.org/"&gt;EMFStore&lt;/a&gt; as well as the JDT Integration of the EMFStore. I do not know what exactly we have talked about :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOx_oDPrdRI/AAAAAAAAAHM/qY8iIM8RiRw/s1600/P1010512.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_gSKno1K1saU/TOx_oDPrdRI/AAAAAAAAAHM/qY8iIM8RiRw/s320/P1010512.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Markus demonstrates advanced feature of Edapt (Cope). The tool allows to automatically migrate model instances, when the meta-model is changed. Therefore, changes on the meta-modell are recorded. In the talk he focused on an advanced feature. It allows to diff two existing versions of a meta-model which are already created without tracking the changes. The tool semi-automatically supports the user to recover the changes, which were done. Also he demonstrates how to define custom constraints.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOx9PzxKtzI/AAAAAAAAAG8/pYMQNZ-oaYI/s1600/P1010517.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_gSKno1K1saU/TOx9PzxKtzI/AAAAAAAAAG8/pYMQNZ-oaYI/s320/P1010517.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kai presented how to use CSS Styling in Eclipse 3.x. As no manager is in the room, he even shows source code :-) He points out the importance, that application have to be styled corresponding to an existing template, provided by a designer. The CSS feature of 4.x can also be used in 3.x. Themes can even be switched during runtime. All required sources and his slides can be soon found at the democamp wiki.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TOx9a4Z-lqI/AAAAAAAAAHA/6nekPqvQiAo/s1600/P1010520.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_gSKno1K1saU/TOx9a4Z-lqI/AAAAAAAAAHA/6nekPqvQiAo/s320/P1010520.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOyAjOF0ljI/AAAAAAAAAHQ/d-iTM-hqdt0/s1600/P1010529.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ekke presented his lessons learned from developing mobile business applications based on Eclipse for Blackberry, IPhone and Android Adroid. Ekke has developed a number of custom widgets to better support UI development on the different platform. However the challenges for these applications are not limited to the client side, there are many challenges for the server side also such as data transmission.&amp;nbsp; A central paradigm in this context is the hollywood principle: don´t call us, we call you.&lt;br /&gt;&lt;br /&gt;Then there was a short break... &lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TOx9tVgGtUI/AAAAAAAAAHE/VZBNdjqp3k0/s1600/P1010522.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/_gSKno1K1saU/TOx9tVgGtUI/AAAAAAAAAHE/VZBNdjqp3k0/s320/P1010522.JPG" width="320" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOyAjOF0ljI/AAAAAAAAAHQ/d-iTM-hqdt0/s1600/P1010529.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_gSKno1K1saU/TOyAjOF0ljI/AAAAAAAAAHQ/d-iTM-hqdt0/s320/P1010529.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After the break, Tom hold his famous and great Eclipse 4 talk. He summarized the news on the e4 project. He first explained that e4 started off on the wrong foot due to false communication. He clarified that it is not the main intention of e4 to move the eclipse platform to the web. Its main intention is a new and much more simple&amp;nbsp; programming model. For this purpose it heavily employs dependency injections. This decouples the implementations from the actual framework classes and eases testing a lot. Also with e4 all information on the workbench are represented in an EMF-based model which is rendered live. This means that all relevant information is concentrated in one place and can be modified there. This allows for more powerful and easier access. For legacy applications e4 offers a compatibility layer and its goal is to support 99.9% of all existing RCP applications for 3.x. Tom pointed out that there are still problems due to missing tool support for debugging because of dependency injection.&lt;br /&gt;Then, there was a short break...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TOx9tVgGtUI/AAAAAAAAAHE/VZBNdjqp3k0/s1600/P1010522.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TOyBosDiSnI/AAAAAAAAAHU/NlAOwsnV-ps/s1600/P1010527.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_gSKno1K1saU/TOyBosDiSnI/AAAAAAAAAHU/NlAOwsnV-ps/s320/P1010527.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TOx9tVgGtUI/AAAAAAAAAHE/VZBNdjqp3k0/s1600/P1010522.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Holger Staudacher has presented the current state of &lt;a href="http://wiki.eclipse.org/RAP"&gt;RAP&lt;/a&gt;. RAP allows to single source web applications and RCP applications. During his talk he was asked about performance of RAP. In response Holger and Benny Muskalla showed how RAP can be even faster than RCP and is still very responsive even for DND and custom widgets that directly draw on a canvas. Also numerous options for theming RAP were demonstrated. For the next release RAP is going to suppot SWT 3.7 and implement non-native scrollbars to better support theming of scrollbars also.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_gSKno1K1saU/TOyDfUqMYjI/AAAAAAAAAHY/TiGpoC4CNnM/s1600/P1010533.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_gSKno1K1saU/TOyDfUqMYjI/AAAAAAAAAHY/TiGpoC4CNnM/s320/P1010533.JPG" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://wiki.eclipse.org/ETrice"&gt;ETrice&lt;/a&gt;, presented by Henrik Rentz-Reichert, is a new Eclipse project which is currently in incubation and still gathering community. Its goal is to implement the ROOM language, a language for object-oriented modelling of event-based real-time systems. Also it aims at providing a tool set for working with this language including X-Text-based and Graphiti-based editors.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TOyEDjYVUPI/AAAAAAAAAHc/CGyaHkCPmfY/s1600/P1010536.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_gSKno1K1saU/TOyEDjYVUPI/AAAAAAAAAHc/CGyaHkCPmfY/s320/P1010536.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;And finally Benny, who works now at &lt;a href="http://www.tasktop.com/"&gt;Tasktop&lt;/a&gt;, adresses typical issues in the every day work of a developer: multi-tasking, searching and interruptions. He shows that developers spend almost half of their time with tasks like that, which is not coding itself. Also 90% of the stuff we see in out workbench is irrelevant for the current taks. Goal: avoid friction and disatraction. Instead: flow and focus. The proposed solution is integrating the tasks of a developer into the Eclipse workbench from various sources. Based on these tasks, the context of the developer can be filtered and also easily switched. Most important thing: we all can sleep longer :-)&lt;br /&gt;Very nice talk, have to try that out.&lt;br /&gt;&lt;br /&gt;The event has shown the high interest in Eclipse in the region. And the goal for the next event is "Fill the Audimax" :-)&lt;br /&gt;Thanks to the Eclipse Foundation and EclipseSource for sponsoring.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOx8W3mZQZI/AAAAAAAAAGo/DCMUb0ESLjI/s1600/P1010498.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_gSKno1K1saU/TOx8W3mZQZI/AAAAAAAAAGo/DCMUb0ESLjI/s320/P1010498.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-3153388225381812458?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/3153388225381812458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/11/we-have-changed-room-we-have-change.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/3153388225381812458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/3153388225381812458'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/11/we-have-changed-room-we-have-change.html' title='Eclipse Democamp Munich'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gSKno1K1saU/TOx_BaMGzEI/AAAAAAAAAHI/3vbqHL2X6bE/s72-c/P1010521.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-579591493036841711</id><published>2010-11-22T13:16:00.000-08:00</published><updated>2010-11-22T13:16:59.773-08:00</updated><title type='text'>How to find the Democamp in Munich</title><content type='html'>The university building is probably one of the most confuing buildings in Munich. To avoid that anybody gets lost, please follow this description to find the &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Munich#Location"&gt;Eclipse Democamp in Munich&lt;/a&gt; tomorrow:&lt;br /&gt;&lt;br /&gt;The &lt;a href="https://portal.mytum.de/campus/roomfinder/roomfinder_viewmap?mapid=12&amp;amp;roomid=1605@0506"&gt;roomfinder&lt;/a&gt; points to a room which is just next to our room (our room is not available in the finder). Our room is 0607ZG.&lt;br /&gt;The easiest way to get to the room coming from U-Bahn (U2) Theresienstraße is walking along Theresienstraße. Then enter the building from the north (entrance Theresienstraße) at the car gate. The gate is just in between the two bridges which cross the street. From this entrance, there will be guiding signs.&lt;br /&gt;&lt;br /&gt;We strongly recommend to use public transport. The neariest public car park is this: [http://www.amaliengarage.de/geschaeft/anfahrt.htm] However this is approximatly a 15 minutes walk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-579591493036841711?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/579591493036841711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/11/how-to-find-democamp-in-munich.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/579591493036841711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/579591493036841711'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/11/how-to-find-democamp-in-munich.html' title='How to find the Democamp in Munich'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-644915472490072064</id><published>2010-11-17T03:08:00.000-08:00</published><updated>2010-11-17T03:08:05.166-08:00</updated><title type='text'>Funniest error message...</title><content type='html'>I do not tell the frameworks name, but I have just received the funniest error message since a long time:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TOO3XuMrTwI/AAAAAAAAAGk/ArLDQIL5lrI/s1600/Picture+36.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="88" src="http://4.bp.blogspot.com/_gSKno1K1saU/TOO3XuMrTwI/AAAAAAAAAGk/ArLDQIL5lrI/s320/Picture+36.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-644915472490072064?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/644915472490072064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/11/funniest-error-message.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/644915472490072064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/644915472490072064'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/11/funniest-error-message.html' title='Funniest error message...'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gSKno1K1saU/TOO3XuMrTwI/AAAAAAAAAGk/ArLDQIL5lrI/s72-c/Picture+36.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-7243433675901475590</id><published>2010-11-16T02:40:00.000-08:00</published><updated>2010-11-16T02:40:13.525-08:00</updated><title type='text'>How to version Ecore files</title><content type='html'>&lt;span style="font-size: large;"&gt;Integrating the EMF Store to the JDT workbench.&lt;/span&gt;&lt;br /&gt;This post summarizes our talk at the Eclipse Summit. Thanks to Adrian for wrapping things up…&lt;br /&gt;Source code is managed by repositories such as CVS, SVN, GIT or others. Many projects store their EMF models, namely Ecore files in the same repository. This involves problems in handling conflicts and merges. The EMFStore is designed to version EMF model instances related objects. As Ecores are also model instances, the EMFStore is also able to version them. &lt;br /&gt;At the Eclipse Summit we presented an integration of the EMFStore into the JDT workspace. The aim of the EMF Store JDT integration is that it gives developers the possibility to manage Ecores not only by the current repository, but in addition by the EMF Store. The integration is unobtrusive in order to keep the development process mainly untouched. This means that the user can use the wellknown actions like commit and update provided by the current used source repository. An EMF Store will lead to an improved conflict handling for EObjects. The EMF Store JDT also deals with the problem that some developers might have the EMF Store JDT installed but others do not. To keep both repositories in synchronization, changes that are done by a user with the EMF Store JDT plug-in will be stored redundant on both repositories.&lt;br /&gt;This post shows various ways how merging issues during collaborative work can be solved and especially how the EMF Store can improve and reduce these merging conflicts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Use case to demonstrate a usual issue&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;As an example for a conflict in an Ecore, we will use the default EMF example “library”. Let’s assume this library project is already shared via SVN and the initial state is checked out by user A and user B. The relevant part for this article is visualized in screenshot 1.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOJda4cGUXI/AAAAAAAAAGA/89GlAGQ6rq4/s1600/screenshot+01+-+library+ecore+example.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_gSKno1K1saU/TOJda4cGUXI/AAAAAAAAAGA/89GlAGQ6rq4/s1600/screenshot+01+-+library+ecore+example.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screenshot 1: Library Ecore example&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Now user A changes the attribute “name” of the class “Writer” from “name” to “author”. User B changes at the same time the upper bound of the same attribute from “1” to “2”.&lt;br /&gt;At first user A commits the changes that were done to the project. This commit can be performed without trouble. Now user B wants to commit but user B cannot directly commit. SVN notifies the user about a conflict. This conflict can be now handled via “Text Compare”, “EMF File Compare” or if applied “EMF Store”.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Text Compare&lt;/span&gt;&lt;br /&gt;This conflict can be inspected with the action “Synchronize with Repository”. The first comparison that can be used is the “Text Compare”. Screenshot 2 illustrates the differences between the local file and the current remote one. For a human being it is obvious that another user changed the value of the attribute name from “name” to “author”. In addition the local file got an additional attribute “upperBound” with the value “2”. &lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TOJddLhbfmI/AAAAAAAAAGE/hiBu1WzB5x8/s1600/screenshot+02+-+text+compare.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="217" src="http://4.bp.blogspot.com/_gSKno1K1saU/TOJddLhbfmI/AAAAAAAAAGE/hiBu1WzB5x8/s320/screenshot+02+-+text+compare.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screenshot 2: Text Compare&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Since a local file is compared with a remote file, changes from the remote file can only be applied to the local one. The local file is shown at the left side and the remote file at the right side. To apply the remote change, that the attribute “name” has been renamed to “author”, the first entry from the list has to be selected. Than the button “Copy Current Change from Right to Left” has to be clicked. &lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TOJddgIzK8I/AAAAAAAAAGI/kXm74I5X2OM/s1600/screenshot+03+-+text+compare+-+change+applied.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="133" src="http://4.bp.blogspot.com/_gSKno1K1saU/TOJddgIzK8I/AAAAAAAAAGI/kXm74I5X2OM/s320/screenshot+03+-+text+compare+-+change+applied.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screenshot 3: Text compare- change applied&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The button suggests that the remote change can be integrated to the local one. Unfortunately, the line where the remote difference has been discovered will be complete copied to the local one and the local line will be also kept. This circumstance is visualized in screenshot 3. This means a lot of post processing for the developer to select which changes should be kept in fact.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;EMF File Compare&lt;/span&gt;&lt;br /&gt;Since in the use case an Ecore file has been changed, an EMF File Compare is also available. The recognized changes are shown in screenshot 4. As the EMF File Compare knows about the structure of an Ecore file, better merging can be achieved. The upper part shows again the “Structural differences” view. This view shows exactly what has been changed. The user may even read that the attribute “name” has been remotely changed to “author”. The second change also displays that the upper bound has been locally changed from “1” to “2”.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TOJddyVI4lI/AAAAAAAAAGM/B_iSt9pRaaQ/s1600/screenshot+04+-+emf+file+compare.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="178" src="http://1.bp.blogspot.com/_gSKno1K1saU/TOJddyVI4lI/AAAAAAAAAGM/B_iSt9pRaaQ/s320/screenshot+04+-+emf+file+compare.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screenshot 4: EMF File Compare&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;As previously mentioned, this method compares a local file against a remote file. So changes can be only adapted to the local one. To get the change that the attribute name has been renamed to author, the respective change has to be selected and the button “Copy Current Change from Right to Left” has to be pressed. The result of this action is that the renaming will be locally performed and the author attribute has now the cardinality with the upper bound 2. At this point all merging has been successfully done and the commit can be finally performed. The preliminary conclusion is that the EMF File Compare is much more powerful than a simple diff is. But there is still room for improvement.&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;EMF Store JDT (1)&lt;/span&gt;&lt;br /&gt;As the EMF Store JDT is an addition to already shared projects, the current used source repository can be used further on. To use the EMF Store for Ecore files, it is necessary to connect a local file to an EMF Store. To reach this, right click on the desired file and select from the context menu “Push to EMF Store”. A dialog appears where an EMF Store has to be selected. This dialog is displayed in screenshot 5. &lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TOJdedMiz7I/AAAAAAAAAGQ/LUntwhKwYh4/s1600/screenshot+05+-+emf+store+project+selection.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_gSKno1K1saU/TOJdedMiz7I/AAAAAAAAAGQ/LUntwhKwYh4/s1600/screenshot+05+-+emf+store+project+selection.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screenshot 5: EMFStore Project Selection&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Right after a project has been selected the origin file has got an additional decoration that indicates that the file is under EMF Store control. This state can be seen in screenshot 6 for the file library.ecore. The version in the brackets is the EMF Store project version. This is currently 0, due to the fact, that the project where the library.ecore is stored, has not been committed yet. The following number 10 stands for the SVN revision of the file. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TOJdegCknvI/AAAAAAAAAGU/9KagGaAKcUA/s1600/screenshot+06+-+ecore+file+under+emf+store+control.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_gSKno1K1saU/TOJdegCknvI/AAAAAAAAAGU/9KagGaAKcUA/s1600/screenshot+06+-+ecore+file+under+emf+store+control.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screenshot 6: Ecore File under EMFStore Version Control&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;A commit of the library project will effect that other users will see as well that the file has been put under EMF Store control. Let assume user A has made this commit and user B updates the project. Now user A and B make the same changes as in the initial use case described. User A performs a commit as usual. First, the SVN commit dialog will be displayed and the user can enter a commit message. The user can choose which files should be committed. After pressing on OK the SVN commit has been confirmed and the commit dialog of the EMF Store will be displayed. Here the user can verify the changes in detail that will be committed to the EMF Store. The EMF Store commit dialog can be viewed on screenshot 7. User A confirms this by clicking on OK. &lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TOJdey4Lf4I/AAAAAAAAAGY/T4L-ojNWatY/s1600/screenshot+07+-+user+a+-+emf+store+commit+dialog.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="308" src="http://3.bp.blogspot.com/_gSKno1K1saU/TOJdey4Lf4I/AAAAAAAAAGY/T4L-ojNWatY/s320/screenshot+07+-+user+a+-+emf+store+commit+dialog.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screenshot 7: User A - EMFStore Commit Dialog&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Now user B does a commit, too. Again, first, the SVN commit dialog will be shown and then the EMF Store commit dialog. But before the EMF Store commit dialog will be shown a message is shown to the user that the local EMF Store project is outdated as visualized in Screenshot 8. User B confirms the question with “Yes”. &lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TOJdfUmh23I/AAAAAAAAAGc/8qmOQbqSB1k/s1600/screenshot+08+-+emf+store+project+is+outdated.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="93" src="http://1.bp.blogspot.com/_gSKno1K1saU/TOJdfUmh23I/AAAAAAAAAGc/8qmOQbqSB1k/s320/screenshot+08+-+emf+store+project+is+outdated.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screenshot 8: EMFStore Project is outdated&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp;All update changes are shown again in a dialog and the user can inspect if they should be applied to the local project or not. So here the user can recognize that the attribute name has been changed to author. After that the actual commit will be performed. The dialog will look very similar to screenshot 7, but the change operation will be that the “upper bound” of the attribute “author” has been set from “1” to “2” and the commit can be applied safely.&lt;br /&gt;This means the user has not had to accomplish with merging issues. They could be solved autonomously without bothering the user. The user only had to update the local outdated version.&lt;br /&gt;Someone may ask what has been committed to the SVN repository. Internally the EMF Store performs first the commit, it solves the merging conflicts and then the content will be also written back to the local file. This means the conflict is solved for SVN, so SVN committed the modified and conflict free version. So users who do not have the “EMF Store JDT” plug-in installed, will also get the correct version as they will update their project. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;EMF Store JDT (2)&lt;/span&gt;&lt;br /&gt;As previously seen, the EMF Store can merge situations where currently established tools get into trouble. Obviously, there are situations, where a merge cannot be solved without asking the user which changes should be kept. Such a situation can be caused by the following procedure: User A and user B have the same version checked out. If they do a change on the same object e.g. the same attribute, then it is not possible to decide independently which change should be kept. Let assume user A changes the attribute “name” of the class “Writer” as in the initial use case from “name” to “author”. User B changes also the name attribute from “name” to “writer”. The first commit can be safely applied but for the second one, the user gets a dialog, where the conflict will be shown. Such a conflict is depicted in screenshot 9.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_gSKno1K1saU/TOJdfjJuW4I/AAAAAAAAAGg/Hi-eRj3I-O4/s1600/screenshot+09+-+emf+store+merge+wizard.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="301" src="http://1.bp.blogspot.com/_gSKno1K1saU/TOJdfjJuW4I/AAAAAAAAAGg/Hi-eRj3I-O4/s320/screenshot+09+-+emf+store+merge+wizard.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screenshot 9: EMFStore Merge Wizard&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;As visualized in screenshot 9 the user can read the conflict description:&lt;br /&gt;“You have changed the name attribute of EAttribute “writer : EString” to writer. This attribute was changed to author in the repository.”&lt;br /&gt;To solve this issue the user gets the option to easily decide how to solve it. Either one can click on “Keep My Change” or on “Keep Their Change” or an issue can be created.&lt;br /&gt;If multiple merging conflicts exist, several of these sections will be shown. After all merging issues have been decided how to be solved, the decision will be applied and the commit can be finally executed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;The EMF Store JDT gives developers for a specialized kind of development artifacts a powerful tool how to avoid conflicts when working in collaboration with other developers. The only obstacle that has to be taken is that in addition to the already used source repository an EMF Store has to be selected when starting to add an EMF related file under EMF Store control. Since this is needed only once and only for one developer, the configuration overhead is minimal and the whole team can avail the benefits of the EMF Store. The JDT integration is currently under development. We are testing the integration with SVN and are further working on an integration with GIT. We plan to provide a release at the beginning of 2011.&amp;nbsp; If you are interested in the functionality, feel free to contact us or leave a comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-7243433675901475590?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/7243433675901475590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/11/how-to-version-ecore-files.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/7243433675901475590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/7243433675901475590'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/11/how-to-version-ecore-files.html' title='How to version Ecore files'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gSKno1K1saU/TOJda4cGUXI/AAAAAAAAAGA/89GlAGQ6rq4/s72-c/screenshot+01+-+library+ecore+example.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-5633113962163558607</id><published>2010-11-10T09:55:00.000-08:00</published><updated>2010-11-10T09:55:25.914-08:00</updated><title type='text'>More seats for the Eclipse Demo Camp Munich (again :-)</title><content type='html'>Due to overwhelming demand, we have extended the available seats for the &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Munich"&gt;November Demo Camp in Munich&lt;/a&gt; AGAIN :-)&lt;br /&gt;and this time to to 100. Therefore we were able to include all people from the waiting list. There are a few seats left.&lt;br /&gt;Please enter your name &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Munich"&gt;here&lt;/a&gt; to make sure you are in. Please also fill in &lt;a href="https://spreadsheets.google.com/viewform?hl=en&amp;amp;formkey=dFVyY2F1MkpWWVRpSktpc3dBZnJlRHc6MQ"&gt;this form&lt;/a&gt;, if you are attending.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-5633113962163558607?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/5633113962163558607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/11/more-seats-for-eclipse-demo-camp-munich.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/5633113962163558607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/5633113962163558607'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/11/more-seats-for-eclipse-demo-camp-munich.html' title='More seats for the Eclipse Demo Camp Munich (again :-)'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-1612681215223112532</id><published>2010-11-06T08:53:00.000-07:00</published><updated>2010-11-06T08:53:47.240-07:00</updated><title type='text'>Please fill in this form, if you have registered for the Democamp in Munich</title><content type='html'>We are amazed by the interest in Munich's Democamp. &lt;br /&gt;To handle the large number of attendees we kindly ask you to fill in  &lt;a href="https://spreadsheets.google.com/viewform?hl=en&amp;amp;formkey=dFVyY2F1MkpWWVRpSktpc3dBZnJlRHc6MQ#gid=0"&gt;this form&lt;/a&gt;, if you have registered for the &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Munich"&gt;Eclipse Democamp in munich&lt;/a&gt;.&lt;br /&gt;If you have not registered yet, make sure to add your name to the &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Munich"&gt;waiting list&lt;/a&gt;. We are currently arranging for a bigger room, so hopefully we can include most of the people from the waiting list as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-1612681215223112532?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/1612681215223112532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/11/please-fill-in-this-form-if-you-have.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/1612681215223112532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/1612681215223112532'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/11/please-fill-in-this-form-if-you-have.html' title='Please fill in this form, if you have registered for the Democamp in Munich'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-8548578394225959558</id><published>2010-10-20T01:15:00.000-07:00</published><updated>2010-10-20T01:23:39.250-07:00</updated><title type='text'>Plugin does not start</title><content type='html'>This probably more a hint for Eclipse beginners:&lt;br /&gt;Sometimes plugins do not start in your runtime environment, although they are included in your Run/Debug Configuration. Very often, the reason are missing required Bundles or violated constraints. To identify these issues, try to "validate Plug-ins" in the Debug or Run configuration (Menu "Run"):&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gSKno1K1saU/TL6lrd6CUWI/AAAAAAAAAF4/JVQHRJYdRwI/s1600/Picture+4+2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 247px;" src="http://4.bp.blogspot.com/_gSKno1K1saU/TL6lrd6CUWI/AAAAAAAAAF4/JVQHRJYdRwI/s320/Picture+4+2.png" alt="" id="BLOGGER_PHOTO_ID_5530039558638555490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This will show you a list of identitfied problems, which are often very easy to fix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-8548578394225959558?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/8548578394225959558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/10/plugin-does-not-start.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/8548578394225959558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/8548578394225959558'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/10/plugin-does-not-start.html' title='Plugin does not start'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gSKno1K1saU/TL6lrd6CUWI/AAAAAAAAAF4/JVQHRJYdRwI/s72-c/Picture+4+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-1939560668644036244</id><published>2010-10-19T02:31:00.000-07:00</published><updated>2010-10-19T02:34:14.576-07:00</updated><title type='text'>More seats for the Eclipse Demo Camp Munich</title><content type='html'>Due to overwhelming demand, we have extended the available seats for the &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Munich"&gt;November Demo Camp in Munich&lt;/a&gt; to 70. Please enter your name &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Munich"&gt;here&lt;/a&gt; to make sure you are in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-1939560668644036244?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/1939560668644036244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/10/more-seats-for-eclipse-demo-camp-munich.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/1939560668644036244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/1939560668644036244'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/10/more-seats-for-eclipse-demo-camp-munich.html' title='More seats for the Eclipse Demo Camp Munich'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-2637743363964598477</id><published>2010-10-12T00:56:00.000-07:00</published><updated>2010-10-12T01:04:21.359-07:00</updated><title type='text'>Eclipse Demo Camp Munich</title><content type='html'>We are happy to host a November Demo Camp in Munich this year on 23.11.2010, 17:30&lt;br /&gt;For more information, please visit &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Munich"&gt;here&lt;/a&gt;&lt;br /&gt;Please enter your name on the wiki if you plan to attend or give a talk.&lt;br /&gt;See you there!&lt;br /&gt;Jonas and Maximilian&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-2637743363964598477?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/2637743363964598477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/10/eclipse-demo-camp-munich.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/2637743363964598477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/2637743363964598477'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/10/eclipse-demo-camp-munich.html' title='Eclipse Demo Camp Munich'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-4239938340211482641</id><published>2010-10-08T17:39:00.000-07:00</published><updated>2010-10-08T18:00:34.813-07:00</updated><title type='text'>EMF Client Platform goes RAP ...</title><content type='html'>... EMF Transaction and EMF Validation as well!&lt;br /&gt;&lt;br /&gt;We have shown a prototype of a EMF Client Platform RAP version &lt;a href="http://unicase.blogspot.com/2010/04/emf-client-platform-on-rap.html"&gt;here&lt;/a&gt;. The main remaining issue was although EMF has been offering a RAP version for quite a while, EMF Transaction and EMF Validation didn't (see &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309927"&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=309927&lt;/a&gt; and &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309926"&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=309926&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;We have had a loo at this issue in detail by checking out both projects. By reorganizing the dependencies as you usually do to use RAP, we could make both frameworks work on RAP:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TK-9OKyRDeI/AAAAAAAAAFE/rn8gUqmV6og/s1600/RCP1.jpeg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_gSKno1K1saU/TK-9OKyRDeI/AAAAAAAAAFE/rn8gUqmV6og/s320/RCP1.jpeg" alt="" id="BLOGGER_PHOTO_ID_5525843318917893602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;RCP Version&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gSKno1K1saU/TK-9rkK_dTI/AAAAAAAAAFM/0_SfZPhh-_8/s1600/RAP1.jpeg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_gSKno1K1saU/TK-9rkK_dTI/AAAAAAAAAFM/0_SfZPhh-_8/s320/RAP1.jpeg" alt="" id="BLOGGER_PHOTO_ID_5525843823948690738" border="0" /&gt;&lt;/a&gt;RAP Version&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;It is amaizing that almost all of the existing features work out-of-the-box. We would be happy to contribute those changes to EMF Transaction and EMF Validation.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-4239938340211482641?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/4239938340211482641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/10/emf-client-platform-goes-rap.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/4239938340211482641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/4239938340211482641'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/10/emf-client-platform-goes-rap.html' title='EMF Client Platform goes RAP ...'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gSKno1K1saU/TK-9OKyRDeI/AAAAAAAAAFE/rn8gUqmV6og/s72-c/RCP1.jpeg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-7230680109389976565</id><published>2010-09-30T03:10:00.000-07:00</published><updated>2010-10-01T00:19:38.649-07:00</updated><title type='text'>Announcement: Tutorials on Models</title><content type='html'>We are happy to announce three tutorials taking place on &lt;a href="http://models2010.ifi.uio.no/cfp.shtml"&gt;Models 2010&lt;/a&gt; in Osla next week:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name="Koegel"&gt;&lt;span class="room"&gt;&lt;/span&gt; &lt;/a&gt;&lt;a href="http://models2010.ifi.uio.no/tutorials.shtml#Koegel"&gt;&lt;i&gt;Storing and Versioning EMF Models with        EMFStore&lt;/i&gt;&lt;/a&gt; (quarter day 11:00‒12:30), Tuesday, October 5th&lt;br /&gt;&lt;/h4&gt;&lt;h4&gt;&lt;a name="Helming"&gt;&lt;span class="room"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://models2010.ifi.uio.no/tutorials.shtml#Helming"&gt;&lt;i&gt;Building Model-Based Applications with the EMF Client      Platform&lt;/i&gt;&lt;/a&gt; (quarter day 14:00‒15:30), Tuesday, October 5th&lt;br /&gt;&lt;/h4&gt;&lt;h4&gt;&lt;a name="Narayan"&gt;&lt;span class="room"&gt;&lt;/span&gt; &lt;/a&gt;&lt;a href="http://models2010.ifi.uio.no/tutorials.shtml#Narayan"&gt;&lt;i&gt;UNICASE ―      Tooling for Software Engineering Models&lt;/i&gt;&lt;/a&gt; (quarter day 14:00‒15:30), Monday, October 4th&lt;br /&gt;&lt;/h4&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-7230680109389976565?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/7230680109389976565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/09/announcement-tutorials-on-models.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/7230680109389976565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/7230680109389976565'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/09/announcement-tutorials-on-models.html' title='Announcement: Tutorials on Models'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-1777205956002358061</id><published>2010-09-01T05:55:00.000-07:00</published><updated>2010-09-01T05:56:16.234-07:00</updated><title type='text'>EMFStore Project approved</title><content type='html'>We are happy to announce that the EMFStore project has been accepted as an Eclipse Project.&lt;br /&gt;www.emfstore.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-1777205956002358061?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/1777205956002358061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/09/emfstore-project-approved.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/1777205956002358061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/1777205956002358061'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/09/emfstore-project-approved.html' title='EMFStore Project approved'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-1441051046497363332</id><published>2010-09-01T05:54:00.000-07:00</published><updated>2010-09-01T05:55:35.341-07:00</updated><title type='text'>EMF Client Platform project approved</title><content type='html'>We are happy to announce that the EMF Client Platform project has been accepted as an Eclipse Project.&lt;br /&gt;www.emfcp.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-1441051046497363332?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/1441051046497363332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/09/emf-client-platform-project-approved.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/1441051046497363332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/1441051046497363332'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/09/emf-client-platform-project-approved.html' title='EMF Client Platform project approved'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-8903061409320141085</id><published>2010-06-14T15:18:00.003-07:00</published><updated>2010-06-14T15:18:55.937-07:00</updated><title type='text'>The hottest Hot Key</title><content type='html'>I was convinced that crtl+3 is the hottest hot key: quick access to everything!&lt;br /&gt;Although it is quite slow :-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-8903061409320141085?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/8903061409320141085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/06/hottest-hot-key_14.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/8903061409320141085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/8903061409320141085'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/06/hottest-hot-key_14.html' title='The hottest Hot Key'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-4763081036995654583</id><published>2010-06-04T01:03:00.000-07:00</published><updated>2010-06-04T01:05:22.240-07:00</updated><title type='text'>The hottest Hot Key</title><content type='html'>The "hottest" Hot Key is CRTL+SHIFT+L, showing all available Hot Keys ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-4763081036995654583?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/4763081036995654583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/06/hottest-hot-key.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/4763081036995654583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/4763081036995654583'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/06/hottest-hot-key.html' title='The hottest Hot Key'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-7289942578419043998</id><published>2010-04-27T02:38:00.000-07:00</published><updated>2010-06-15T08:33:28.649-07:00</updated><title type='text'>No more: "I have not installed this plugin"</title><content type='html'>Announced at EclipseCon the beta test for Yoxos 5 is currently running. I havent used Yoxos so far, but the feature set is very promising for me. Furthermore it is free to use for open source or academic projects.&lt;br /&gt;My use case is the following: I have many fulctuating developers in three different project settings. All of them need a running copy of the corresponding Eclipse IDE including plugins like subversion, checkstyle settings and of course the source projects. Especially for new an inexperienced developers it sometimes takes several hours until they have a working set-up. Additionally I wan to ensure everybody is working against the same configuration and plugin versions. NIGHTMARE!!&lt;br /&gt;Yoxos allows to configure this centrally. Developers only get a .yoxos file referencing the online repository. On the first start of this file, all necessary plugins and configurations will be deployed automatically. And now the clue: If I change the configuration, e.g. updating a plugin to a new version, all developers get this update automatically. I think this can be very usefull for open source projects to lower the entry barrier for new developers.&lt;br /&gt;Basically you can drag and drop every plugin you need into a configuration or use predefined profiles such as "Eclipse Modeling Tools":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gSKno1K1saU/S9az-ATEOMI/AAAAAAAAADo/aJyvXUnPPFE/s1600/Bild+42.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 117px;" src="http://1.bp.blogspot.com/_gSKno1K1saU/S9az-ATEOMI/AAAAAAAAADo/aJyvXUnPPFE/s320/Bild+42.png" alt="" id="BLOGGER_PHOTO_ID_5464753075673905346" border="0" /&gt;&lt;/a&gt;Additionally you can configure seettings for the workspace such as Eclipse settings, source projects or Checkstyle:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_gSKno1K1saU/S9a0ZNTyWZI/AAAAAAAAADw/hLGTH_LO5es/s1600/Bild+43.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 216px;" src="http://3.bp.blogspot.com/_gSKno1K1saU/S9a0ZNTyWZI/AAAAAAAAADw/hLGTH_LO5es/s320/Bild+43.png" alt="" id="BLOGGER_PHOTO_ID_5464753543023057298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please note, that this is still the beta release of Yoxos, so please report any issues to yoxos5beta@eclipsesource.com&lt;br /&gt;Also have a look at &lt;a href="http://feedback.eclipsesource.com/"&gt;http://feedback.eclipsesource.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-7289942578419043998?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/7289942578419043998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/04/no-more-i-have-not-installed-this.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/7289942578419043998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/7289942578419043998'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/04/no-more-i-have-not-installed-this.html' title='No more: &quot;I have not installed this plugin&quot;'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gSKno1K1saU/S9az-ATEOMI/AAAAAAAAADo/aJyvXUnPPFE/s72-c/Bild+42.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-5407161359369591570</id><published>2010-04-21T02:16:00.000-07:00</published><updated>2010-04-22T05:29:34.507-07:00</updated><title type='text'>EMF Client Platform on RAP</title><content type='html'>Impressed by the RAP tutorial I wanted to finally try it out myself: Putting the EMF Client Platform (ECP) on RAP. The reason I did not try before was the missing support for EMF, which is available in Helios. Now EMF and EMF.edit is available for RAP. In this Post I describe how I transfered ECP to RAP, which issues occurred and how they can be solved (most of them). We are currently working on solving those to have a RAP version of ECP hopefully with the Helios release. If you already know how to install RAP and switch dependencies, please skip the first part. See the following screenshot of the RAP prototype showing an instance of the ECP navigator:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gSKno1K1saU/S88chHAbjNI/AAAAAAAAADI/6jo3FS3BaxU/s1600/rap+screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 48px;" src="http://1.bp.blogspot.com/_gSKno1K1saU/S88chHAbjNI/AAAAAAAAADI/6jo3FS3BaxU/s400/rap+screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5462616228165815506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Preparation&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install Development Build Helios:  &lt;a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/helios/M6/eclipse-modeling-helios-M6-incubation-macosx-cocoa.tar.gz" id="yhwj" title="Download for Mac OS"&gt;Download for Mac OS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Install RAP 1.3 Tooling via Update Site: &lt;a href="http://download.eclipse.org/rt/rap/1.3/tooling" id="xx3y" title="http://download.eclipse.org/rt/rap/1.3/tooling"&gt;http://download.eclipse.org/rt/rap/1.3/tooling&lt;/a&gt;&lt;/li&gt;&lt;li&gt;After restarting Eclipse a new welcome screen appears, select "Rich Ajax Platform (RAP)" → "Install Target Platform", check the installation destination and installt the target platform. Make sure you set it as the default target.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:130%;"&gt;Assembling the Target Platform&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Select "Preferences" → "Plugin-Development" → "Target Platform" → "Rich Ajax Platform" → "Add" →  "Current Target"&lt;/li&gt;&lt;li&gt;On the "Locations" tab select "Add" → "Software site" and add: &lt;a href="http://download.eclipse.org/modeling/emf/emf/updates/2.6" id="m8ej" title="http://download.eclipse.org/modeling/emf/emf/updates/2.6"&gt;http://download.eclipse.org/modeling/emf/emf/updates/2.6&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Install the RAP plugins (listed below, also see screenshot):&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;Important: Make sure you uncheck "Include required software" &lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;EMF RAP Common UI&lt;/li&gt;&lt;li&gt;EMF RAP Edit UI&lt;/li&gt;&lt;li&gt;EMF RAP - Eclipse Modeling Framework SDK for the Rich Ajax Platform&lt;/li&gt;&lt;li&gt;EMF RAP - Eclipse Modeling Framework Runtime for the Rich Ajax Platform&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Select your newly assembled platform → "Apply" → "OK"&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div id="uxey" style="text-align: center;"&gt;&lt;img src="http://docs.google.com/File?id=dch6kjbd_40dvnzgggw_b" style="height: 570.24px; width: 648px;" /&gt;&lt;br /&gt;&lt;h2 style="text-align: left; font-weight: normal;"&gt;&lt;span style="font-size:100%;"&gt;Regenerate Model&lt;/span&gt;&lt;/h2&gt;&lt;div id="lhd5" style="text-align: left;"&gt;The first thing to do, is to re-generate your model. To re-generate a model, go to the project, that contains the model, select the subfolder "&lt;span style="font-family:courier new;"&gt;model&lt;/span&gt;" a double-click the file with the "&lt;span style="font-family:courier new;"&gt;genmodel&lt;/span&gt;" ending. An editor opens that show the root node of the model. Double-click this node and the properties editor open. Look for a section called "Editor". When you've found it, set the value of the attribute of "Rich Ajax Platform" to "true" (again, see screenshot for the attribute in question).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="iuzg" style="text-align: center;"&gt;&lt;img src="http://docs.google.com/File?id=dch6kjbd_42vz8tvcgq_b" style="height: 391.837px; width: 648px;" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Now save the model and go back to the root node and right-click it. Select "Generate Model Code" and "Generate Edit Code".&lt;br /&gt;&lt;h2 style="text-align: left; font-weight: normal;"&gt;&lt;span style="font-size:100%;"&gt;Re-organize dependencies&lt;/span&gt;&lt;/h2&gt;Now I have to re-organized the following dependecies to add the RAP replacements. This can either be done by adding both versions (non-RAP and RAP) and set them to optional, or by imporing the packages.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;non-RAP:&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;&lt;ul&gt;&lt;li&gt;org.eclipse.ui&lt;/li&gt;&lt;li&gt;org.eclipse.ui.forms&lt;/li&gt;&lt;li&gt;org.eclipse.ui.ide&lt;/li&gt;&lt;li&gt;org.eclipse.jface.databinding&lt;/li&gt;&lt;li&gt;org.ecilpse.emf.edit.ui&lt;/li&gt;&lt;li&gt;org.eclispe.emf.transaciton.ui&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;RAP:&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;org.eclipse.rap.ui&lt;/li&gt;&lt;li&gt;org.eclipse.emf.rap.edit.ui&lt;/li&gt;&lt;li&gt;org.eclipse.rap.ui.views&lt;/li&gt;&lt;li&gt;org.eclipse.rap.ui.forms&lt;/li&gt;&lt;li&gt;org.eclipse.rap.jface&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;We won't deal with the remaining compilation errors for now (see the "Issues" list).&lt;br /&gt;&lt;/div&gt;&lt;h2 style="font-weight: normal;"&gt;&lt;span style="font-size:100%;"&gt;Create a RAP project &lt;/span&gt;&lt;/h2&gt;Follow these steps to create a RAP project with the navigator view enabled&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a new plugin-project, call it &lt;span style="font-family:courier new;"&gt;org.unicase.rap.ui.example&lt;/span&gt; or something similiar.&lt;/li&gt;&lt;li&gt;Set the execution environment to be J2SE-1.5 and select "Yes" when asked for "Would you like to create a rich client application". &lt;/li&gt;&lt;li&gt;Replace dependency &lt;span style="font-family:courier new;"&gt;org.eclipse.ui&lt;/span&gt; with &lt;span style="font-family:courier new;"&gt;org.eclipse.rap.ui&lt;/span&gt;, add dependency &lt;span style="font-family:courier new;"&gt;org.unicase.ui.navigator&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Go to "Extensions" tab, select "Add" and add a new view via extension point "&lt;span style="font-family:courier new;"&gt;org.eclipse.ui.views&lt;/span&gt;".&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;ol&gt;&lt;ol&gt;&lt;li&gt;Right click new extensions, select "New" → "View"&lt;/li&gt;&lt;li&gt;Select new view entry and set properities to be:&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;id:   &lt;span style="font-family:courier new;"&gt; org.unicase.ui.navigator.viewer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;name: Navigator&lt;/li&gt;&lt;li&gt;class: TreeView (via "Browse" button)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Save the plugin.xml&lt;/li&gt;&lt;li&gt;Switch to "Perspective.java" and add the following line in method &lt;span style="font-family:courier new;"&gt;createInitialLayout(IPageLayout layout)&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;layout.addView("org.unicase.ui.navigator.viewer",&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                IPageLayout.TOP,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                1.0f, IPageLayout.ID_EDITOR_AREA);&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Go to "Application.java" and delete the content of it. Change the parent to &lt;span style="font-family:courier new;"&gt;IEntryPoint&lt;/span&gt;.&lt;br /&gt;The method that needs be implemented by &lt;span style="font-family:courier new;"&gt;Application&lt;/span&gt; looks like:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    public int createUI() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Display display = PlatformUI.createDisplay();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        PlatformUI.createAndRunWorkbench( display,new ApplicationWorkbenchAdvisor());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Go again to "Extensions" tab, remove "&lt;span style="font-family:courier new;"&gt;org.eclipse.core.runtime.applications&lt;/span&gt;" and add "&lt;span style="font-family:courier new;"&gt;org.eclipse.rap.ui.entrypoint&lt;/span&gt;". Set the class attribute to your Application.&lt;/li&gt;&lt;/ol&gt;Additionally note, that if you use IApplication, you can do it like this (copied from the &lt;a href="http://eclipse.org/rap/noteworthy/news_13M5.php"&gt;RAP N&amp;amp;N&lt;/a&gt;):&lt;br /&gt;With support for &lt;code&gt;IApplication&lt;/code&gt;s, you're now able to start        a RAP application the same way as it is possible in RCP. This means        that you don't need to provide an &lt;code&gt;IEntryPoint&lt;/code&gt;        implementation.        &lt;pre&gt;&lt;extension id="myapp" point="org.eclipse.core.runtime.applications"&gt;&lt;br /&gt;&lt;application visible="true"&gt;&lt;br /&gt;&lt;run class="org.eclipse.rap.demo.DemoWorkbench"&gt;&lt;/run&gt;&lt;br /&gt;&lt;/application&gt;&lt;br /&gt;&lt;/extension&gt;&lt;br /&gt; &lt;/pre&gt;        As stated in this example, the entrypoint parameter to access the        application is equal to the id of the extension. This means the        application is available at &lt;i&gt;host:port/rap?startup=myapp&lt;/i&gt;.        In case you want to refer to your application in the branding extension        point (e.g. as default entrypoint), you have to use the fully-qualified        name of the extension (e.g. org.eclipse.rap.demobundle.myapp).                &lt;br /&gt;&lt;br /&gt;&lt;h2 style="text-align: left; font-weight: normal;"&gt;&lt;span style="font-size:100%;"&gt; Running ECP&lt;/span&gt;&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;Right-click your project, e.g. &lt;span style="font-family:courier new;"&gt;org.unicase.rap.ui.example&lt;/span&gt; and select "Debug As" → "Debug configurations". Create a new RAP configuration. &lt;/li&gt;&lt;li&gt;Set the entry point to the one you've created (&lt;span style="font-family:courier new;"&gt;Application&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;Select the "Bundles" tab and click the button "Deselect all", click &lt;span style="font-family:courier new;"&gt;org.unicase.rap.ui.example&lt;/span&gt; and click "Add Required bundles". This will ensure that all necessary plugins are in place.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Also make sure that bundles "&lt;span style="font-family:courier new;"&gt;org.mortbary.jetty.server&lt;/span&gt;" and "&lt;span style="font-family:courier new;"&gt;org.eclipse.equinox.http.server&lt;/span&gt;" are also set as active. This is the actual web server you need to run RAP applications. Click again "Add Required Bundles" to be sure that the dependencies of these plugins are also satisfied.&lt;/li&gt;&lt;li&gt;"Debug".&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:180%;"&gt;Open Issues&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The first and most important blocker is that &lt;span style="font-family:courier new;"&gt;org.eclispse.emf.transaction{.ui}&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;org.eclipse.emf.validation&lt;/span&gt; do not offer support for RAP. For ECP this is kind of blocker. I will file a bug report for those porjects and see what we can do about this. I have filed a bug report for &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309926"&gt;transactions&lt;/a&gt; and &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=309927"&gt;validation&lt;/a&gt; to discuss this.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use of &lt;span style="font-family:courier new;"&gt;IDialogConstants&lt;/span&gt; changed (see &lt;a href="http://dev.eclipse.org/mhonarc/newsLists/news.eclipse.technology.rap/msg04217.html"&gt;http://dev.eclipse.org/mhonarc/newsLists/news.eclipse.technology.rap/msg04217.html&lt;/a&gt;)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Solution: Use &lt;span style="font-family:courier new;"&gt;IDialogConstants.get()&lt;/span&gt; instead of &lt;span style="font-family:courier new;"&gt;IDialogConstants&lt;/span&gt; directly, please see this bug&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;org.eclipse.swt.program.Program&lt;/span&gt; not available&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Solution: We only use it for opening URLs. This can be better done with &lt;span style="font-family:courier new;"&gt;IDialogIWorkbenchBrowserSupport, &lt;/span&gt;see &lt;a href="http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/browser/IWorkbenchBrowserSupport.html"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;Composite#addPaintListener&lt;/span&gt; not available&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Solution: Small Refactoring of two lines in ECP&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;Tooltip&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;DefaultToolTip&lt;/span&gt; not available&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Solution: Use standard ToolTips&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;org.eclipse.ui.bindings&lt;/span&gt; not available&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Solution: Ignore keybindings in RAP version&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;StyledText&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;StyleRange&lt;/span&gt; not available: &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=277346"&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=277346&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Solution: We have plans to replace that widget with a text field&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;No &lt;span style="font-family:courier new;"&gt;SWT.TRANSPARENT&lt;/span&gt; style bit&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Solution: Composite#setBackgroundMode(SWT.INHERIT_FORCE)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;No &lt;span style="font-family:courier new;"&gt;FileDialog&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Solution: New Dialogs for RAP see &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=300472"&gt;https://bugs.eclipse.org/bugs/show_bug.cgi?id=300472&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;I am really convinced that it is possible to single source RCP applications with RAP. I recommend everybody, who have plans to single-source his application to just try it out. The target platform management and the available tutorials make this quite simple. The only thing not solvable in a couple of hours is the missing support for RAP of emf.tansactions and emf.validation. I hope it is possible to find a solution here.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-5407161359369591570?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/5407161359369591570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/04/emf-client-platform-on-rap.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/5407161359369591570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/5407161359369591570'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/04/emf-client-platform-on-rap.html' title='EMF Client Platform on RAP'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gSKno1K1saU/S88chHAbjNI/AAAAAAAAADI/6jo3FS3BaxU/s72-c/rap+screenshot.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-3217280927501675698</id><published>2010-03-25T13:05:00.000-07:00</published><updated>2010-03-25T13:25:33.423-07:00</updated><title type='text'>Do we need yet another model repository? (BOF Wrap up)</title><content type='html'>We had a pretty intense discussion Tuesday in the BOF "Do we need yet another model repository?". The good news is that we ended up drinking beer together with Eike at Hyatts bar :-)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_gSKno1K1saU/S6vEd57-yDI/AAAAAAAAAB4/DzL9AgKe_MM/s1600/01-CHEERS.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 154px; height: 200px;" src="http://3.bp.blogspot.com/_gSKno1K1saU/S6vEd57-yDI/AAAAAAAAAB4/DzL9AgKe_MM/s200/01-CHEERS.jpg" alt="" id="BLOGGER_PHOTO_ID_5452667791909767218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is pretty hard to warp up the discussions, because there were several topics and of course different opinions. A very important statement of the community was the need for transparency of the differences between EMFStore and CDO. As this was not covered so much in the BOF, I would also like to wrap that up from the viewpoint of EMFStore.&lt;br /&gt;But first a few of the discussion topics:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Do we even need a model repository?&lt;/span&gt;&lt;br /&gt;Surprisingly there was a discussion if we even need a model repository instead of just storing serialized EMF Objects in an SVN or CVS and using EMFCompare. Some people pointed out, that this solution does not scale very well to bigger models and involves frequent merging. Another alternative is to use XText, which provides a human readable format for EMF. This allows using SVN or CVS, but is usually focused on development models.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Slim vs. Feature Rich?&lt;/span&gt;&lt;br /&gt;There was a quite philosophical discussion if a framework generally should provide as many features as possible or if it is desirable to have a framework, which exactly fulfils the requirements you need. The completely differing opinions were: First, a framework, which provides many features is desirable as it allows the user to choose what he will use now and leave room for what he might need in the future. Second, every feature, which the user does not use, is an “anti-feature” and potentially creates unnecessary complexity.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gSKno1K1saU/S6vFCNfYAqI/AAAAAAAAACA/FPZChfsuVYs/s1600/slim_fat.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 188px;" src="http://2.bp.blogspot.com/_gSKno1K1saU/S6vFCNfYAqI/AAAAAAAAACA/FPZChfsuVYs/s200/slim_fat.jpg" alt="" id="BLOGGER_PHOTO_ID_5452668415633785506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Developer Model vs. Application Model&lt;/span&gt;&lt;br /&gt;There has been a discussion whether one or the other repository fits better to models used for development or to model used in an end-client application. Both repositories are currently used in both ways. More important are the underlying requirements, e.g. size of the model. In the end a developer model is an end-user tool for a developer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Will another model repository confuse the community?&lt;/span&gt;&lt;br /&gt;Definitely yes, if there is no transparency of the different features, focus and use cases when to apply one or the other. Although concurrent projects with a different focus provide user the opportunity to chose.&lt;br /&gt;&lt;br /&gt;For this reason I would like to start with a description of the focus of EMFStore and the differences to CDO from my viewpoint. Of course even on a feature or technical level, this remains subjective.&lt;br /&gt;EMFStore is focused on slim, but full vertical slice of a model repository application. While it provides everything from views down to storing models, it is focused on a selected number of features. To complete the vertical feature span, it also includes views to browse the repository and the local model workspace, to browse a model and its history and to configure access control on the server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Offline&lt;/span&gt;&lt;br /&gt;EMFStore is focused towards always-offline operation. It does only connect to the repository to commit or update a model, very similar to SVN or CVS. It allows obtaining a copy of the model from the repository in a certain version without locally cloning the whole repository. All changes applied to that model are then recorded locally and transferred after a commit to the central server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Merging&lt;/span&gt;&lt;br /&gt;To cope with conflicts that might occur after an extended offline period, EMFStore provides API and views for interactive merging. To deliver conflict detection and interactive merging EMFStore does not require diffing but directly operates on the recorded model changes, that are referred to as operations. Operations can also contain multiple model changes, which are handled as transactions during the merge. This allows for example to express model refactorings as an atomic unit for conflict detection and merging.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gSKno1K1saU/S6vGHHLb0EI/AAAAAAAAACI/l_jYombk0YA/s1600/merging.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 97px;" src="http://1.bp.blogspot.com/_gSKno1K1saU/S6vGHHLb0EI/AAAAAAAAACI/l_jYombk0YA/s200/merging.png" alt="" id="BLOGGER_PHOTO_ID_5452669599350509634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Model Migration&lt;/span&gt;&lt;br /&gt;EMFStore provides integrated support for model migration tailored to the EMFStore persistency mechanism. That means whenever you change the meta-model of your application (i.e. the ecore) EMFStore provides support to migrate the existing instances of your model. The migration includes model in the client workspace and the server repository. Many operations such as adding attributes, references or classes are handled automatically. For other operations such as extracting classes in the model or moving attributes, migration code can be generated. Finally even for migrations, which are domain specific and not automatically resolvable there is framework support to write conversion code. This is based on the EDAPT framework.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Scale&lt;/span&gt;&lt;br /&gt;EMFStore is focused on managing default EMF models without any additional modifications for scalability. This includes the limits of size of the model to fit into memory, which is basically the limit given by EMF. Cedric has mentioned as a guideline that this is about 1 million elements per gigabyte, but obviously this depends on the size of the single element.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Model Team Framework&lt;/span&gt;&lt;br /&gt;The goal of the Model Team Framework is to provide a common API for model repositories. If both repositories implement this interface this would provide interoperability between both solutions.&lt;br /&gt;&lt;br /&gt;As framework providers we will continue to communicate the differences between both framework to achieve transparency for framework users. Also we are happy to answer any request about this topic (helming@in.tum.de). See also &lt;a href="http://www.emfstore.org"&gt;emfstore.org&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-3217280927501675698?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/3217280927501675698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/03/do-we-need-yet-another-model-repository.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/3217280927501675698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/3217280927501675698'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/03/do-we-need-yet-another-model-repository.html' title='Do we need yet another model repository? (BOF Wrap up)'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gSKno1K1saU/S6vEd57-yDI/AAAAAAAAAB4/DzL9AgKe_MM/s72-c/01-CHEERS.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-1710059616965866905</id><published>2010-03-23T10:28:00.000-07:00</published><updated>2010-03-23T12:45:47.392-07:00</updated><title type='text'>BOF-Session on EclipseCon: Do we need yet another model repository? EMFStore and CDO?</title><content type='html'>&lt;span style="font-size:130%;"&gt;BOF-Session on EclipseCon: Do we need yet another model repository? EMFStore and CDO?&lt;/span&gt;&lt;br /&gt;We received a lot of questions about the differences between EMFStore and CDO and possible collaboration between both projects. I would like to announce that there will be a BOF 2day 19:15 about this topic at EclipseCon and invite you to join.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-1710059616965866905?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/1710059616965866905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/03/bof-session-on-eclipsecon-do-we-need.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/1710059616965866905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/1710059616965866905'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/03/bof-session-on-eclipsecon-do-we-need.html' title='BOF-Session on EclipseCon: Do we need yet another model repository? EMFStore and CDO?'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-4261122302075614327</id><published>2010-03-14T16:06:00.000-07:00</published><updated>2010-04-07T08:46:44.658-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMFStore EMF Repository'/><title type='text'>EMFStore in three steps</title><content type='html'>&lt;!--[endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:trackformatting/&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:drawinggridhorizontalspacing&gt;18 pt&lt;/w:DrawingGridHorizontalSpacing&gt;   &lt;w:drawinggridverticalspacing&gt;18 pt&lt;/w:DrawingGridVerticalSpacing&gt;   &lt;w:displayhorizontaldrawinggridevery&gt;0&lt;/w:DisplayHorizontalDrawingGridEvery&gt;   &lt;w:displayverticaldrawinggridevery&gt;0&lt;/w:DisplayVerticalDrawingGridEvery&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:dontautofitconstrainedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="276"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if !supportAnnotations]--&gt; &lt;style id="dynCom" type="text/css"&gt;&lt;!-- --&gt;&lt;/style&gt; &lt;script language="JavaScript"&gt;&lt;!-- function msoCommentShow(anchor_id, com_id) {  if(msoBrowserCheck())    {   c = document.all(com_id);   if (null != c)    {    a = document.all(anchor_id);    var cw = c.offsetWidth;    var ch = c.offsetHeight;    var aw = a.offsetWidth;    var ah = a.offsetHeight;    var x  = a.offsetLeft;    var y  = a.offsetTop;    var el = a;    while (el.tagName != "BODY")      {     el = el.offsetParent;     x = x + el.offsetLeft;     y = y + el.offsetTop;     }    var bw = document.body.clientWidth;    var bh = document.body.clientHeight;    var bsl = document.body.scrollLeft;    var bst = document.body.scrollTop;    if (x + cw + ah / 2 &gt; bw + bsl &amp;&amp; x + aw - ah / 2 - cw &gt;= bsl )      { c.style.left = x + aw - ah / 2 - cw; }    else      { c.style.left = x + ah / 2; }    if (y + ch + ah / 2 &gt; bh + bst &amp;&amp; y + ah / 2 - ch &gt;= bst )      { c.style.top = y + ah / 2 - ch; }    else      { c.style.top = y + ah / 2; }    c.style.visibility = "visible"; } } } function msoCommentHide(com_id)  {  if(msoBrowserCheck())   {   c = document.all(com_id);   if (null != c)   {   c.style.visibility = "hidden";   c.style.left = -1000;   c.style.top = -1000;   } }  } function msoBrowserCheck() {  ms = navigator.appVersion.indexOf("MSIE");  vers = navigator.appVersion.substring(ms + 5, ms + 6);  ie4 = (ms &gt; 0) &amp;&amp; (parseInt(vers) &gt;= 4);  return ie4; } if (msoBrowserCheck()) {  document.styleSheets.dynCom.addRule(".msocomanchor","background: infobackground");  document.styleSheets.dynCom.addRule(".msocomoff","display: none");  document.styleSheets.dynCom.addRule(".msocomtxt","visibility: hidden");  document.styleSheets.dynCom.addRule(".msocomtxt","position: absolute");  document.styleSheets.dynCom.addRule(".msocomtxt","top: -1000");  document.styleSheets.dynCom.addRule(".msocomtxt","left: -1000");  document.styleSheets.dynCom.addRule(".msocomtxt","width: 33%");  document.styleSheets.dynCom.addRule(".msocomtxt","background: infobackground");  document.styleSheets.dynCom.addRule(".msocomtxt","color: infotext");  document.styleSheets.dynCom.addRule(".msocomtxt","border-top: 1pt solid threedlightshadow");  document.styleSheets.dynCom.addRule(".msocomtxt","border-right: 2pt solid threedshadow");  document.styleSheets.dynCom.addRule(".msocomtxt","border-bottom: 2pt solid threedshadow");  document.styleSheets.dynCom.addRule(".msocomtxt","border-left: 1pt solid threedlightshadow");  document.styleSheets.dynCom.addRule(".msocomtxt","padding: 3pt 3pt 3pt 3pt"); } // --&gt;&lt;/script&gt; &lt;!--[endif]--&gt; &lt;style&gt; &lt;!--  /* Font Definitions */ @font-face  {font-family:Cambria;  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:auto;  mso-font-pitch:variable;  mso-font-signature:3 0 0 0 1 0;}  /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin-top:0cm;  margin-right:0cm;  margin-bottom:10.0pt;  margin-left:0cm;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:"Times New Roman";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Cambria;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;  mso-ansi-language:EN-US;  mso-fareast-language:EN-US;} p.MsoCommentText, li.MsoCommentText, div.MsoCommentText  {mso-style-noshow:yes;  mso-style-link:"Kommentartext Zeichen";  margin-top:0cm;  margin-right:0cm;  margin-bottom:10.0pt;  margin-left:0cm;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:"Times New Roman";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Cambria;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;  mso-ansi-language:EN-US;  mso-fareast-language:EN-US;} span.MsoCommentReference  {mso-style-noshow:yes;  mso-ansi-font-size:9.0pt;  mso-bidi-font-size:9.0pt;} span.KommentartextZeichen  {mso-style-name:"Kommentartext Zeichen";  mso-style-noshow:yes;  mso-style-locked:yes;  mso-style-link:Kommentartext;  mso-ansi-language:EN-US;} @page Section1  {size:595.0pt 842.0pt;  margin:70.85pt 70.85pt 2.0cm 70.85pt;  mso-header-margin:35.4pt;  mso-footer-margin:35.4pt;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt; &lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */ table.MsoNormalTable  {mso-style-name:"Normale Tabelle";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:"Times New Roman";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="font-size:130%;"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size:130%;"&gt;EMFStore in three Steps&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;As a first component of the UNICASE project I would like to introduce the EMFStore (&lt;a href="http://www.emfstore.org/"&gt;www.emfstore.org&lt;/a&gt;). The EMFStore is a model repository for instances of EMF models - very similar to SVN for source code. It supports features like commit, update and merging, but in contrast to SVN it operates on a model level and not on a textual level. The EMFStore can be used whenever a model instance of an application (e.g. data of a library) must be shared and collaboratively modified by different clients. The EMFStore is released under the EPL, we will propose it as a Eclipse project very soon.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I would like to show how to get started with the EMFStore as well as the basic features. On our homepage we promise that the EMFStore will run executing 3 steps. Since I don’t believe my colleagues, I will try this out myself. I use a fresh Eclipse Galileo Modeling Edition. I start with &lt;a href="http://www.youtube.com/watch?v=LZX7kaArN1s&amp;amp;feature=player_embedded"&gt;this&lt;/a&gt; &lt;/span&gt;&lt;span class="MsoCommentReference"&gt;&lt;span lang="EN-US"  style="font-size:9pt;"&gt;&lt;!--[if !supportAnnotations]--&gt;&lt;a class="msocomanchor" id="_anchor_1" onmouseover="msoCommentShow('_anchor_1','_com_1')" onmouseout="msoCommentHide('_com_1')" href="http://www.blogger.com/post-create.g?blogID=5895345394045038548#_msocom_1" language="JavaScript" name="_msoanchor_1"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;video tutorial to install the latest EMFStore feature from this update site: &lt;/span&gt;&lt;a href="http://unicase.googlecode.com/svn/updatesite/emfstoreNightly" rel="nofollow"&gt;http://unicase.googlecode.com/svn/updatesite/emfstoreNightly&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gSKno1K1saU/S51syEYyvoI/AAAAAAAAAAU/M4lU_ACK4Wg/s1600-h/Bild+13.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 47px;" src="http://2.bp.blogspot.com/_gSKno1K1saU/S51syEYyvoI/AAAAAAAAAAU/M4lU_ACK4Wg/s320/Bild+13.png" alt="" id="BLOGGER_PHOTO_ID_5448630731615157890" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;img src="file:///Users/helming/Desktop/Bild%2013.png" alt="" /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The update site also includes the COPE feature providing support for model migration. It is now hosted as a Eclipse project &lt;a href="http://www.eclipse.org/proposals/edapt/"&gt;EDAPT&lt;/a&gt;.&lt;/span&gt;&lt;span class="MsoCommentReference"&gt;&lt;span lang="EN-US"  style="font-size:9pt;"&gt;&lt;a class="msocomanchor" id="_anchor_2" onmouseover="msoCommentShow('_anchor_2','_com_2')" onmouseout="msoCommentHide('_com_2')" href="http://www.blogger.com/post-create.g?blogID=5895345394045038548#_msocom_2" language="JavaScript" name="_msoanchor_2"&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;span style="display: none;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I create a run configuration for the emfstore server product and run it:&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gSKno1K1saU/S51tic91sKI/AAAAAAAAAAc/lJzDQIt8_tY/s1600-h/Bild+14.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 57px;" src="http://2.bp.blogspot.com/_gSKno1K1saU/S51tic91sKI/AAAAAAAAAAc/lJzDQIt8_tY/s320/Bild+14.png" alt="" id="BLOGGER_PHOTO_ID_5448631562846711970" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;After successfully installing the EMFStore I shut it down again and continue with the next step to prepare my model. I followed &lt;a href="http://www.youtube.com/watch?v=XgXm6LbBaKI&amp;amp;feature=player_embedded"&gt;this&lt;/a&gt; video tutorial. I have chosen to also use the library example from &lt;a href="http://help.eclipse.org/galileo/topic/org.eclipse.emf.doc/tutorials/rosepkg/library.mdl"&gt;http://help.eclipse.org/galileo/topic/org.eclipse.emf.doc/tutorials/rosepkg/library.mdl&lt;/a&gt;. After downloading it, I create a new EMF project based on this model. Now I have to extend a common base class for any element I want to version with the EMFStore. This class is ModelElement from the metamodel. We should think about offering a dialog to add this base class to many elements in one step. Also I have to set “containment proxies” to true in the genModel. Now I could create my model and model.edit plugins.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gSKno1K1saU/S51t9CqGZiI/AAAAAAAAAAk/U8iSBtNX-dA/s1600-h/Bild+16.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 318px; height: 248px;" src="http://2.bp.blogspot.com/_gSKno1K1saU/S51t9CqGZiI/AAAAAAAAAAk/U8iSBtNX-dA/s320/Bild+16.png" alt="" id="BLOGGER_PHOTO_ID_5448632019641067042" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Next step is to start the EMFStore including my new model described in &lt;a href="http://www.youtube.com/watch?v=VnIuM1l2fyU&amp;amp;feature=player_embedded"&gt;this&lt;/a&gt; video tutorial&lt;/span&gt;&lt;span class="MsoCommentReference"&gt;&lt;span lang="EN-US"  style="font-size:9pt;"&gt;&lt;!--[if !supportAnnotations]--&gt;&lt;a class="msocomanchor" id="_anchor_3" onmouseover="msoCommentShow('_anchor_3','_com_3')" onmouseout="msoCommentHide('_com_3')" href="http://www.blogger.com/post-create.g?blogID=5895345394045038548#_msocom_3" language="JavaScript" name="_msoanchor_3"&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;span style="display: none;"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;. Very easy, very boring as I can only see some lines on the console. Therefore I continue to start the EMFStore client UI to create some model instances versioned on my EMFStore. First I start the EMFStore client as a plain RCP Application. I create a new EMFStore project using the EMFStore Browser&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gSKno1K1saU/S51uYimM9yI/AAAAAAAAAAs/M2BZkkIDjlM/s1600-h/Bild+15.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 58px;" src="http://2.bp.blogspot.com/_gSKno1K1saU/S51uYimM9yI/AAAAAAAAAAs/M2BZkkIDjlM/s320/Bild+15.png" alt="" id="BLOGGER_PHOTO_ID_5448632492071122722" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;After checking out the project, I can directly browse it using the reflective navigator and editor. This allows me to create new elements of the library model, change their attributes and link them. We will describe those reflective tooling for EMF more in detail soon, but I will focus on the EMFStore.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gSKno1K1saU/S51ufg-MH7I/AAAAAAAAAA0/m37pN0zIVFw/s1600-h/Bild+19.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 217px;" src="http://2.bp.blogspot.com/_gSKno1K1saU/S51ufg-MH7I/AAAAAAAAAA0/m37pN0zIVFw/s320/Bild+19.png" alt="" id="BLOGGER_PHOTO_ID_5448632611893944242" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Now I commit my changes by right clicking on the project. The commit dialog allows to have a detailed review of the changes I did in the project and adding a commit message.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_gSKno1K1saU/S51umgoOt1I/AAAAAAAAAA8/ucw5K4LS0P0/s1600-h/Bild+18.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 262px;" src="http://4.bp.blogspot.com/_gSKno1K1saU/S51umgoOt1I/AAAAAAAAAA8/ucw5K4LS0P0/s320/Bild+18.png" alt="" id="BLOGGER_PHOTO_ID_5448632732060923730" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I check out a second instance of the project to simulate a distributed project. I do some changes in the second checkout and commit the changes (changed the name of the author). They can now be applied to the first checkout by clicking on update (right-click on the project)&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_gSKno1K1saU/S51utvudEtI/AAAAAAAAABE/X_krViiqukM/s1600-h/Bild+20.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 206px;" src="http://3.bp.blogspot.com/_gSKno1K1saU/S51utvudEtI/AAAAAAAAABE/X_krViiqukM/s320/Bild+20.png" alt="" id="BLOGGER_PHOTO_ID_5448632856372646610" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Now as a last step I want to provoke a merge, i.e. conflicting changes on both checkouts. I change the name of the writer in the first checkout and commit. Then I change it in the second instance before updating and try to commit as well. The system will ask me to update first and the present a model-based merge dialog.&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="Bild_x0020_10" spid="_x0000_i1025" type="#_x0000_t75" alt="::::::::Desktop:Bild 21.png" style="'width:300pt;height:181pt;visibility:visible;mso-wrap-style:square'"&gt;  &lt;v:imagedata src="file://localhost/Users/helming/Library/Caches/TemporaryItems/msoclip/0/clip_image015.png" title="Bild 21.png"&gt;  &lt;v:textbox style="'mso-rotate-with-shape:t'/"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gSKno1K1saU/S51u2EQB-HI/AAAAAAAAABM/mriBgzBbhf8/s1600-h/Bild+21.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 194px;" src="http://1.bp.blogspot.com/_gSKno1K1saU/S51u2EQB-HI/AAAAAAAAABM/mriBgzBbhf8/s320/Bild+21.png" alt="" id="BLOGGER_PHOTO_ID_5448632999321139314" border="0" /&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Please note that the provided UI is meant as an initial tooling for the EMFStore. If you build applications based on the EMFStore you can customize and replace the UI with your own application. We will shortly describe how to do this.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;If you are interested in news about the EMFStore, follow us on &lt;a href="https://twitter.com/EMFStore"&gt;Twitter&lt;/a&gt; or contact us (&lt;a href="mailto:helming@in.tum.de"&gt;helming@in.tum.de&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Also meet us at the BOF 2morrow evening 19:15 at EclipseCon and at our Poster on Wednesday Poster Reception.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div style=""&gt;&lt;!--[if !supportAnnotations]--&gt;  &lt;hr class="msocomoff" align="left"  width="33%" style="font-size:78%;"&gt;  &lt;!--[endif]--&gt;  &lt;div style=""&gt;&lt;!--[if !supportAnnotations]--&gt;  &lt;div id="_com_1" class="msocomtxt" language="JavaScript" onmouseover="msoCommentShow('_anchor_1','_com_1')" onmouseout="msoCommentHide('_com_1')"&gt;&lt;!--[endif]--&gt;&lt;span style=""&gt;&lt;!--[if !supportAnnotations]--&gt;&lt;a name="_msocom_1"&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;/span&gt;  &lt;/div&gt;&lt;/div&gt;&lt;div style=""&gt;&lt;div id="_com_3" class="msocomtxt" language="JavaScript" onmouseover="msoCommentShow('_anchor_3','_com_3')" onmouseout="msoCommentHide('_com_3')"&gt;&lt;!--[if !supportAnnotations]--&gt;&lt;/div&gt;  &lt;!--[endif]--&gt;&lt;/div&gt;  &lt;/div&gt;  &lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-4261122302075614327?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/4261122302075614327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/03/emfstore-in-three-steps.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/4261122302075614327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/4261122302075614327'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/03/emfstore-in-three-steps.html' title='EMFStore in three steps'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gSKno1K1saU/S51syEYyvoI/AAAAAAAAAAU/M4lU_ACK4Wg/s72-c/Bild+13.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5895345394045038548.post-4213502711756869991</id><published>2010-03-12T07:17:00.001-08:00</published><updated>2010-03-14T15:24:36.366-07:00</updated><title type='text'>UNICASE goes blogging</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);"&gt;Hello,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;this is the new blog of the UNICASE project. We will blogg about the Eclipse frameworks of the UNICASE project as well as about experiences with other frameworks and tools used by the UNICASE project. In this post we will introduce the different sub-projects of the UNICASE projects. Two of them will soon be proposed as Eclipse projects.&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;The UNICASE project consist of three Eclipse based frameworks:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="wikiheader" style="margin-bottom: 1em; color: rgb(0, 0, 0);"&gt;    &lt;span style="font-family: arial;font-size:130%;" &gt;EMFStore&lt;/span&gt;         &lt;div style="font-style: italic; margin-top: 3px;"&gt;A model repository for EMF&lt;/div&gt;    &lt;/div&gt;  &lt;p style="color: rgb(0, 0, 0);"&gt;Before you even start reading: Often a video says more than a thousand words, so if you prefer to let us explain to you what EMFStore is, watch &lt;a href="http://code.google.com/p/unicase/wiki/EMFStoreDemo"&gt;this video&lt;/a&gt;. &lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;EMFStore is a repository for EMF-based models. It started as part of a product (&lt;a href="http://code.google.com/p/unicase/wiki/UNICASEClient"&gt;UNICASE client&lt;/a&gt;) but we have developed a framework from the initial code contribution. In contrast to existing solutions it supports an offline mode and is geared towards collaborative editing of the stored models. Therefore support for conflict detection and for merging models is built into the repository including versioning. EMFStore also ships with a set of client plugins containing a facade API for the server and more importantly views for commiting changes to, updating changes from the repository as well as merging models in a local workspace. In contrast to existing solutions the merging process is fully guided by a wizard and only shows conflicting changes to the model. In addition EMFStore provides access control on the repository and persistency for the models and their meta data on client and server side. EMFStore also supports changing the Ecore model of the stored EMF model instances by generating model migrators. This is a useful feature if your application evolves and requires changing your data model for example.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;Features: &lt;/p&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;Model Repository (Server): &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Versioning &lt;/li&gt;&lt;li&gt;Persistency &lt;/li&gt;&lt;li&gt;Access Control &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Model Migration&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;Model Workspace (Client): &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Model Change Tracking &lt;/li&gt;&lt;li&gt;Commit and Update Models &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Offline Mode&lt;/strong&gt; (No server connection neccessary)    &lt;/li&gt;&lt;li&gt;Extensible Model Conflict Detection and Merging &lt;/li&gt;&lt;li&gt;Model Migration &lt;/li&gt;&lt;li&gt;Automatic client-side Persistence of Models &lt;/li&gt;&lt;li&gt;Views: &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Commit/Update and Merge Views &lt;/li&gt;&lt;li&gt;Repository Browser to view all repositories and their models &lt;/li&gt;&lt;li&gt;History Browser to view the history of a model &lt;/li&gt;&lt;li&gt;Navigator showing local models &lt;/li&gt;&lt;li&gt;Reflective Editor showing model elements &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;To get started with EMFStore please goto the &lt;a href="http://code.google.com/p/unicase/wiki/EMFStoreNavigation"&gt;EMFStore Wiki&lt;/a&gt;. &lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;EMFStore will be proposed as a Eclipse project in the next week.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:130%;"&gt;EMF Client Platform (ECP)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;The EMF Client Platform is a framework to build EMF-based client applications. The goal is to provide a one-click application based on a given EMF model. Besides the EMF model no additional components have to be developed or generated. Therefore ECP provides a standard solution including the most common features needed for EMF-based client applications. This application can then be customized step by step. This can be done by extending ECP or replacing single components completly. &lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;Features: &lt;/p&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;Tree-based Navigator &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Strutured creation dialog  &lt;/li&gt;&lt;li&gt;Dynamic creation actions &lt;/li&gt;&lt;li&gt;EMF-based Drag and Drop Adapters &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Editor for single EObjects &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Reflective, no generation &lt;/li&gt;&lt;li&gt;Standard widgets for attributes and references &lt;/li&gt;&lt;li&gt;Single widgets replaceable &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;EMF-based Validation View &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Affected EObject can be opened &lt;/li&gt;&lt;li&gt;Violations displayed in Editor &lt;/li&gt;&lt;li&gt;Model-based filters &lt;/li&gt;&lt;li&gt;Model-based refactorings &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Workspace  &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Transparent Persistency &lt;/li&gt;&lt;li&gt;Versioning &lt;/li&gt;&lt;li&gt;Model Repository ((&lt;a href="http://code.google.com/p/unicase/wiki/EMFStore"&gt;EMFStore&lt;/a&gt;)) &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Model-based GMF adapter to use GMF without files &lt;/li&gt;&lt;li&gt;Model Migration &lt;/li&gt;&lt;/ul&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;ECP will be proposed as a Eclipse project in the next week. We are currently working on tutorials and a first release. Please &lt;a href="mailto:helming@in.tum.de" rel="nofollow"&gt;contact us&lt;/a&gt;, if you are interested in trying out ECP&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:130%;"&gt;UNICASE client&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial; color: rgb(0, 0, 0);"&gt;UNICASE is a CASE-Tool integrating models from the different development acitivities, such as requirements, use cases, UML models, schedules, bug and feature models into a unified model. This unified model is highly traceable by design. The UNICASE client allows to view and edit these models in a textual, tabular and diagram visualization. The models are stored and versioned on a server comparable to svn but customized for models. Client and server are easily extensible to support integrating new models into the unified model. UNICASE is based on the Eclipse platform including EMF and GMF. It can also be used as a framework to build modeling applications that reuse its repository and visualization capabilities.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gSKno1K1saU/S5phtQyY2QI/AAAAAAAAAAM/O7wRoVVChQg/s1600-h/Unicase+client.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 225px;" src="http://2.bp.blogspot.com/_gSKno1K1saU/S5phtQyY2QI/AAAAAAAAAAM/O7wRoVVChQg/s320/Unicase+client.png" alt="" id="BLOGGER_PHOTO_ID_5447774129486354690" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;End User Features (click the link to see a screenshot of the feature):&lt;/strong&gt; &lt;/p&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;Requirements Modeling &lt;/li&gt;&lt;li&gt;UML Modeling: Use Case, Class, State, Component, Communication Models &lt;/li&gt;&lt;li&gt;Integrated Project Management: &lt;/li&gt;&lt;ul&gt;&lt;li&gt; Task and Bug Tracking &lt;/li&gt;&lt;li&gt; Work Breakdown Structure &lt;/li&gt;&lt;li&gt; Iteration Planning &lt;/li&gt;&lt;li&gt; Project Status Visualization &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Full-blown Vertical and Horizontal Traceability&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;You can find more information on UNICASE on our &lt;a href="http://teambruegge.informatik.tu-muenchen.de/groups/unicase/" rel="nofollow"&gt;UNICASE website&lt;/a&gt;.&lt;/strong&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5895345394045038548-4213502711756869991?l=unicase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unicase.blogspot.com/feeds/4213502711756869991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://unicase.blogspot.com/2010/03/unicase-goes-blogging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/4213502711756869991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5895345394045038548/posts/default/4213502711756869991'/><link rel='alternate' type='text/html' href='http://unicase.blogspot.com/2010/03/unicase-goes-blogging.html' title='UNICASE goes blogging'/><author><name>UNICASE</name><uri>http://www.blogger.com/profile/18196528196170889175</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://2.bp.blogspot.com/_gSKno1K1saU/S7G5fVlZtrI/AAAAAAAAACY/56y_gF6R62c/S220/Jonas_20080731_13.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gSKno1K1saU/S5phtQyY2QI/AAAAAAAAAAM/O7wRoVVChQg/s72-c/Unicase+client.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
