blob: c103e47dca1fc5bfd6de55e3b3f759a6ee02ff40 [file] [log] [blame]
/*
* 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();
}
}