Ant buildfile refactoring

Detailed Requirements (according to feature request):

  1. Extract simple task – user can select task (or presetdef) and extract it to new presetdef. Show warning to user when he wants to redefine an existing task in the default namespace. Also he should see warning when he wants to declare the tasks not in a new namespace. Start work on this. Skip from voting.

  1. Extract tasks (or single task) to macrodef – user select tasks and extract it to new macrodef. User can specify which attributes he would like to add. Also user can add text (as nested element). Show warning to user when he wants to declare the macrodef not in a new namespace.

  1. Extract script to scriptdef – user select script task and extract it to new scriptdef. User can specify which attributes he would like to add. Show warning to user when he wants to declare the scriptdef not in a new namespace.

  1. Introduce attributes for macrodefs (direct analogue from Java refactoring – introduce local variables): user select any value inside macrodef and introduce new attribute for it. 

  1. Convert <presetdef> to <macrodef>. User select any presetdef and refactor it: rename <presetdef> to <macrodef> and include the <sequential> container.

  1. Rename property – like renaming any Java local variables/constants/classes etc. This one practically finished. Skip from voting.

  1. Rename attributes at presetdefs and macrodefs. This one practically finished. Skip from voting.

  1. Rename presetdefs and macrodefs. This one practically finished. Skip from voting.

  1. Extract property (direct analogue from Java refactoring – introduce local variables) – user select an attribute value and it will introduce a property with that value.

  1. Property bundle (like I18N-stuff) - Eclipse gives a list with all properties - user select the properties to put into the new build.properties (or with any another name) file - build.properties will be created and load into the build file.

  1. Pull up / push down (in Java code this means moving between a class and it`s parent). Here it would move between the actual buildfile and an <import>ed one. If there are several imported files – user can select in which one move target. The same action can be performed with Drag&Drop in the Outline View (drag target on <import>) or Package Explorer.