KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > terracotta > dso > refactoring > DeleteTypeChange


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package org.terracotta.dso.refactoring;
5
6 import org.eclipse.core.resources.IProject;
7 import org.eclipse.core.runtime.CoreException;
8 import org.eclipse.core.runtime.IProgressMonitor;
9 import org.eclipse.core.runtime.OperationCanceledException;
10 import org.eclipse.jdt.core.IField;
11 import org.eclipse.jdt.core.IType;
12 import org.eclipse.jdt.core.JavaModelException;
13 import org.eclipse.ltk.core.refactoring.Change;
14 import org.eclipse.ltk.core.refactoring.CompositeChange;
15 import org.eclipse.ltk.core.refactoring.RefactoringStatus;
16
17 import org.terracotta.dso.ConfigurationHelper;
18 import org.terracotta.dso.TcPlugin;
19 import org.terracotta.dso.editors.ConfigurationEditor;
20 import com.terracottatech.config.TcConfigDocument.TcConfig;
21
22 public class DeleteTypeChange extends CompositeChange {
23   private IType fType;
24   private TcConfig fOrigConfig;
25     
26   public DeleteTypeChange(IType type) {
27     super("TCDeleteTypeConfigUpdate");
28
29     fType = type;
30
31     TcPlugin plugin = TcPlugin.getDefault();
32     IProject project = type.getJavaProject().getProject();
33     ConfigurationHelper configHelper = plugin.getConfigurationHelper(project);
34     IField[] fields;
35     IType[] types;
36     
37     fOrigConfig = (TcConfig)plugin.getConfiguration(project).copy();
38
39     try {
40       fields = type.getFields();
41       for(int i = 0; i < fields.length; i++) {
42         if(configHelper.isRoot(fields[i])) {
43           add(new BaseDeleteFieldChange(fields[i]));
44         }
45       }
46     } catch(JavaModelException jme) {/**/}
47     
48     try {
49       types = type.getTypes();
50       for(int i = 0; i < types.length; i++) {
51         add(new BaseDeleteTypeChange(types[i]));
52       }
53     } catch(JavaModelException jme) {/**/}
54   }
55   
56   public Object JavaDoc getModifiedElement() {
57     return null;
58   }
59   
60   public String JavaDoc getName() {
61     return "TCDeleteTypeConfigUpdate";
62   }
63   
64   public void initializeValidationData(IProgressMonitor pm) {/**/}
65   
66   public RefactoringStatus isValid(IProgressMonitor pm)
67     throws OperationCanceledException
68   {
69     return new RefactoringStatus();
70   }
71   
72   public Change perform(IProgressMonitor pm) throws CoreException {
73     TcPlugin plugin = TcPlugin.getDefault();
74     IProject project = fType.getJavaProject().getProject();
75     ConfigurationHelper configHelper = plugin.getConfigurationHelper(project);
76     
77     Change undoChange = super.perform(pm);
78
79     configHelper.baseEnsureNotAdaptable(fType);
80     configHelper.baseEnsureNotExcluded(fType);
81     
82     ConfigurationEditor editor = configHelper.getConfigurationEditor();
83     if(editor != null) {
84       editor.updateInstrumentedClassesPanel();
85     }
86     else {
87       configHelper.persistConfiguration();
88     }
89
90     return undoChange;
91   }
92
93   protected Change createUndoChange(Change[] childUndos) {
94     IProject project = fType.getJavaProject().getProject();
95     return new ConfigUndoneChange(project, fOrigConfig);
96   }
97 }
98
Popular Tags