upload tizen1.0 source
[sdk/ide/product.git] / org.eclipse.cdt.ui / src / org / eclipse / cdt / internal / ui / refactoring / ChangeTreeSet.java
1 /*******************************************************************************
2  * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik  
3  * Rapperswil, University of applied sciences and others
4  * All rights reserved. This program and the accompanying materials 
5  * are made available under the terms of the Eclipse Public License v1.0 
6  * which accompanies this distribution, and is available at 
7  * http://www.eclipse.org/legal/epl-v10.html  
8  *  
9  * Contributors: 
10  * Institute for Software - initial API and implementation
11  *******************************************************************************/
12 package org.eclipse.cdt.internal.ui.refactoring;
13
14 import java.util.Comparator;
15 import java.util.TreeSet;
16
17 import org.eclipse.ltk.core.refactoring.Change;
18 import org.eclipse.ltk.core.refactoring.CompositeChange;
19
20 import org.eclipse.cdt.ui.refactoring.CTextFileChange;
21
22 /**
23  * @author Emanuel Graf
24  *
25  */
26 public class ChangeTreeSet {
27         
28         private static final class ChangePositionComparator implements Comparator<CTextFileChange> {
29                 public int compare(CTextFileChange o1, CTextFileChange o2) {
30                         if(o1.getFile().equals(o2.getFile())){
31                                 return o2.getEdit().getOffset() - o1.getEdit().getOffset();
32                         }
33                         return o2.getFile().hashCode() - o1.getFile().hashCode();
34                 }
35         }
36         
37         private final TreeSet<CTextFileChange> changes = new TreeSet<CTextFileChange>(new ChangePositionComparator());
38         
39         public void add(CTextFileChange change) {
40                 changes.add(change);
41         }
42         
43         public CompositeChange getCompositeChange(String name) {
44                 CompositeChange allChanges = new CompositeChange(name);
45                 
46                 for (Change change : changes) {
47                         allChanges.add(change);
48                 }
49                 return allChanges;
50         }
51
52         @Override
53         public String toString() {
54                 return changes.toString();
55         }
56 }