UseCompoundDrawableDetectorFix.java revision d6124a176326169bc87cb29823ca2dc906689680
1fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye/* 2fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * Copyright (C) 2012 The Android Open Source Project 3fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * 4fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * Licensed under the Eclipse Public License, Version 1.0 (the "License"); 5fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * you may not use this file except in compliance with the License. 6fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * You may obtain a copy of the License at 7fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * 8fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * http://www.eclipse.org/org/documents/epl-v10.php 9fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * 10fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * Unless required by applicable law or agreed to in writing, software 11fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * distributed under the License is distributed on an "AS IS" BASIS, 12fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * See the License for the specific language governing permissions and 14fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye * limitations under the License. 15fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye */ 16fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 17fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyepackage com.android.ide.eclipse.adt.internal.lint; 18fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 19fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport com.android.ide.eclipse.adt.AdtPlugin; 20fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport com.android.ide.eclipse.adt.AdtUtils; 21fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate; 22fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport com.android.ide.eclipse.adt.internal.editors.layout.refactoring.UseCompoundDrawableRefactoring; 23fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport com.android.tools.lint.checks.UseCompoundDrawableDetector; 24fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 25fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.core.resources.IFile; 26fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.core.resources.IMarker; 27fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.jface.text.IDocument; 28fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.jface.text.ITextSelection; 29fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.jface.text.TextSelection; 30fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.ltk.ui.refactoring.RefactoringWizard; 31fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation; 32fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.swt.graphics.Image; 33fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.ui.IWorkbenchWindow; 34fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.ui.PlatformUI; 35fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; 36fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbyeimport org.w3c.dom.Node; 37fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 38fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye/** Quickfix for the {@link UseCompoundDrawableDetector} */ 39fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye@SuppressWarnings("restriction") // DOM model 40d6124a176326169bc87cb29823ca2dc906689680Tor Norbyeclass UseCompoundDrawableDetectorFix extends DocumentFix { 41fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye protected UseCompoundDrawableDetectorFix(String id, IMarker marker) { 42fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye super(id, marker); 43fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye } 44fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 45fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye @Override 46fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye public String getDisplayString() { 47fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye return "Convert to a compound drawable"; 48fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye } 49fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 50fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye @Override 51fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye public Image getImage() { 52fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye return AdtPlugin.getAndroidLogo(); 53fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye } 54fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 55fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye @Override 56fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye public boolean needsFocus() { 57fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye return false; 58fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye } 59fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 60fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye @Override 61fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye public boolean isCancelable() { 62fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye return false; 63fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye } 64fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 65fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye @Override 66fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye public boolean isBulkCapable() { 67fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye return false; 68fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye } 69fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 70fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye @Override 71fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye protected void apply(IDocument document, IStructuredModel model, Node node, 72fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye int start, int end) { 73fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 74fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye // Invoke refactoring 75fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye LayoutEditorDelegate delegate = 76fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye LayoutEditorDelegate.fromEditor(AdtUtils.getActiveEditor()); 77fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye 78fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye if (delegate != null) { 79fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye IFile file = (IFile) mMarker.getResource(); 80fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye ITextSelection textSelection = new TextSelection(start, 81fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye end - start); 82fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye UseCompoundDrawableRefactoring refactoring = 83fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye new UseCompoundDrawableRefactoring(file, delegate, textSelection, null); 84fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye RefactoringWizard wizard = refactoring.createWizard(); 85fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye RefactoringWizardOpenOperation op = 86fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye new RefactoringWizardOpenOperation(wizard); 87fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye try { 88fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye IWorkbenchWindow window = PlatformUI.getWorkbench(). 89fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye getActiveWorkbenchWindow(); 90fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye op.run(window.getShell(), wizard.getDefaultPageTitle()); 91fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye } catch (InterruptedException e) { 92fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye } 93fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye } 94fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye } 95fefa8b7d47b787d2250dc2fd0f35cac5540241e2Tor Norbye} 96