{"id":563,"date":"2012-11-08T15:14:42","date_gmt":"2012-11-08T09:44:42","guid":{"rendered":"http:\/\/ramkulkarni.com\/blog\/?p=563"},"modified":"2012-11-08T15:14:42","modified_gmt":"2012-11-08T09:44:42","slug":"implementing-eclipse-editor-plugin","status":"publish","type":"post","link":"http:\/\/ramkulkarni.com\/blog\/implementing-eclipse-editor-plugin\/","title":{"rendered":"Implementing Eclipse Editor Plugin"},"content":{"rendered":"<link rel=\"stylesheet\" type=\"text\/css\" href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/presentation.css\"><script type=\"text\/javascript\" src=\"http:\/\/ramkulkarni.com\/temp\/jquery-1.7.1.js\"><\/script><script type=\"text\/javascript\" src=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/blog_js_script.js\"><\/script><script type=\"text\/javascript\">\/\/ <![CDATA[\nstartScript();\n\/\/ ]]><\/script>\n<p>I had presented a tutorial on implementing Eclipse Editor plugin a couple of years ago. Recently when I started implementing a new Eclipse editor, I was looking for that presentation, but couldn&#8217;t find it easily. I like to use my blog as reference for myself, so I thought I would post my Eclipse editor tutorial here.<\/p>\n<p>For the tutorial, I created a new language called VGL (Vector Graphics Language) and built Eclipse editor plugin for it. The language is not important, and just serves the purpose for explaining how to create an  editor. The tutorial starts with defining the language and then incrementally builds features of a typical Eclipse editor. I created separate projects for each step in the tutorial. There are nine Eclipse projects. Download and import project in Eclipse for each step if you want to see how it is built incrementally. The last project contains all the editor features covered in this tutorial. <\/p>\n<p><!--more--><\/p>\n<p>Projects (as Zip files):<\/p>\n<ol>\n<li><a href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/EclipseProjects\/Tutorial%20-%201%20(Parser).zip\" target=\"_blank\">Creating parser for the language<\/a><\/li>\n<li><a href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/EclipseProjects\/Tutorial%20-%202%20(Editor%20Plugin).zip\" target=\"_blank\">Creating Editor plugin<\/a><\/li>\n<li><a href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/EclipseProjects\/Tutorial%20-%202a%20(Code%20Assist).zip\" target=\"_blank\">Code Assist<\/a><\/li>\n<li><a href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/EclipseProjects\/Tutorial%20-%203%20(Error%20Recovery).zip\" target=\"_blank\">Error recovery in parser<\/a><\/li>\n<li><a href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/EclipseProjects\/Tutorial%20-%204%20(Outline).zip\" target=\"_blank\">Code Outline<\/a><\/li>\n<li><a href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/EclipseProjects\/Tutorial%20-%205%20(Reconciler).zip\" target=\"_blank\">Reconciler<\/a><\/li>\n<li><a href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/EclipseProjects\/Tutorial%20-%206%20(Syntax%20Coloring).zip\" target=\"_blank\">Syntax coloring<\/a><\/li>\n<li><a href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/EclipseProjects\/Tutorial%20-7%20(Code%20Folding).zip\" target=\"_blank\">Code Folding<\/a><\/li>\n<li><a href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/EclipseProjects\/Tutorial%20-8%20(Error%20Reporting).zip\" target=\"_blank\">Error reporting<\/a><\/li>\n<li><a href=\"http:\/\/ramkulkarni.com\/temp\/2012-11-07\/EclipseProjects\/Tutorial%20-9%20(Code%20Hyperlink).zip\" target=\"_blank\">Code Hyperlink<\/a><\/li>\n<\/ol>\n<p>I had plans to extend this tutorial to include launcher and debugger (which requires me to implement runtime for the language first), but haven&#8217;t got time to do that yet. May be sometime in future&#8230;<\/p>\n<p>I was evaluating options for putting presentation in my blog. I like to keep all assets of my blog (code, images, presentations etc.) on my hosting server and do not like to have them distributes across multiple sites. So I ruled out hosting options like SlideShare etc. I then decided to implement a simple presentation viewer myself. Turned out, it wasn&#8217;t so difficult. You can see the interface below. All slides are HTML pages. You can navigate to next\/prev slides. If you want to go to a specific slide, type the slide number in the text box and press Enter.The interface is not very fancy, but I think it is good enough for the presentation I wanted to share.<\/p>\n<p>-Ram Kulkarni <\/p>\n<div id=\"frameDiv\" style=\"border:2px;border-color:#000;height:650px;width:600px;border-style:solid;background-color:#CECECE\">\n<div id=\"frameBody\" style=\"position:relative;overflow:auto\"><\/div>\n<div id=\"frameFooter\" style=\"position:relative; text-align: center;\"><span style=\"horizontal-align:center\"><input type=\"button\" id=\"prevBtn\" value=\"Prev\"\/><input type=\"text\" id=\"statusTxt\" value=\"\" style=\"width:45px;\"\/><input type=\"button\" id=\"nextBtn\" value=\"Next\"\/><\/span><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I had presented a tutorial on implementing Eclipse Editor plugin a couple of years ago. Recently when I started implementing a new Eclipse editor, I was looking for that presentation, but couldn&#8217;t find it easily. I like to use my blog as reference for myself, so I thought I would post my Eclipse editor tutorial &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/ramkulkarni.com\/blog\/implementing-eclipse-editor-plugin\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Implementing Eclipse Editor Plugin&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[38,1],"tags":[25,57,58],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2g9O8-95","jetpack-related-posts":[],"_links":{"self":[{"href":"http:\/\/ramkulkarni.com\/blog\/wp-json\/wp\/v2\/posts\/563"}],"collection":[{"href":"http:\/\/ramkulkarni.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ramkulkarni.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ramkulkarni.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ramkulkarni.com\/blog\/wp-json\/wp\/v2\/comments?post=563"}],"version-history":[{"count":0,"href":"http:\/\/ramkulkarni.com\/blog\/wp-json\/wp\/v2\/posts\/563\/revisions"}],"wp:attachment":[{"href":"http:\/\/ramkulkarni.com\/blog\/wp-json\/wp\/v2\/media?parent=563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ramkulkarni.com\/blog\/wp-json\/wp\/v2\/categories?post=563"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ramkulkarni.com\/blog\/wp-json\/wp\/v2\/tags?post=563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}