eclipse plugin: Tweak the internal_addNode function...

...to correctly set the new node's index and take in account all cases
when adding it to the list
This commit is contained in:
Timotei Dolean 2011-07-10 20:47:47 +00:00
parent 266d32cf58
commit 9969b98ad1
2 changed files with 29 additions and 3 deletions

View file

@ -266,15 +266,41 @@ public class DependencyListBuilder implements Serializable
*/
private DependencyListNode internal_addNode( IFile file )
{
DependencyListNode newNode = new DependencyListNode( file, currentIndex_ );
currentIndex_ += DependencyListNode.INDEX_STEP;
DependencyListNode newNode = new DependencyListNode( file, -1 );
if ( previous_ != null ){
// inserting is done between 2 nodes
if ( previous_.getNext( ) != null ){
newNode.setIndex(
(previous_.getIndex( ) +
previous_.getNext( ).getIndex( )) / 2 );
newNode.setNext( previous_.getNext( ) );
previous_.getNext( ).setPrevious( newNode );
} else {
newNode.setIndex( currentIndex_ );
currentIndex_ += DependencyListNode.INDEX_STEP;
}
previous_.setNext( newNode );
newNode.setPrevious( previous_ );
} else {
// no previous yet (== null)
// so we're making this the root node for this list
// check if we had a previous root node
DependencyListNode root = list_.get( ROOT_NODE_KEY );
if ( root != null ) {
root.setPrevious( newNode );
newNode.setNext( root );
newNode.setIndex( root.getIndex( ) - DependencyListNode.INDEX_STEP );
} else {
newNode.setIndex( currentIndex_ );
currentIndex_ += DependencyListNode.INDEX_STEP;
}
list_.put( ROOT_NODE_KEY, newNode ); //$NON-NLS-1$
}

View file

@ -82,7 +82,7 @@ public class DependencyListNode implements Serializable
* Sets a new index for this node
* @param index The index to set
*/
public void setIndex( int index )
protected void setIndex( int index )
{
index_ = index;