Closed

Simple Eclipse Plugin

This project was awarded to itripunovic for $102 USD.

Get free quotes for a project like this
Employer working
Awarded to:
Project Budget
$100-$120 USD
Total Bids
3
Project Description

Anyone with basic Eclipse plugin writing experience can do this: write a plugin clone of a NetBeans plugin (SourceForge project 'netbeanssvsplug') which acts as trivial bridge between a provided communication front end, and Eclipse's simplest (JDT) Java editor support.


The bridge needs to translate incoming "view source" and "goto line" commands to actual logic performing these operations.


## Deliverables






**Eclipse SourceViewerService ("SVS") Plugin Requirements**



(C) Copyright Software Pearls BVBA, v1.0 02-Jan-2009



**Introduction**



Modern Java IDEs such as Eclipse feature state-of-the-art Java source code viewing capabilities which third-party programs (such as other standalone software development tools) may want to exploit. None of the main IDEs expose formal (external) scripting facilities to allow external tools to exploit their editors in a platform-neutral manner. This project aims to address this lack of external editor controllability for one particular IDE by specifying the requirements for a new plugin for the targetted IDE.



**Target IDE:** Eclipse (version 3.3, minimum)



**Main Requirements**



Writing and publishing of an open source Eclipse plugin allowing external programs to address Eclipse to open/view any Java type known to Eclipse, and subsequently navigate to any legal line within the type's source code.



Publication of plugin should be done as a SourceForge project, as an Update Site URL, and the plugin should additionally be published and listed in the [url removed, login to view] plugins repository.



**Detailed Requirements**



The plugin will act as bridge between a (provided) TCP communcation front-end, and some plugin-specific logic to open/view a Java type and navigate to any line within the file.



The plugin will implement the following Java interface:



public interface JavaEditorBridge {



/**

* View the specified Java type.

*

* @param fullyQualifiedTypeName eg "[url removed, login to view]"

* @return true if operation succeeded, false otherwise

*/

boolean viewType(String fullyQualifiedTypeName);



/**

* For the currently active source code editor, navigate to the specified line number.

*

* @param lineNumber a positive integer

* @return true if goto succeeded, false otherwise

*/

boolean gotoLine(int lineNumber);



}



The plugin's initialization logic will register the plugin with an instance of a class provided by Software Pearls, called JavaEditorControlService, using the following logic:



int tcpPortNumber = .... ; ? // obtained from persistent plugin config?



JavaEditorControlService javaEditorControlService = new JavaEditorControlService(this, tcpPortNumber);



[url removed, login to view]();



The instantiated JavaEditorControlService embodies the IDE-neutral communication front-end to the IDE's source viewing capabilities. The integer constructor argument is a plain integer specifying the TCP port number for the service.



**Plugin Configurability**



The TCP port number should be user-configurable from within Eclipse, using the standard Eclipse plugin parameter configuration mechanism (Window > Preferences > SVS, where "SVS" stands for "Source Viewer Service" (plugin).



The default TCP port number should be 5000. Valid values lie within the 1024 .. 65535 range. Only valid values shall be accepted by an input control (eg text field or spinner).



Any change of port number should be accompanied with a message to the user saying that the change will only take effect after the next Eclipse restart.



**Plugin User Interface**



The plugin has no UI for its core functionality. Only the configurability aspect involves some UI (which may be handled by Eclipse).



**Extra Requirements**



- The plug-in shall display its license terms when installing. The license will be the GPL v2 license.



- The top-level Java package for all plugin classes shall be com.softwarepearls.apps.ide.eclipse.



**Project Deliverables**



A SourceForge project containing a Eclipse project with all necessary files to build the plugin.

A standard Eclipse plugin Update Site URL for the plugin.



**Acceptance Test**



The acceptance test will be partly automated by the supplied program, TestSVSPlugin, a JUnit 4 test suite.

If the unit tests stay green, then that part of the acceptance test succeeded. Any other result will be deemed a complete failure of the plugin.



**Acceptance Test Procedure**



*(Any error other than those explicitly stated below occurring at any step results in a failed acceptance test)*



Step A1: Eclipse is started.

Step A2: The plugin installation procedure is started via its Update Site. Eclipse should display the plugin's license, and should report that the plugin is signed.

Step A3: Eclipse is shut down.



Step B1: Eclipse is restarted.

Step B2: The TestEditorControl program is run. This should open several Java type editors in NB, navigate within the source, and complete by saying "OK".



Step C1: The plugin is reconfigured to operate on a different TCP port, say 5001.

Step C2: Eclipse is shut down.



Step D1: Eclipse is restarted.

Step D2: The TestEditorControl program is run. This should fail with an error stating that no contact could be made with the plugin.

Step D3: The TestEditorControl program is run, specifying the same port as used in the previous reconfigure step. The program should complete with OK.

Step D4: Eclipse is shut down.



Step E1: Eclipse is restarted.

Step E2: The plugin is deinstalled.

Step E3: Eclipse is shut down.



Step F1: Eclipse is restarted.

Step F1: The TestEditorControl program is run. This should fail with an error stating that no contact could be made with the plugin.

Looking to make some money?

  • Set your budget and the timeframe
  • Outline your proposal
  • Get paid for your work

Hire Freelancers who also bid on this project

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online