| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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 org.apache.axis2.tool.service.eclipse.ui; |
| |
| |
| import org.apache.axis2.tool.service.bean.WizardBean; |
| import org.apache.axis2.tool.service.control.Controller; |
| import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.NullProgressMonitor; |
| import org.eclipse.jface.dialogs.MessageDialog; |
| import org.eclipse.jface.viewers.IStructuredSelection; |
| import org.eclipse.jface.wizard.IWizardPage; |
| import org.eclipse.jface.wizard.Wizard; |
| import org.eclipse.ui.INewWizard; |
| import org.eclipse.ui.IWorkbench; |
| import org.eclipse.ui.actions.WorkspaceModifyOperation; |
| |
| import java.lang.reflect.InvocationTargetException; |
| |
| |
| public class ServiceArchiveWizard extends Wizard implements INewWizard { |
| |
| |
| private ClassFileLocationPage classFileLocationPage; |
| private WSDLFileSelectionPage wsdlFileSelectionPage; |
| private ServiceXMLFileSelectionPage serviceXMLFileSelectionPage; |
| private ServiceXMLGenerationPage serviceXMLGenerationPage; |
| private ServiceArchiveOutputLocationPage serviceArchiveOutputLocationPage; |
| private LibraryAddingPage libPage; |
| |
| private boolean updateServiceGenerationStatus; |
| private String classFileLocation; |
| private String wsdlFileGenerationStatus; |
| |
| |
| |
| /** |
| * @return Returns the wsdlFileGenerationStatus. |
| */ |
| public String getWsdlFileGenerationStatus() { |
| return wsdlFileGenerationStatus; |
| } |
| /** |
| * @param message The wsdlFileGenerationStatus to set. |
| */ |
| public void updateWsdlFileGenerationStatus(String message) { |
| this.wsdlFileGenerationStatus = message; |
| } |
| public String getClassFileLocation(){ |
| return classFileLocation; |
| } |
| |
| //get the lib file list |
| public String[] getLibFileList(){ |
| return libPage.getBean().getFileList(); |
| } |
| |
| public void setClassFileLocation(String location){ |
| this.classFileLocation = location; |
| } |
| |
| public void updateServiceXMLGeneration(boolean status){ |
| serviceXMLGenerationPage.setPageComplete(status); |
| } |
| /** |
| * |
| */ |
| public ServiceArchiveWizard() { |
| super(); |
| setNeedsProgressMonitor(true); |
| setWindowTitle(ServiceArchiver.getResourceString("main.title")); |
| } |
| |
| public boolean canFinish() { |
| IWizardPage[] pages = getPages(); |
| AbstractServiceWizardPage wizardPage = null; |
| for (int i = 0; i < pages.length; i++) { |
| wizardPage = (AbstractServiceWizardPage) pages[i]; |
| if (wizardPage.getName().equals("page4.name")){ |
| if (!wizardPage.getWizardComplete() ) { |
| return false; |
| } |
| } |
| } |
| return true; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.wizard.IWizard#getNextPage(org.eclipse.jface.wizard.IWizardPage) |
| */ |
| public IWizardPage getNextPage(IWizardPage page) { |
| AbstractServiceWizardPage thisPage = (AbstractServiceWizardPage)page; |
| AbstractServiceWizardPage nextPage = (AbstractServiceWizardPage)super.getNextPage(page); |
| while (thisPage!=null && thisPage.isSkipNext()) { |
| if (nextPage!=null) { |
| thisPage = nextPage; |
| nextPage = (AbstractServiceWizardPage)super.getNextPage(nextPage); |
| }else{ |
| break; |
| } |
| } |
| return nextPage; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.wizard.IWizard#addPages() |
| */ |
| public void addPages() { |
| classFileLocationPage = new ClassFileLocationPage(); |
| this.addPage(classFileLocationPage); |
| wsdlFileSelectionPage = new WSDLFileSelectionPage(); |
| this.addPage(wsdlFileSelectionPage); |
| libPage = new LibraryAddingPage(); |
| this.addPage(libPage); |
| serviceXMLFileSelectionPage = new ServiceXMLFileSelectionPage(); |
| this.addPage(serviceXMLFileSelectionPage); |
| serviceXMLGenerationPage = new ServiceXMLGenerationPage(); |
| this.addPage(serviceXMLGenerationPage); |
| serviceArchiveOutputLocationPage = new ServiceArchiveOutputLocationPage(); |
| this.addPage(serviceArchiveOutputLocationPage); |
| } |
| |
| /* (non-Javadobc) |
| * @see org.eclipse.jface.wizard.IWizard#performFinish() |
| */ |
| public boolean performFinish() { |
| |
| WorkspaceModifyOperation op = new WorkspaceModifyOperation() |
| { |
| protected void execute(IProgressMonitor monitor) |
| throws CoreException , InvocationTargetException, InterruptedException{ |
| if (monitor == null) |
| monitor = new NullProgressMonitor(); |
| |
| /* |
| * "7" is the total amount of steps, see below monitor.worked(amount) |
| */ |
| monitor.beginTask(ServiceArchiver.getResourceString("wizard.codegen.startmsg"), 8); |
| |
| try |
| { |
| monitor.worked(1); |
| // create a wizard bean |
| WizardBean wizBean = new WizardBean(); |
| monitor.worked(1); |
| wizBean.setPage1bean(classFileLocationPage.getBean()); |
| monitor.worked(1); |
| wizBean.setWsdlBean(wsdlFileSelectionPage.getBean()); |
| monitor.worked(1); |
| wizBean.setPage2bean(serviceXMLGenerationPage.getBean(serviceXMLFileSelectionPage.getBean())); |
| monitor.worked(1); |
| wizBean.setLibraryBean(libPage.getBean()); |
| monitor.worked(1); |
| wizBean.setPage3bean(serviceArchiveOutputLocationPage.getBean()); |
| monitor.worked(1); |
| new Controller().process(wizBean); |
| monitor.worked(1); |
| } |
| catch (Throwable e) |
| { |
| throw new InterruptedException(e.getMessage() ); |
| } |
| |
| monitor.done(); |
| } |
| }; |
| |
| /* |
| * Start the generation as new Workbench Operation, so the user |
| * can see the progress and, if needed, can stop the operation. |
| */ |
| try |
| { |
| getContainer().run(false, true, op); |
| showSuccessMessage(ServiceArchiver.getResourceString("wizard.codegen.success")); |
| return true; |
| } |
| catch (InvocationTargetException e1) |
| { |
| showErrorMessage(e1.getTargetException().getMessage()); |
| return false; |
| } |
| catch (InterruptedException e1) |
| { |
| showErrorMessage(e1.getMessage()); |
| return false; |
| } |
| catch (Exception e) |
| { |
| showErrorMessage(ServiceArchiver.getResourceString("wizard.codegen.unknown.error") + " "+ e.getMessage()); |
| return false; |
| } |
| |
| } |
| |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection) |
| */ |
| public void init(IWorkbench workbench, IStructuredSelection selection) { |
| // TODO Auto-generated method stub |
| |
| } |
| |
| private void showErrorMessage(String message) { |
| MessageDialog.openError(this.getShell(), ServiceArchiver.getResourceString("wizard.codegen.error.msg.heading"), message); |
| } |
| |
| private void showSuccessMessage(String message) { |
| MessageDialog.openInformation(this.getShell(), ServiceArchiver.getResourceString("wizard.codegen.success.msg.heading"), message); |
| } |
| } |