| /* |
| * Copyright (C) 2011 The Android Open Source Project |
| * |
| * Licensed under the Eclipse Public License, Version 1.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.eclipse.org/org/documents/epl-v10.php |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.android.ide.eclipse.adt.internal.editors.layout.refactoring; |
| |
| import com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate; |
| |
| import org.eclipse.ltk.core.refactoring.Refactoring; |
| import org.eclipse.ltk.ui.refactoring.RefactoringWizard; |
| import org.eclipse.ltk.ui.refactoring.UserInputWizardPage; |
| import org.eclipse.swt.events.ModifyEvent; |
| import org.eclipse.swt.events.ModifyListener; |
| import org.eclipse.swt.events.SelectionAdapter; |
| import org.eclipse.swt.events.SelectionEvent; |
| |
| public abstract class VisualRefactoringWizard extends RefactoringWizard { |
| protected final LayoutEditorDelegate mDelegate; |
| |
| public VisualRefactoringWizard(Refactoring refactoring, LayoutEditorDelegate editor) { |
| super(refactoring, DIALOG_BASED_USER_INTERFACE | PREVIEW_EXPAND_FIRST_NODE); |
| mDelegate = editor; |
| } |
| |
| @Override |
| public boolean performFinish() { |
| mDelegate.getEditor().setIgnoreXmlUpdate(true); |
| try { |
| return super.performFinish(); |
| } finally { |
| mDelegate.getEditor().setIgnoreXmlUpdate(false); |
| mDelegate.refreshXmlModel(); |
| } |
| } |
| |
| protected abstract static class VisualRefactoringInputPage extends UserInputWizardPage { |
| public VisualRefactoringInputPage(String name) { |
| super(name); |
| } |
| |
| /** |
| * Listener which can be attached on any widget in the wizard page to force |
| * modifications of the associated widget to validate the page again |
| */ |
| protected ModifyListener mModifyValidateListener = new ModifyListener() { |
| @Override |
| public void modifyText(ModifyEvent e) { |
| validatePage(); |
| } |
| }; |
| |
| /** |
| * Listener which can be attached on any widget in the wizard page to force |
| * selection changes of the associated widget to validate the page again |
| */ |
| protected SelectionAdapter mSelectionValidateListener = new SelectionAdapter() { |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| validatePage(); |
| } |
| }; |
| |
| protected abstract boolean validatePage(); |
| } |
| } |