/*******************************************************************************
* Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
*******************************************************************************/
package com.cisco.yangide.ext.refactoring.actions;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IWorkbenchSite;
import com.cisco.yangide.core.YangModelException;
import com.cisco.yangide.editor.editors.YangEditor;
import com.cisco.yangide.ext.refactoring.code.ChangeRevisionRefactoring;
import com.cisco.yangide.ext.refactoring.nls.Messages;
import com.cisco.yangide.ext.refactoring.ui.ChangeRevisionRefactoringWizard;
/**
* @author Konstantin Zaitsev
* @date Aug 18, 2014
*/
public class ChangeRevisionAction extends SelectionDispatchAction {
/** Reference to the editor. */
private YangEditor editor;
public ChangeRevisionAction(IWorkbenchSite site) {
super(site);
setText(Messages.ChangeRevisionAction_text);
setToolTipText(Messages.ChangeRevisionAction_description);
setDescription(Messages.ChangeRevisionAction_description);
}
public ChangeRevisionAction(YangEditor editor) {
this(editor.getSite());
this.editor = editor;
setEnabled(editor != null);
}
@Override
public void selectionChanged(ISelection selection) {
setEnabled(editor != null);
}
@Override
public void run(ITextSelection selection) {
if (editor.getEditorInput() != null && editor.getEditorInput() instanceof IFileEditorInput) {
IFile file = ((IFileEditorInput) editor.getEditorInput()).getFile();
try {
ChangeRevisionRefactoring refactoring = new ChangeRevisionRefactoring(file, editor.getModule());
ChangeRevisionRefactoringWizard wizard = new ChangeRevisionRefactoringWizard(refactoring);
RefactoringWizardOpenOperation op = new RefactoringWizardOpenOperation(wizard);
op.run(getShell(), Messages.ChangeRevisionAction_name);
} catch (InterruptedException | YangModelException e) {
// do nothing
}
}
}
}