/*
* Copyright 2010 Android ORM projects.
*
* Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
*
* 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 cn.ieclipse.aorm.eclipse.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.IWorkbenchWizard;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.LegacyResourceSupport;
import org.eclipse.ui.internal.util.Util;
/**
* The is abstract "Open Wizard" action class. defining the wizard size,
* initialize the selection.
*
* @author Jamling
*
*/
public abstract class OpenWizardAction implements
IWorkbenchWindowActionDelegate, IObjectActionDelegate {
private static final int SIZING_WIZARD_WIDTH = 500;
private static final int SIZING_WIZARD_HEIGHT = 500;
private IWorkbenchWizard mWizard;
private int mDialogResult;
private ISelection mSelection;
private IWorkbench mWorkbench;
public IWorkbenchWizard getWizard() {
return this.mWizard;
}
public int getDialogResult() {
return this.mDialogResult;
}
public void dispose() {
}
public void init(IWorkbenchWindow window) {
}
public void run(IAction action) {
IWorkbench workbench = (this.mWorkbench != null) ? this.mWorkbench
: PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
ISelection selection = this.mSelection;
if (selection == null) {
selection = window.getSelectionService().getSelection();
}
IStructuredSelection selectionToPass = StructuredSelection.EMPTY;
if (selection instanceof IStructuredSelection) {
selectionToPass = (IStructuredSelection) selection;
} else {
IWorkbenchPart part = window.getPartService().getActivePart();
if (part instanceof IEditorPart) {
IEditorInput input = ((IEditorPart) part).getEditorInput();
Class fileClass = LegacyResourceSupport.getFileClass();
if ((input != null) && (fileClass != null)) {
Object file = Util.getAdapter(input, fileClass);
if (file != null) {
selectionToPass = new StructuredSelection(file);
}
}
}
}
this.mWizard = instanciateWizard(action);
this.mWizard.init(workbench, selectionToPass);
Shell parent = window.getShell();
WizardDialog dialog = new WizardDialog(parent, this.mWizard);
dialog.create();
// Point defaultSize = dialog.getShell().getSize();
// dialog.getShell().setSize(
// Math.max(500, defaultSize.x),
// Math.max(500, defaultSize.y));
window.getWorkbench()
.getHelpSystem()
.setHelp(dialog.getShell(),
"org.eclipse.ui.new_wizard_shortcut_context");
this.mDialogResult = dialog.open();
}
protected abstract IWorkbenchWizard instanciateWizard(IAction paramIAction);
public void selectionChanged(IAction action, ISelection selection) {
this.mSelection = selection;
}
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
this.mWorkbench = targetPart.getSite().getWorkbenchWindow()
.getWorkbench();
}
}