<!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  
    <title>Sirius | What's New in Sirius 4.1</title>
  
    <meta name="description" content="The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects, including runtimes, tools and frameworks">
    <link rel="shortcut icon" type="image/png" href="/sirius/images/favicon_sirius.ico"/>
  
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
    <link rel="stylesheet" href="/sirius/common_assets/css/styles.css">
    <link rel="stylesheet" href="/sirius/common_assets/css/animate.css">
    <link rel="stylesheet" href="/sirius/common_assets/css/media.css"/>
    <link rel="stylesheet" href="/sirius/assets/css/main.css"/>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <script src="/sirius/common_assets/js/magnific-popup.video.js"></script>
    <script src="/sirius/common_assets/js/magnific-popup.min.js"></script>

    <!-- Eclipse Foundation Google Tag Manager -->
	<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
        new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
        j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
        'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
        })(window,document,'script','dataLayer','GTM-5WLCZXC');</script>
        <!-- End Google Tag Manager -->  
        
        <!-- Eclipse Foundation cookie consent: -->
        <link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
        <script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>  
        
        <script src= "/sirius/assets/js/ga.js"></script>

    <!-- Old version of font awesome for some icons -->
    <script src="https://use.fontawesome.com/b51f77a16a.js"></script>    
    <!-- Bootstrap JS -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
    
    <script>
        jQuery(function($){ $(".hasTooltip").tooltip({"html": true,"container": "body"}); });
    </script>
    <!-- Triggers tooltips -->
    <script>
        jQuery(document).ready(function() {
            jQuery('.hasTooltip').tooltip();
        });
    </script>
</head>
  
  <body>

    <!-- Navigation -->
<header id="top-bar" class="navbar navbar-expand-xl fixed-top">
    <div class="container">
        <div id="super-menu" class="d-flex">
            <nav class="main-menu ml-auto">
                <ul class="nav navbar-nav">
                    <li class="current"><a href=".">Sirius Desktop</a></li>
                    <li><a class="txt_purple" href="sirius-web">Sirius Web</a></li>
                </ul>
            </nav>
        </div>
        <div class="d-flex" id="main-menu-items">
            <a class="navbar-brand" href="/sirius">
                <img src="/sirius/common_assets/images/logos/logo_sirius.png" alt="Logo Sirius">
            </a>
            <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive"
                aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
                <i class="fa fa-bars"></i>
            </button> 
            <nav class="navbar-collapse collapse" id="navbarResponsive">
                <div class="main-menu ml-auto">
                    <ul class="nav navbar-nav">
                        <li>
                            <a href="overview">Overview</a>
                        </li>
                        <li>
                            <a href="gallery">Gallery</a>
                        </li>
                        <li>
                            <a href="getstarted">Get Started</a>
                        </li>
                        <li>
                            <a href="features">Features</a>
                        </li>
                        <li>
                            <a href="resource-center">Resources</a>
                        </li>
                        <li>
                            <a href="support">Support</a>
                        </li>
                        <li id="dwnld">
                            <a href="download">Download</a>
                        </li>
                    </ul>
                </div>
            </nav>
        </div>
    </div>
</header>
<section id="sirius-web-bar" class="bg_purple">
    <div class="container">
        <div class="row">
            <div class="col-md-1 col-xs-12 my-auto">
                <p class="cloud txt_white text-center"><i class="fas fa-cloud" aria-hidden="true"></i></p>
            </div>
            <div class="col-md-8 col-xs-12">
                <h5 class="txt_white">Web version is now available!</h5>
                <p class="descr txt_white">What you like in Sirius Desktop, in a modern cloud-based stack.</p>
            </div>                                
            <div class="col-md-3 col-xs-12 my-auto">
                <p><a class="text-uppercase txt_yellow" href="sirius-web" target="">Discover Sirius Web <i class="fas fa-arrow-alt-circle-right" aria-hidden="true"></i></a></p>
            </div>
        </div>
    </div>
</section>
    
    <section class="bg_lightest_grey text-center intro">
    <div class="container">
            <h2 class="title wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".2s">What's New in Sirius 4.1</h2> 
<h3 class="wow fadeInDown" data-wow-duration="500ms" data-wow-delay=".3s"></h3>
<p class="wow fadeInDown" data-wow-duration="500ms" data-w ow-delay=".4s"></p>



    </div>
</section>

<section>
    <div class="container">

		<p>What is making Eclipse Sirius so unique? That’s its capability
			to easily create custom graphical modeling tools adapted to each
			specific need.</p>
		<p>With Sirius 4.1, custom Properties Views come out of the experimental box and get promoted as an official production-ready feature. 
		As usual, this new release also comes with several UX improvements on diagrams.</p>
		<br /> <br />

		<div class="section">
			<h2><a name="properties_view"></a>Properties Views</h2>
			<p>Arrived with Sirius 4.0 as an experimental feature, this integrated way to define your own properties views is now mature and 
			ready for an usage in production.</p>
			<p>First, we have improved the default properties views which are provided by Eclipse Sirius, even if you didn’t specify any custom view. 
			After tests on many different metamodels, this new version correctly supports the main cases, so that now you have nice properties 
			views for free on your existing modeling tools built with Sirius.</p>
			<p>Most of all, these default properties views can be inlined into the specification of your modeling tool, so that you can modify them.</p>
			<p>In addition, new features have been added for the customization.</p> 
			<p>The most notable one is the new Reference widget which allows the user to see the relations of an object in a pre-built list coming with five buttons to manage the elements (browse, new, delete, up and down).</p>

			<p>
				<img class="shadow" src="../images/whatsnew4_1/reference-properties-view.png" alt="Sirius - Properties View" border="0" />
			</p>

			<p>As you can see, now it is possible to hide the legacy tabs (the Default and Semantic tabs automatically 
			generated by EMF).</p>

		
		<div class="section">
			<h2>
				<a name="customization"></a>UX Improvements
			</h2>
			<p>Like each version of Sirius, 4.1 brings many graphical improvements that simplify the user’s experience.</p>

			<h3><b>Better recognize edge’s label</b></h3>
			<p>When the user selects an edge, the labels are automatically selected and a link is shown between them. 
			On large diagrams containing many elements, this new feature (available by selecting an option in the preferences) allows 
			the user to more easily identify which label corresponds to which link.</p>

			<p>
				<img class="shadow" src="../images/whatsnew4_1/edge-label.gif"
					alt="Sirius - Link between an edge and its labels" border="0" />
			</p>
			<p>&nbsp;</p>

			<h3><b>Quicker style application</b></h3>
			<p>The existing copy/paste layout option has been extended to allow the user to also paste the graphical style of the 
			selected objects.</p>

			<p>Now, with Sirius 4.1, after the user has copied the format of diagram elements, he can choose to paste only the layout 
			(size and position, as it was already possible with Sirius 4.0), to paste only the graphical style (font, color, …) or to paste both. 
			Note that this option only applies to the same semantic elements.
			</p>

			<p>
				<img class="shadow" src="../images/whatsnew4_1/copy-paste-format.gif"
					alt="Sirius - Copy/Paste graphical style" border="0" />
			</p>

			<p>&nbsp;</p>

			<h3><b>Easier border nodes alignment</b></h3>
			<p>The Snap to Shape option is now available also on border nodes. 
			It means that Sirius displays guide to the user to facilitate the alignment of border nodes relatively to each other.
			</p>

			<p>
				<img class="shadow" src="../images/whatsnew4_1/snap-to-shape.gif" alt="Sirius - Border nodes alignment"
					border="0" />
			</p>
			<p>&nbsp;</p>

			<h2><a name="properties_view"></a>Other changes</h2>
		
			<h3><b>Reducing versions conflicts</b></h3>
			<p>Before Sirius 4.1, some issues could occur when users were trying to load a modeling project into a modeling tool of 
			which version was older than the one used to create the model.</p>

			<p>Now this kind of operation is forbidden: users can only load modeling projects with a tool whose version is the same 
			or is more recent (in this case Sirius automatically performs a migration).</p>

			<h3><b>Ready-to-use service class</b></h3>
			<p>To facilitate the creation of new services, when you create a new Viewpoint Specification Project, 
			by default an empty service class is automatically created and pre-registered, ready to host your Java methods!</p>

			<p>
				<img class="shadow" src="../images/whatsnew4_1/default-service-class.png" alt="Sirius - Reducing versions conflicts"
					border="0" />
			</p>
		</div>
		<p>Just <a href="http://www.eclipse.org/sirius/download.html">download</a> this new version, try it right now and share your experience / give us your feedback 
		on <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=262" target="_blank">Eclipse Sirius Community Forum</a>!
		</p>
		<p>This is just an overview of the most visible changes. The full list is detailed here: 
		<a href="http://www.eclipse.org/sirius/doc/Release_Notes.html" title="New & Noteworthy">http://www.eclipse.org/sirius/doc/Release_Notes.html</a>.</p>
		<p>To see new and noteworthy features of previous version, read <a href="http://eclipse.org/sirius/whatsnew/whatsnew4.html" title="New & Noteworthy">What's new in Sirius 4.0</a>.</p>
		<br />
		</div>
	</div>
</section>

<footer>
  <div class="container">
      <div class="row">    
        
<div class="col-md-3">
    <p><a href="http://www.eclipse.org/"  target="_blank"><img src="/sirius/common_assets/images/logos/logo-eclipse-foundation.png" alt="Eclipse Foundation logo"></a></p>
    <p id="copyright">Copyright © 2021 Eclipse Foundation, Inc.<br>All Rights Reserved.</p>
</div>

<div class="col-md-3">
    <h6>Eclipse Foundation</h6>
    <ul>
        <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a></li>
        <li><a href="http://eclipse.org/" target="_blank">Eclipse</a></li>
        <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a></li>
        <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a></li>
        <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a></li>
        <li><a href="http://www.eclipse.org/org/foundation/contact.php" target="_blank"> Contact Us</a></li>
    </ul>
</div>

        
<div class="col-md-3">
    <h6>Project Links</h6>
    <ul>
        <li><a href="https://projects.eclipse.org/projects/modeling.sirius" target="_blank">About this project</a></li>
        <li><a href="https://wiki.eclipse.org/Sirius" target="_blank">Wiki</a></li>
        <li><a href="https://www.eclipse.org/forums/index.php?t=thread&frm_id=262" target="_blank">Forum</a></li>
        <li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?list_id=6776579&classification=Modeling&query_format=advanced&product=Sirius" target="_blank">Bugs</a></li>
        <li><a href="https://git.eclipse.org/c/sirius/org.eclipse.sirius.git" target="_blank">Source Code</a></li>
    </ul>
</div>
    </div>
  </div>
</footer>

    
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous" defer></script>

<script src="/sirius//common_assets/js/wow.min.js" defer></script>
<script src="/sirius//common_assets/js/main.js" defer></script>
<script src="/sirius//common_assets/js/magnific-popup.min.js" defer></script>
<script src="/sirius//common_assets/js/magnific-popup.video.js" defer></script>
<!-- Call wow function -->
<script>
        jQuery(document).ready(function(){
            "use strict";
            new WOW().init();
            jQuery('.smooth-scroll').scrollingTo();

            var url = window.location;
            // Will only work if string in href matches with location
            jQuery('ul.nav a[href="'+ url +'"]').parent().addClass('active');

            // Will also work for relative and absolute hrefs
            jQuery('ul.nav a').filter(function() {
                return this.href == url;
            }).parent().addClass('active');

            jQuery(".nav a").on("click", function(){
                jQuery(".nav").find(".active").removeClass("active");
                jQuery(this).parent().addClass("active");
            });
        });
</script>
  
  </body>
</html>
