1 11 package org.eclipse.ltk.internal.ui.refactoring.scripting; 12 13 import java.net.URI ; 14 15 import org.eclipse.core.resources.IFile; 16 17 import org.eclipse.ltk.core.refactoring.RefactoringDescriptorProxy; 18 import org.eclipse.ltk.core.refactoring.history.RefactoringHistory; 19 20 import org.eclipse.ltk.internal.ui.refactoring.RefactoringPluginImages; 21 import org.eclipse.ltk.internal.ui.refactoring.RefactoringUIPlugin; 22 23 import org.eclipse.jface.dialogs.IDialogSettings; 24 import org.eclipse.jface.viewers.IStructuredSelection; 25 import org.eclipse.jface.wizard.IWizardContainer; 26 27 import org.eclipse.ui.IWorkbench; 28 import org.eclipse.ui.IWorkbenchWizard; 29 30 import org.eclipse.ltk.ui.refactoring.history.RefactoringHistoryControlConfiguration; 31 import org.eclipse.ltk.ui.refactoring.history.RefactoringHistoryWizard; 32 33 38 public final class ApplyRefactoringScriptWizard extends RefactoringHistoryWizard implements IWorkbenchWizard { 39 40 41 private final class RefactoringHistoryProxy extends RefactoringHistory { 42 43 46 public RefactoringDescriptorProxy[] getDescriptors() { 47 if (fRefactoringHistory != null) 48 return fRefactoringHistory.getDescriptors(); 49 return new RefactoringDescriptorProxy[0]; 50 } 51 52 55 public boolean isEmpty() { 56 final RefactoringDescriptorProxy[] proxies= getDescriptors(); 57 if (proxies != null) 58 return proxies.length == 0; 59 return true; 60 } 61 62 65 public RefactoringHistory removeAll(final RefactoringHistory history) { 66 throw new UnsupportedOperationException (); 67 } 68 } 69 70 71 private static String DIALOG_SETTINGS_KEY= "ApplyRefactoringScriptWizard"; 73 74 private boolean fNewSettings; 75 76 77 private RefactoringHistory fRefactoringHistory= null; 78 79 80 private URI fScriptLocation= null; 81 82 83 private ApplyRefactoringScriptWizardPage fWizardPage; 84 85 88 public ApplyRefactoringScriptWizard() { 89 super(ScriptingMessages.ApplyRefactoringScriptWizard_caption, ScriptingMessages.ApplyRefactoringScriptWizard_title, ScriptingMessages.ApplyRefactoringScriptWizard_description); 90 setInput(new RefactoringHistoryProxy()); 91 setDefaultPageImageDescriptor(RefactoringPluginImages.DESC_WIZBAN_APPLY_SCRIPT); 92 final IDialogSettings settings= RefactoringUIPlugin.getDefault().getDialogSettings(); 93 final IDialogSettings section= settings.getSection(DIALOG_SETTINGS_KEY); 94 if (section == null) 95 fNewSettings= true; 96 else { 97 fNewSettings= false; 98 setDialogSettings(section); 99 } 100 setConfiguration(new RefactoringHistoryControlConfiguration(null, false, false) { 101 102 public String getProjectPattern() { 103 return ScriptingMessages.ApplyRefactoringScriptWizard_project_pattern; 104 } 105 106 public String getWorkspaceCaption() { 107 return ScriptingMessages.ApplyRefactoringScriptWizard_workspace_caption; 108 } 109 }); 110 } 111 112 115 protected void addUserDefinedPages() { 116 fWizardPage= new ApplyRefactoringScriptWizardPage(this); 117 addPage(fWizardPage); 118 } 119 120 123 public boolean canFinish() { 124 return super.canFinish() && fRefactoringHistory != null; 125 } 126 127 132 public RefactoringHistory getRefactoringHistory() { 133 return fRefactoringHistory; 134 } 135 136 141 public URI getRefactoringScript() { 142 return fScriptLocation; 143 } 144 145 148 public void init(final IWorkbench workbench, final IStructuredSelection selection) { 149 if (selection != null && selection.size() == 1) { 150 final Object element= selection.getFirstElement(); 151 if (element instanceof IFile) { 152 final IFile file= (IFile) element; 153 if (file.getFileExtension().equals(ScriptingMessages.CreateRefactoringScriptWizardPage_script_extension)) 154 fScriptLocation= file.getRawLocationURI(); 155 } 156 } 157 } 158 159 162 public boolean performFinish() { 163 if (fNewSettings) { 164 final IDialogSettings settings= RefactoringUIPlugin.getDefault().getDialogSettings(); 165 IDialogSettings section= settings.getSection(DIALOG_SETTINGS_KEY); 166 section= settings.addNewSection(DIALOG_SETTINGS_KEY); 167 setDialogSettings(section); 168 } 169 fWizardPage.performFinish(); 170 return super.performFinish(); 171 } 172 173 179 public void setRefactoringHistory(final RefactoringHistory history) { 180 fRefactoringHistory= history; 181 final IWizardContainer wizard= getContainer(); 182 if (wizard.getCurrentPage() != null) 183 wizard.updateButtons(); 184 } 185 186 192 public void setRefactoringScript(final URI uri) { 193 fScriptLocation= uri; 194 final IWizardContainer wizard= getContainer(); 195 if (wizard.getCurrentPage() != null) 196 wizard.updateButtons(); 197 } 198 } 199 | Popular Tags |