Ruben Laguna’s blog

Using GroovyMonkey to Obtain All Eclipse Icons 2

I’ve been playing with GroovyMonkey that is more or less a patch to EclipseMonkey that allows to run other languages besides Javascript.
With this Eclipse plugin you can run javascript, groovy, etc. scripts that interacts with the Eclipse API. To get an impression of what you can do with GroovyMonkey take a look to these posts (1, 2, 3, 4 ). Following those post you can make a script to download all eclipse icons from the eclipse repository. My first GroovyMonkey script generates a webpage with all eclipse icons (previously downloaded with the example scripts) to easily spot the icons.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<span class='line'>/*
</span><span class='line'> * Menu: Get Eclipse Icons > Make web page
</span><span class='line'> * Script-Path: /EclipseIcons/monkey/make_web_page.gm
</span><span class='line'> * Kudos: ecerulm
</span><span class='line'> * License: EPL 1.0
</span><span class='line'> */
</span><span class='line'>
</span><span class='line'>def findFilesinFolder(folder) {
</span><span class='line'>    def toReturn = new ArrayList();
</span><span class='line'>    
</span><span class='line'>    folder.members().each {
</span><span class='line'>      if (it instanceof org.eclipse.core.resources.IFolder) {
</span><span class='line'>         toReturn.addAll(findFilesinFolder(it));
</span><span class='line'>      } else {
</span><span class='line'>         toReturn.add(it);
</span><span class='line'>      }
</span><span class='line'>    }
</span><span class='line'>    
</span><span class='line'>    return toReturn;
</span><span class='line'>} 
</span><span class='line'>def targetProject = workspace.getRoot().getProject( 'EclipseIcons' )
</span><span class='line'>def iconsFolder = targetProject.getFolder("icons");
</span><span class='line'>def buf = new StringBuffer();
</span><span class='line'>buf.append "&lt;!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
</span><span class='line'>buf.append "&lt;html>&lt;head>&lt;title>Eclipse Icons&lt;/title>&lt;/head>&lt;body>";
</span><span class='line'>def members = iconsFolder.members();
</span><span class='line'>members.each { plugin ->
</span><span class='line'>  if (plugin instanceof org.eclipse.core.resources.IFolder) {
</span><span class='line'>	  def name = plugin.getName();
</span><span class='line'>//	  buf.append "\nh1. "+name+"
</span><span class='line'>
</span><span class='line'>\n";
</span><span class='line'>//	  buf.append "p. ";
</span><span class='line'>	  
</span><span class='line'>	  
</span><span class='line'>	   findFilesinFolder(plugin).each {arg ->
</span><span class='line'>	      def location = arg.getLocation().toString();
</span><span class='line'>	      def l = iconsFolder.getLocation().toString().length()+1;
</span><span class='line'>	      location = location.substring(l); 
</span><span class='line'>	      buf.append "&lt;a href=\""+location+"\" title=\""+location+"\"> &lt;img src=\""+location+"\" alt=\"location\"/>&lt;/a>\n";
</span><span class='line'>	   }
</span><span class='line'>	  
</span><span class='line'>	  
</span><span class='line'>//	  buf.append "
</span><span class='line'>
</span><span class='line'>\n";
</span><span class='line'>  }
</span><span class='line'>}
</span><span class='line'>buf.append "&lt;/body>&lt;/html>";
</span><span class='line'>contents = buf.toString();
</span><span class='line'>def indexHtml = iconsFolder.getFile("index.html");
</span><span class='line'>if (indexHtml.exists()) {
</span><span class='line'>  indexHtml.delete(false, true, null);
</span><span class='line'>}
</span><span class='line'>fileStream = new ByteArrayInputStream(contents.getBytes("UTF-8"));
</span><span class='line'>indexHtml.create(fileStream, false, null);</span>

If you have trouble seeing the script code try this gist

Comments

Copyright © 2015 - Ruben Laguna - Powered by Octopress