1 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 getModifiedElement() { 57 return null; 58 } 59 60 public String 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 |