Orion 7.0 – Inline Global Search Pane

by Elijah El-Haddad at September 22, 2014 03:41 PM

As of Orion 7.0 the stand-alone Orion Search page will be replaced by an inline search pane in the Editor page. There are several reasons for this. First, as a user, immediately before initiating a search, you are almost always browsing or modifying existing files on the Editor page. Second, after obtaining the search results, you almost always return to the Editor in order to browse or modify the file you were looking at or a file you found during the search. Having a separate search page forced you to switch contexts while searching. This created an artificial separation between the tasks of editing/browsing files and the task of searching through them, while in fact, the latter is a secondary task performed to support the former.

With the search inside the Editor page you can now initiate a global file content search without leaving your current tab. Select “Edit” → “Global Search…” from the main menu bar or use the keyboard shortcut Ctrl+Shift+H (Cmd+Shift+H on Mac) to open the inline search pane.

EditMenu

Enter the search parameters and click on the search button to initiate the search. (Tip: Hitting Enter in any of the text input boxes also triggers the search.)

SearchOptions

The search parameters section will collapse and the list of files with matches will appear in the inline pane. You can expand each file in the list to see the lines which contain matches or you can click on the file name to open it in the editor on the right hand side.

SearchResults

To run another search click on the “^ Edit Search” link in the top left corner of the pane. This will expand the search parameters area allowing you to modify your search and run it again.

Search and Replace

As was the case with the stand-alone search page, the inline search pane supports search and replace. To perform a replace operation click on the “Switch to Replace Mode” link below the search term input box. After filling in the parameters click on the “Replace…” button to see a preview allowing you to select specifically which matches to replace and which to ignore. (Note: Clicking on the “Replace…” button will NOT modify any of your files.)

ReplaceOptions

The list of matches will appear in the inline search pane and a preview of each file showing the before and after versions will appear over the editor on the right hand side. A little tab with the word “Preview:” and the name of the file will appear over the editor indicating that this is a preview only. For now this preview is read-only and supports none of the editing or in-file searching functionality.

PreviewReplace

Once you have selected which matches you wish to replace using the check marks next to the inline search pane’s result list click on the “Replace Selected” button, above the result list, to apply the changes to your files. The inline search pane will display the list of files that were modified as well as the number of matches that were modified in each file.

ReplaceReport


by Elijah El-Haddad at September 22, 2014 03:41 PM

EMF Forms 1.4.0 Feature #5: Improved Tooling

by Jonas Helming at September 22, 2014 11:54 AM

In this small blog post series, I describe the five most notable new features of EMF Forms 1.4.0. EMF Forms is a framework to efficiently develop form-based UIs based on a given data model. Please refer to this tutorial for an introduction to EMF Forms and to this post for an overview of the series.

With the 1.3.0 release, we introduced the IDE tooling for EMF Forms. It allows the creation and modification of view models directly within the Eclipse IDE and provides a preview that renders the form-based UI based on the current view model. In 1.4.0, we have refined and improved the tooling a lot.

For example, the generation of controls for subelements is now possible.

Typical form-based UIs often show not only the attributes of one object, but also its subobjects. For example, when showing an object “Person”, it might have a subobject “Address”. In the UI, the existence of these subelements is often hidden because the end user does not care about the underlying data model.

image00 EMF Forms 1.4.0 Feature #5: Improved Tooling

EMF Forms allows you to reference attributes from subelements, too. Actually, this has been supported by the EMF Runtime in the past, but is was not possible to generate these controls in the IDE tooling. The path to subelements is modeled in “FeaturePathDomainModelReferences”. However, the tooling simply allows you to generate these references in a wizard. This is described more in detail here.

Additionally, we enhanced the tooling with examples bundles, which can be imported into the workspace:

image02 EMF Forms 1.4.0 Feature #5: Improved Tooling

The examples include:

  • Make it happen: example model – the data model, we use for all tutorials

  • Make it happen: view model – a sample view model, as describe this tutorial.

  • Make it happen: custom control renderer – an example of how to adapt a control used by EMF Forms in a form-based UI, as described here.

  • Make it happen: custom group renderer – an example of how to adapt a control used by EMF Forms in a form-based UI, as described here.

  • Make it happen: sample e3 application – An example of how to embed EMF Forms in a e3 application

  • Make it happen: sample e4 application – An example of how to embed EMF Forms in a e4 application

  • Make it happen: sample RAP application – An example of how to embed EMF Forms in a RAP application

  • Make it happen: sample J2EE RAP application – An example of how to embed EMF Forms in a J2EE RAP application


TwitterGoogle+LinkedInFacebook

Leave a Comment. Tagged with eclipse, emf, eclipse, emf


by Jonas Helming at September 22, 2014 11:54 AM

Become an OSGi Certified Developer

by David Bosschaert (noreply@blogger.com) at September 22, 2014 06:33 AM

Are you an OSGi Ninja and would like to show the world? The OSGi Alliance is starting a developer certification program where you can become an OSGi Certified Developer. The first exam, OSGi Developer Certification - Foundation Level (DCFL), is held just before the OSGi Community Event in Ludwigsburg on Monday October 27th. This exam covers the Core OSGi Framework R5 and an essential set of OSGi

by David Bosschaert (noreply@blogger.com) at September 22, 2014 06:33 AM

How to Access a Git Repository with JGit

by Rüdiger Herrmann at September 22, 2014 01:45 AM

Written by Rüdiger Herrmann

A Git repository is represented in JGit through the Repository class that can be viewed as a handle to a repository. With a Repository instance, you can create JGit commands (through the Git factory class), gain access to configuration settings, resolve refs, etc.

There are several ways to obtain a repository reference and because I have seen people having trouble here and there, this article summarizes how to access a Git repository with JGit.

Of Repositories and Builders

The class Repository is abstract to allow for implementations with different storage backends. For example, there is an InMemoryRepository for tests and experiments. But of course, most commonly used is the FileRepository, that represents a repository in the local file system. Because the actual implementations are considered internal, each Repository implementation has a corresponding repository builder that should be used to create instances thereof.

Hence the FileRepositoryBuilder is the recommended way to create a FileRepository. For historical reasons there is also a RepositoryBuilder that does exactly the same but will be removed with the next major-version update.

Once you have configured a repository builder to your needs, call its build() method to have a repository created.

FileRepositoryBuilder repositoryBuilder = new FileRepositoryBuilder();
repositoryBuilder.setMustExist( true );
repositoryBuilder.setGitDir( ... );
Repository repository = repositoryBuilder.build();

For layout reasons, I have put the method calls on a line each, but the FileRepositoryBuilder also implements a fluent interface so that method calls can be chained.


All methods discussed here apply to local repositories only. Git is a distributed version control system and as such is not designed to directly manipulate a remote repository.
In order to manipulate a remote repository, you have to clone it first. Now you can make modifications to the local copy, like commit new or changed files, create branches or tags, etc. To synchronize your changes with the remote repository you will first have to integrate (aka fetch) changes (if any) from the remote and then finally push your local changes.

Prefer setGitDir()

In JGit, a file-based repository is identified through a directory. However, there are two directories that may appear suitable to identify a repository: The work directory wherein the currently checked out revision resides and the git directory which holds the object database and metadata (e.g. branches, tags, etc.).

While FileRepositoryBuilder has a setGitDir() as well as a setWorkTree() method, I recommend to always use setGitDir(), because

  • By default, the git directory is a direct subdirectory of the work directory, but this can be overridden through an environment variable or a configuration setting.
  • And then there are bare repositories that don’t have a work directory at all.

Is This a Repository?

The FileRepositoryBuilder’s build() method returns a Repository whether or not a repository exists. Even if the given directory does not exist, an instance is returned.

I found two ways to test if a given directory acually points to an existing repository. By calling setMustExist(true), the FileRepositoryBuilder can be configured to only build existing repositories.
Once the must-exist flag is turned on, build() will throw a RepositoryNotFoundException if no repository could be found. As a side note, this behavior is undocumented. It might be just a lapse in the JavaDoc and I doubt that this behavior will change, but still there is no guarantee as if it was part of the API.

Alternatively, you can test if the returned repository’s object database actually exists.

Repository repository = repositoryBuilder.build();
if( repository.getObjectDatabase().exists() ) {
  ...
}

As the name implies, ObjectDatabase.exists() returns true if there is an object database and false otherwise.

A Small Detour: findGitDir()

The repository builder also offers a findGitDir() method that can be used to search for a repository starting from a given directory and going its parent hierarchy upwards.

FileRepositoryBuilder repositoryBuilder = new FileRepositoryBuilder();
repositoryBuilder.addCeilingDirectory( new F‌ile( "/home/user" ) );
repositoryBuilder.findGitDir( new F‌ile( "/home/user/git/foo/bar" ) );

The search ends if either a repository directory was found or the root of the file system was reached.
getGitDir() can be used to obtain the search result and returns the found git directory or null if none was found.

The search can be limited by adding one or more ceiling directories. If one of them is reached while walking up the directory hierarchy, the search ends.

Alternative: Git.open()

If you find the FileRepositoryBuilder inconvenient to use, there is also a shorthand: Git.open().

Git git = Git.open( new F‌ile( "/path/to/repo/.git" ) );

The method expects a File parameter that denotes the directory in which the repository is located. The directory can either point to the work directory or the git directory. Again, I recommend to use the git directory here.

If the given directory does not exist or does not contain a repository, a RepositoryNotFoundException will be thrown. On success, an instance of class Git is returned that can be used to access the repository (git.getRepository()) and create git commands.

More than One Way to Access a Git Repository with JGit

While Git.open() is nice and short, the FileRepositoryBuilder gives you more control and a reliable way to determine if the repositry exists. Whether you prefer the first or the latter probably depends on your use case. Just remember to not use the FileRepository constructor directly as is may vanish or changes its behavior without prior notice.

I hope this article helped to clarify how access a repository with JGit. If you have further questions, please let me know in the comments

The post How to Access a Git Repository with JGit appeared first on Code Affine.


by Rüdiger Herrmann at September 22, 2014 01:45 AM

JavaOne 2014 – Having fun with Lego & JavaFX 3d

by Tom Schindl at September 20, 2014 08:04 PM

More Lego elements

While I learned last week that there’s a difference between Hands-On-Lab and Tutorial at JavaOne I’ve already prepared all the content for Developing JavaFX RCP with the Eclipse4 Application Platform so I will slightly change my plan and provide you a walk through how to develop an application similar the one at the end of this post – if you want you can even follow a long because I’ll post the source codes before the tutorial.

In my last post I described in short that we made up a DSL to define lego bricks and assemble bigger buildings from it – we really had so much fun with and so we added some more extra features to the DSL.

First we modeled (in freecat) a door frame brick:

2_door

Afterwards we defined a new model type – until then we only had bricks who completely followed the lego raster – and named them mounted parts. An example of such a mounted part is the door which is mounted on to the door frame.

2_door_mounted

- we left the door a bit open in this screenshot by setting the y-angle to 160 instead of 180.

Now that’s it for the moment on the definition side, we’ll comeback later to it once more.

The viewer

Having now all the 3d models we need a viewer for none developers. We’ll develop such an application as part of our tutorial at JaveOne but a bit more involved version can be seen in this video.

This is an application developed using e4 + e(fx)clipse JavaFX renderers and other e(fx)clipse opensource components, while in the case it showing our lego 3d model it could be ANY 3d model from engines to your smart-home setup – I’ll talk a bit about this app in the JavaFX at Eclipse.org talk where I also talk about the lego language, DSLs and JavaFX, Testing JavaFX, … .

Add some interactivity

When we had added this mounted stuff, we immediately had the idea to let those mounted parts modify their state while shown in the 3d model viewer in the e4 application above, so we added the possibility to define actions in the DSL (support is not completely ready and needs some more changes to support everything).

For our door we defined 2 actions like this:

2_door_actions

If we now load the FXML-Model once more things like this will happen (turn on sound on your computer to get the full effect)

The trick is that while the 3d Viewer itself is only able to display 3 models and animate them it knows nothing about those actions we are encoding the logic in a JavaScript file we are naming equal to the FXML-File and when the FXML-File is loaded through a service fire up Nashorn, load the JavaScript file and we are ready to go. The JavaScript file we are generating looks similar to this one:

var Media 		= Java.type("javafx.scene.media.Media");
var MediaPlayer = Java.type("javafx.scene.media.MediaPlayer");
var Transition 	= Java.type("org.eclipse.fx.ui.animation.BaseTransition");
var Consumer 	= Java.type("java.util.function.Consumer");
var Duration 	= Java.type("javafx.util.Duration");

var PropertyTransition = Java.extend(Transition);
		
		
function getRotateNode(node) {
	return node.getParent().getParent();
}
		
function getTransform(node,x,y,z) {
	for( var i = 0; i < node.getTransforms().size(); i++ ) {
		var t = node.getTransforms().get(i);
		if( t.getClass().getSimpleName().equals("Rotate") ) {
			if( t.getAxis().getX() == x 
				&& t.getAxis().getY() == y
				&& t.getAxis().getZ() == z ) {
				return t;
			}
		}
	}
	return null;
}

function rotateY(node, targetAngle, soundFile, duration) {
	var r = getTransform(node, 0, 1, 0);
	if( r != null ) {
		var start = r.getAngle();
		var delta = start - targetAngle;
		var transition = new PropertyTransition(Duration.millis(duration)) {
			interpolate: function(frac) {
				r.setAngle(start - frac * delta);
			}
		};
		transition.play();
		if( soundFile != null ) {
			var m = new Media(soundFile);
			var mediaPlayer = new MediaPlayer(m);
			mediaPlayer.play();
		}
	} 
}
		
function doorOpen(event) {
	var node = getRotateNode(event.target);
	rotateY(node,80.0,"file:/Users/tomschindl/git/elementary/sample/lego/3d/squeaking-door.mp3",3000);
}

function doorClose(event) {
	var node = getRotateNode(event.target);
	rotateY(node,180.0,null,3000);
}

function init() {
	var InitComsumer = Java.extend(Consumer);
	return new InitComsumer() {
		accept : function(n) {
			var dynamic = n.lookup("#dynamic_1");
			dynamic.setOnMousePressed(doorOpen);
		}
	};
}

init();

I need to clean up the sources of the Lego-Language (e.g. removal of absolute paths, …) a bit before pushing it to our github account but you can clone the repo from there already.



by Tom Schindl at September 20, 2014 08:04 PM

Eclipse Day India 2014 - A Day with Eclipseans in Bangalore

by Its_Me_Malai (noreply@blogger.com) at September 20, 2014 12:58 PM

Surprised ! As I walked into Cypress Point, EGL Campus, IBM Office, the venue for Eclipse Day India 2014. The event was organised by IBM in collaboration with Eclipse Foundation. Daniel had just started his Key Note and when i entered @ 9.40am, the hall was nearly full. Daniel spoke about his development experience @ Eclipse and the process followed within the Eclipse Team.

"Dont force the Process on the Developers. Let the Developers create the Process"
        - Success Secret of Eclipse Development

Thanks to Noopur and Sarika for coordinating for an amazing event. Met Pradeep, Prakash, Ankur, Manoj {The X & Current Eclipse Team} after a long time. Also met Aditya from Novell[NetIQ]. Felt good to bump into a lot of people that i had trained since 2007.

Followed by the Key Note started the Track 1 & Track 2 Session. Mine happened to be the 1st of the Talks in Track 1. Jam Packed Hall, Full Attendance on a Saturday Morning to listen to wats ECP, EMF Forms, EMFStore and Edapt all about. Started with a severe but did get into the line quickly and then into complete form to talk. Link to my Presentation : Click Here

I spent rest of the day in Track 1 along with Intalio Team, Aricent and BOSCH Team.

Followed by my session was Adithya Vikram on his experiences during the development of Identity Manager, an RCP Application developed within Novell.

Then was the session of EMFText. I really wanted to be there for this session, as its been a long way to listen from someone what is DSL, XText instead of me myself reading it online. And thanks to Rajkumar and Kulandaivel from BOSCH, the session was informative and did definitely enlighten my knowledge and let my creative thot work towards DSL creation.

Lunch BREAK : Caught up with few other people and also with Aravidhan, my college junior who is with Software AG. Also Rajkumar happens to be my college junior. So it was like 3 heads from Annamalai Univ together cribbing about the IT world.

I also had the opportunity to meet Prasanna Kulkarni from Cerner, i had coordinated and helped in organising Eclipse Day India 2013 @ Cerner but unfortunately couldnt make it last year. So we had been communicating over email for long.

Then bumped into Ankur for a while and Ankur was also majorly seen in the Track 1 Sessions and also he had a session on PDE Build vs Maven. It was fun to walk thru his cribbing about PDE Builds and it experiences in the 8yrs of his Eclipse Experience. Before Ankur's Session on Builds, there was a session by Vijay on API Tooling. It was also definitely useful and understood y we have API Tools as a checkbox in creation wizard of Plugin Project.

Jaks, Jyothi Maam where also around for the event from BOSCH. So thats a lot of names from the event isnt it. Felt special as i knew so many people in the community :) Thanks to my profile as an Eclipse Consultant.

Looking forward Eclipse Demo Camp Nov/Dec 2014 that was announced by Prasanna to be organised in Cerner. On that note i had to leave as it was evening, collected my Goodie [a Mug] and i forgot, i received a Pen Drive as a Compliment for being a Speaker.

Thanks to Noopur and Team to have put together a great event which definitely turned out to be a successful one due to the large participation from the Eclipse Community in Bangalore.

PS: Sorry, i didnt take any pictures but IBM did, so i am sure we will have them out soon.


by Its_Me_Malai (noreply@blogger.com) at September 20, 2014 12:58 PM

Portable Java Contracts for javax Packages

by Graham Charters (noreply@blogger.com) at September 20, 2014 08:27 AM

Modularity is all about contracts; one party says what they provide, another party says what they require, and if they match, things should work just fine. So what do you do when the party providing the contract doesn't provide enough information to be certain they're providing what you want? This is the conundrum the OSGi Alliance has been grappling with when it comes to the packages defined in

by Graham Charters (noreply@blogger.com) at September 20, 2014 08:27 AM

Committer and Contributor Hangout -- Contributors

by Eclipse Foundation at September 19, 2014 02:46 PM

We'll be talking about Contributors. What the term means at the Eclipse Foundation, how to get involved, how to contribute (code), getting help and working towards becoming a project committer:) Richard Burcher from the Eclipse Foundation will be your host. Links: Eclipse Foundation Wiki Page For Talk https://wiki.eclipse.org/Committer_Contributor_Hangouts/september_19

by Eclipse Foundation at September 19, 2014 02:46 PM

Industrial Internet Consortium: a meeting of Industrial and IT for IoT

by Ian Skerrett at September 19, 2014 01:51 PM

The Industrial Internet Consortium (IIC) was announced this past March, founded by GE, AT&T, IBM, Intel and Cisco.  The purpose of the IIC is to create technology testbeds to demonstrate different IoT use cases and identify any potential gaps in technology or standards.  IIC is careful to explain they are not a standards group so they would feed any requirements into a standards organization.

This week I attended my first IIC meeting. The Eclipse Foundation joined IIC since the work we do is very complimentary. The ideal is that the IIC testbeds will use Eclipse IoT technology and new requirements from the testbeds will come back to the Eclipse IoT projects.

Based on my first meeting, IIC has accomplished what no other organization has done. It has brought together traditional industrial companies (GE, Toshiba, Pitney Bowes, Bosch, National Instruments, etc.) and more mainstream IT focus companies (IBM, Intel, Cisco, MS, etc) together into the same conversation. This is a critical accomplishment since the IoT industry needs to ensure the entire technology chain is compatible, all the way from the device to back-end enterprise system. The IIC testbeds are one way the industry will test for this compatibility.

Lots of people equate IoT with wearables or home automation. However, the real money in IoT is going to be on the industrial side connecting elevators, factory floors, wind farms, etc. These are complex systems that might not be consumer facing but will certainly drive the efficiencies and profits promised by IoT.

The IIC is just getting going. At the recent meeting there was lots of discussion about processes, vocabulary, detailed use cases, etc. To be honest, the more mundane details of starting an organization. However, the real “meat” will come when they start setting up the testbeds. It will be interesting to watch and participate in their progress.



by Ian Skerrett at September 19, 2014 01:51 PM

Dealing with Technical Debt with Sonarqube: a case study with Xsemantics

by Lorenzo Bettini at September 18, 2014 05:36 PM

I only recently started to play with Sonarqube to reduce “technical debt” and hopefully improve code quality. I’d like to report on my experiences about using Sonarqube to analyze Xsemantics, a DSL for writing rule systems (e.g., type systems) for Xtext languages.

I was already using the Jenkins Continuous Integration server, and while building I was already using Findbugs and Jacoco, thus, I was already analyzing such software, but Sonarqube brings new analysis rules for Java programs and it also integrates results from Findbugs and Jacoco, aggregating all the code quality results in a web site.

In spite of the Jenkins builds Sonarqube detected some issues when I started

xsemantics sonarqube 1

First of all, I had to exclude the src-gen and emf-gen directories (the former is where Xtext generates all its artifacts, and the latter is where Xcore generates the EMF model files); since these are generated files and I did not want to make them part of the analysis. I’ve done such exclusion with a property in the main pom.xml (for readability I split it into lines):

<sonar.exclusions>
file:**/src-gen/**,
file:**/emf-gen/**,
file:**/example/**,
file:**/tests/**,
**/*RuntimeModule.java,
**/*UiModule.java,
**/*XcoreReader.java,
**/*UiExamples.java,
**/*TypeSystemGen*.java,
**/*StandaloneSetup*.java
</sonar.exclusions>

Note that for the moment I’m also excluding tests from the analysis… it is considered best practice to analyse tests as well (and I have many of them), but I wanted to concentrate on the code first. I also excluded other Java files for which issues are reported, like the Xtext Guice modules, due to the wildcards in the method signatures… I have to live with them anyway :)

After that the number of issues reduced a little bit, but there were still some issues to fix; most of them were easy, basically due to Java conventions I hadn’t use (e.g., name of fields and methods or even names of type parameters).

One of the major ones was due to the wrong implementation of the clone method (“super.clone() should be called when overriding Object.clone()” (https://github.com/LorenzoBettini/xsemantics/issues/34).

Another thing that I had never considered was dependency cycles among Java packages and files. Sonarqube reports them. Luckily there were only few of them in Xsemantics, and the hardest part was to read the Dependency Structure Matrix, but in the end I managed to remove them (there must be nothing in the upper triangle to have no cycle):

xsemantics sonarqube 2

To solve the cycles I had to change something in the runtime API (http://xsemantics.sourceforge.net/snapshots-for-xsemantics-1-6-for-xtext-2-7/) but it was basically a matter of moving Java classes into different packages.

Then came the last major issue: Duplicated Code!!! All by itself this issue was estimated with 13 days of technical debt! And most of the duplicated code was in the model inferrer (a concept from Xbase). Moreover, such inferrer is written in Xtend, a cleaner Java, and the Xtend compiler then generates Java code. Thus, Sonarqube analyses the generated Java code, and the detected duplicate code blocks are on the Java code. This means that it takes some time to understand the corresponding original Xtend code. That’s not impossible since Xtend generates clean Java code, but it surely adds some work :)

Before starting to remove duplicated code (around 80 blocks in the generated Java code) the Xtend inferrer was around 1090 lines long (many parts are related to string templates for code generation) corresponding to around 2500 lines of generated Java code! After the refactoring the Xtend inferrer was around 1045 lines long, and the generated Java code reduced to around 2000 lines.

That explains also the reduction of lines of code and complexity:

xsemantics sonarqube 3

But now technical debt is 0 :)

xsemantics sonarqube 4

And it’s nice to look at this dashboard :)

xsemantics sonarqube 5

By the way, I also had to disable some issues I did not agree on (tabulation characters) and avoid reported issues on method name conventions on a specific file (because methods that start with the underline characters _ have a specific meaning in Xtext/Xtend). Instead of disabling them on the Sonarqube web interface, I preferred to disable them using properties in the pom file so that it works across different Sonarqube installations (e.g., I also have a local Sonarqube instance on my machine to do some quick experiments). Such multi properties are not officially supported in the Sonar invocation (e.g., through the sonar runner or via Maven), but I found a workaround: http://stackoverflow.com/questions/21825469/configure-sonar-sonar-issue-ignore-multicriteria-through-maven (but, be careful, it is considered a hack as reported in the mailing list: http://sonarqube.15.x6.nabble.com/sonar-issue-ignore-multicriteria-td5021722.html):

<!-- see http://sonarqube.15.x6.nabble.com/sonar-issue-ignore-multicriteria-td5021722.html and
 http://stackoverflow.com/questions/21825469/configure-sonar-sonar-issue-ignore-multicriteria-through-maven
 for the multicriteria property -->
<sonar.issue.ignore.multicriteria>e1,e2</sonar.issue.ignore.multicriteria>

<!-- standard convention for method names: in the outline tree provider we
 must use methods that start with _ and they'd violate the rule squid:S00100 -->
<sonar.issue.ignore.multicriteria.e1.ruleKey>squid:S00100</sonar.issue.ignore.multicriteria.e1.ruleKey>
<sonar.issue.ignore.multicriteria.e1.resourceKey>**/*OutlineTreeProvider.java</sonar.issue.ignore.multicriteria.e1.resourceKey>

<!-- "Tabulation characters should not be used"
 sorry... I don't agree :) -->
<sonar.issue.ignore.multicriteria.e2.ruleKey>squid:S00105</sonar.issue.ignore.multicriteria.e2.ruleKey>
<sonar.issue.ignore.multicriteria.e2.resourceKey>**/*.java</sonar.issue.ignore.multicriteria.e2.resourceKey>

That’s all! I strongly suggest to give Sonarqube a try! :)

Be Sociable, Share!

by Lorenzo Bettini at September 18, 2014 05:36 PM

EclipseCon Europe 2014 - Program Released

September 18, 2014 12:58 PM

We have three great days of talks, tutorials, keynotes, theme days and events planned. Register by Oct. 1 for early rates.

September 18, 2014 12:58 PM

EMF Client Platform and EMF Forms 1.4.0 released!

by Jonas Helming at September 18, 2014 09:45 AM

We are happy to announce that we have just released EMF Client Platform and EMF Forms 1.4.0! Both will be part of Eclipse Modeling Tools Luna SR1, but you can already find the new release on our download pages:

EMF Client Platform is a framework to support the development of applications based on an EMF data model. EMF Forms is a stand-alone component in EMF Client Platform focused on the creation of form-based UIs.

Since release 1.3.0, we have implemented a bunch of new features, improved the usability and fixed existing bugs. A complete list of implemented features and bug fixes is available here. In general, we focused on EMF Forms in this release. I will describe the five most notable new features in a small blog post series starting this week. Please refer to this tutorial for a introduction of EMF Forms.

image01 EMF Client Platform and EMF Forms 1.4.0 released!


TwitterGoogle+LinkedInFacebook

Leave a Comment. Tagged with eclipse, emf, eclipse, emf


by Jonas Helming at September 18, 2014 09:45 AM

Concluding the Spanish OSGi Events for September

by Mike Francis (noreply@blogger.com) at September 18, 2014 08:29 AM

The Barcelona JUG is hosting two more events about OSGi on September 26 and 27. Peter Kriens will be presenting "OSGi made easy with enRoute". The session on September 26 is a introductory presentation in the evening and the session on September 27 is a half day workshop. Both of these events are free to attend. You can find out more details and register for these events as follows:

by Mike Francis (noreply@blogger.com) at September 18, 2014 08:29 AM

Little Known Things about the Eclipse Infocenter: Deep Linking (2/5)

by howlger at September 17, 2014 07:04 PM

The Eclipse Infocenter is the Eclipse help system launched as a stand-alone web application. Five well-hidden features about the Infocenter will be presented one after the other here. Basic and Bot Mode have already been presented and here comes the second little known thing: deep linking.

The Infocenter does not yet support deep linking: When you browse inside the Infocenter the URL does not change. If you want to bookmark a topic you will have to copy the topic link via right-click menu from the table of contents, paste the link into the address bar and bookmark this URL.

Deep Linking

VMware has already implemented deep linking without contributing it back to Eclipse. This is not the only adaption VMware made. Unfortunately, one of these additional adaptions does not work with Internet Explorer 8 (in contrast to Firefox, Google Chrome and Internet Explorer 11), so that the table of contents does not show up. There are no such problems with the plain Eclipse Infocenter. This is why contributing back makes sense. ;-)

However, deep linking has not yet been implemented in the plain Eclipse Infocenter and you have to copy manually the link from the table of contents. This link is redirected to the version with HTML frames. If you want to see the topic framelessly without the table of contents, search field, etc. you will have to append ?noframes=true to the link. Alternatively, in the URL you could replace /topic/ with /nftopic/ or – if you want to have the navigation breadcrumb at the top – with /ntopic/.

With the resultof parameter you can highlight text. The topic is automatically scrolled to the first hit. This can be used to link to a specific section inside a topic. For example, if you want to link to the “Dark theme” inside the “What’s New in Luna” topic you will have to append ?resultof=”Dark theme” to the link. The phrase to be highlighted has to be enclosed in parentheses. Two or more phrases have to be concatenated without delimiters as you can see in the following example:

Highlighting via 'resultof'

To combine both frames and highlighting is a little bit tricky. First you have to open the topic link which redirects you to index.jsp?topic=…; then you have to append ?resultof=… to the redirected URL. The ?topic=…?resultof=… instead of ?topic=…&resultof=… is probably a work-a-round for an error waiting to be fixed. ;-)

The next little known things about the Eclipse Infocenter on my list are Search Links, Language Switching and Debugging Information. Stay tuned!

Flattr this



by howlger at September 17, 2014 07:04 PM

JavaOne 2014 – Visualize your DSL – Building 3d Lego models with Xtext and JavaFX

by Tom Schindl at September 17, 2014 02:08 PM

JavaOne 2014 is not too far ahead and because I’m doing 2 session:

I’ve been busy working on show cases and the demo application. The demo application visualizes 3d objects of any kind, I thought a nice and not too complex example are structures built from lego bricks. Naturally one can create Lego 3d models using any 3d modeling software but for someone like me who is not using them on a daily base this is a bit cumbersome and I’m faster using a DSL who allows me to those in a textual editor inside my IDE and so I defined a DSL who allows me to define lego bricks and mix and match them to create bigger structures.

Definition Lego DuploTm Bricks:
lego_bricks

Definition of a Lego DuploTm structure:
lego_assembly

The reality:
Foto

The really interesting thing in this regard is that to create a visual representation of the editor content (the editors are on the left hand side of the Eclipse IDE screenshots) is that all that needs to be done is to contribute an adapter into your IDE which adapts your editor (must not be xtext based) and provide an FXML representation of the editors content.

For the above editors this looks like this:

The adapter for the xtext-editor:

package at.bestsolution.lego.ui.preview;

import java.net.URL;
import java.util.Collections;
import java.util.List;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
import org.eclipse.emf.common.util.URI;
import org.eclipse.fx.ide.ui.editor.IFXMLProviderAdapter;
import org.eclipse.ui.IEditorPart;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.ui.editor.XtextEditor;
import org.eclipse.xtext.util.concurrent.IUnitOfWork;

import at.bestsolution.lego.lego.Model;
import at.bestsolution.lego.ui.internal.LegoActivator;

import com.google.inject.Injector;

public class FXMLProviderAdapter implements IFXMLProviderAdapter {
	private XtextEditor editor;
	
	public FXMLProviderAdapter(XtextEditor editor) {
		this.editor = editor;
	}

	@Override
	public IEditorPart getEditorPart() {
		return editor;
	}
	
	@Override
	public String getPreviewFXML() {
		return editor.getDocument().readOnly(new IUnitOfWork<String, XtextResource>() {

			@Override
			public String exec(XtextResource resource) throws Exception {
				Injector injector = LegoActivator.getInstance().getInjector("at.bestsolution.lego.Lego");
				PreviewGenerator generator = injector.getInstance(PreviewGenerator.class);
				return generator.generatePreview((Model) resource.getContents().get(0)).toString();
			}
			 
		});
	}
		
	@Override
	public String getPreviewSceneFXML() {
		return null;
	}

	@Override
	public List<String> getPreviewCSSFiles() {
		return Collections.emptyList();
	}

	@Override
	public String getPreviewResourceBundle() {
		return null;
	}

	@Override
	public List<URL> getPreviewClasspath() {
		return Collections.emptyList();
	}

	@Override
	public IFile getFile() {
		return editor.getDocument().readOnly(new IUnitOfWork<IFile, XtextResource>() {

			@Override
			public IFile exec(XtextResource resource) throws Exception {
				URI uri = resource.getURI();
				Path structureFilePath = new Path(uri.toPlatformString(true));
				IFile f = ResourcesPlugin.getWorkspace().getRoot().getFile(structureFilePath);
				if( f.exists() ) {
					return f;
				}
				return null;
			}
			
		});
	}
}

The adapter factory registered inside the Eclipse IDE:

package at.bestsolution.lego.ui.preview;

import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.fx.ide.ui.editor.IFXMLProviderAdapter;
import org.eclipse.fx.ide.ui.editor.IFXPreviewAdapter;
import org.eclipse.xtext.ui.editor.XtextEditor;

public class FXMLAdapterFactory implements IAdapterFactory {

	@Override
	public Object getAdapter(Object adaptableObject, Class adapterType) {
		if((adapterType == IFXMLProviderAdapter.class || adapterType == IFXPreviewAdapter.class) && adaptableObject instanceof XtextEditor ) {
			XtextEditor editor = (XtextEditor) adaptableObject;
			if( "at.bestsolution.lego.Lego".equals(editor.getLanguageName()) ) {
				return new FXMLProviderAdapter(editor);
			}
		}
		return null;
	}

	@Override
	public Class[] getAdapterList() {
		return new Class[]{IFXMLProviderAdapter.class, IFXPreviewAdapter.class};
	}

}
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
  <!-- .... -->
  <extension
        point="org.eclipse.core.runtime.adapters">
     <factory
            adaptableType="org.eclipse.xtext.ui.editor.XtextEditor"
            class="at.bestsolution.lego.ui.preview.FXMLAdapterFactory">
         <adapter
               type="org.eclipse.fx.ide.ui.editor.IFXPreviewAdapter">
         </adapter>
         <adapter
               type="org.eclipse.fx.ide.ui.editor.IFXMLProviderAdapter">
         </adapter>
      </factory>
  </extension>
  <!-- .... -->
</plugin>


by Tom Schindl at September 17, 2014 02:08 PM

Mozilla Releng: The ice cream

by Kim Moir (noreply@blogger.com) at September 17, 2014 01:43 PM

A week or so ago, I was commenting in IRC that I was really impressed that our interns had such amazing communication and presentation skills.  One of the interns, John Zeller said something like "The cream rises to the top", to which I replied "Releng: the ice cream of CS".  From there, the conversation went on to discuss what would be the best ice cream flavour to make that would capture the spirit of Mozilla releng.  The consensus at the end was was that Irish Coffee (coffee with whisky) with cookie dough chunks was the favourite.  Because a lot of people like on the team like coffee, whisky makes it better and who doesn't like cookie dough?

I made this recipe over the weekend with some modifications.  I used the coffee recipe from the Perfect Scoop.  After it was done churning in the ice cream maker,  instead of whisky, which I didn't have on hand, I added Kahlua for more coffee flavour.  I don't really like cookie dough in ice cream but cooked chocolate chip cookies cut up with a liberal sprinkling of Kahlua are tasty.

Diced cookies sprinkled with Kahlua

Ice cream ready to put in freezer

Finished product
I have to say, it's quite delicious :-) If I open source ever stops being fun, I'm going to start a dairy empire.  Not really. Now back to bugzilla...

by Kim Moir (noreply@blogger.com) at September 17, 2014 01:43 PM

Changes

September 17, 2014 07:46 AM

imageHi everyone,

This is kind of a special time for me, as I’m about to leave Obeo at the end of the month.
A little bit more than 4 years ago, I was a young student discovering the enterprise world in a start-up focused on model driven engineering & eclipse technologies.
I knew nothing.
Since then, a lot has happened in my work life, and I can only thank the Obeo guys for that. I have so many good memories that I don’t even know where to start… The blazing discussions we had during our “Geekussions” meetings, sitting between Ed Merks and Eike Stepper at my first eclipsecon, the first time I delivered a software on my own, feeling part of an awesome developpers team, when the eclipse project I lead joined the Release train, the stress and then the pride of my first talk…

But why am I leaving then, you may ask? This has not been an easy choice… I think I had a declic while giving a Sirius training: I really felt as if I was skilled in my field. As a fan of Bret Victor, I knew that feeling competent was the worst thing that can happen to the young software developer I am. I know not much, and I want to learn new languages, meet new challenges, discover other application fields with new people and ways of working.

image

I have the incredible opportunity to join another startup, iRealite, as a CTO. Our challenge is simple: take brand new disruptive technologies (Brain-Computer Interface, Leap motion…) and find usages to improve the day-to-day life. You can subscribe to my new blog to discover new technologies & the APIs to manipulate them. I may also talk about team management & the day-to-day life in a startup.

I’d like to finish by thanking all the Obeo & Eclipse guys I’ve had the chance to work with. I hope one day I’ll be able to learn to others as much as I’ve learned from you.

image


September 17, 2014 07:46 AM

Building the Internet of Things with the Eclipse IoT stack: a practical example

by Eclipse Foundation at September 16, 2014 03:50 PM

It may seem hard to get started with the Internet of Things (IoT) with so many technologies, protocols, hardware platforms, … involved. In this session, Benjamin Cabé from the Eclipse Foundation will cover all you need to know to start building IoT solutions using Java and open technologies like MQTT, CoAP, OSGi, or LWM2M. A real-life application (smart greenhouse) will be used as an example and you will most likely leave the session craving for building a very similar application yourself!

by Eclipse Foundation at September 16, 2014 03:50 PM

Eclipse PDE Mind Map

by Its_Me_Malai (noreply@blogger.com) at September 16, 2014 01:58 PM

Hey Guys

I always keep drawing a lot of stuff, as i believe like anyone else pictures carry way more than just words.
This time i decided to sketch up an Eclipse PDE Mind Map. I was half done with it and thot y not just put it online for people to review it.

The JPEG Version of the Mind Map. Please do comment on the Mind Map and interested in contributing and adding further on it, ping me on annamalai@ancitconsulting.com and we can collaborate on the mm on github :)

 Comments are always welcome :)

by Its_Me_Malai (noreply@blogger.com) at September 16, 2014 01:58 PM

Orion 7.0 – GitHub and Google+ Authentication

by Aidan Redpath at September 15, 2014 03:03 PM

Orion 7.0, coming in late October 2014, will have significant improvements to its authentication infrastructure. Orion will now support OAuth 2.0 providers for authentication, in place of the OpenID and Mozilla Persona authentication methods. Orion 7.0 stable builds can be downloaded now on the Orion download page.

New Authentication Changes

Orion 7.0 allows you to authenticate using your existing OAuth 2.0 accounts. This means if you have an existing Google or GitHub account you will be able to log into Orion 7.0 securely and easily. This gives you multiple options for authentication.

With this update we also removed Mozilla Persona support. For more information on Mozilla Persona visit: https://login.persona.org/

This changes our home page slightly to display 3 methods of authentication:

  • Orion
  • Google+
  • GitHub

Auth Logos

Google Migration

With this update we are also updating the old Google OpenID authentication to the new Google OpenID Connect, based on OAuth 2.0. Soon Google will no longer support the old version so all systems need to updated accordingly. If you have already linked your account with your Google account you will need to update it to the new OAuth 2.0 authentication. Luckily this is quite simple.

All you need to do is try to authenticate to Orion using the Google icon. Then Google will prompt you to accept the new permissions.

Authorize App

That’s it! You will now be in Orion 7.0 and your account will already be updated.

For more information on Google’s authentication migration visit: https://developers.google.com/+/api/auth-migration#timetable

Create a Linked Account

Creating a linked account used to be difficult but we have now changed this to make it relatively painless. There are two ways to create a linked account:

  • Create a new account
  • Link an existing account

New Account

To create a new linked account, simply try to authenticate with the OAuth provider of your choice (GitHub or Google).

If the account does not exist you will be sent to an account creation page.

Create Account

The account you create will automatically be linked to your OAuth account.

Existing Account

To link an existing account to your OAuth account is the same as it used to be. First log into your Orion the account you wish to link. Then go to the Settings Page → User Profile.

Link Account

At the bottom of the page is the Linked Accounts section. Here you can either add/remove your OAuth accounts. You can also remove your old Google OpenID and Mozilla Persona accounts.

What’s Next?

We plan to redo our landing page to make it more inviting and informative for new and existing users. This will explain the basics of what Orion is and how to use it.

We also plan to have more integration with your GitHub account so that if you link your account you no longer need to authenticate again to perform git operations.


by Aidan Redpath at September 15, 2014 03:03 PM