/******************************************************************************* * Copyright © 2010, 2013 IBM Corporation 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 * * Contributors: * IBM Corporation - initial API and implementation * *******************************************************************************/ package org.eclipse.edt.ide.rui.visualeditor.internal.wizards.insertwidget; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.Status; import org.eclipse.edt.ide.rui.visualeditor.internal.editor.EvConstants; import org.eclipse.edt.ide.rui.visualeditor.internal.editor.EvDesignOverlay; import org.eclipse.edt.ide.rui.visualeditor.internal.editor.EvDesignOverlayDropLocation; import org.eclipse.edt.ide.rui.visualeditor.internal.nl.Messages; import org.eclipse.edt.ide.rui.visualeditor.internal.views.dataview.model.PageDataNode; import org.eclipse.edt.ide.rui.visualeditor.plugin.Activator; import org.eclipse.jface.viewers.CheckboxTreeViewer; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.progress.IProgressService; public class InsertWidgetWizard extends Wizard { private EvDesignOverlay evDesignOverlay; private EvDesignOverlayDropLocation dropLocation; private InsertWidgetWizardPage insertWidgetWizardPage; public InsertWidgetWizard(PageDataNode selectedEGLNode, EvDesignOverlay evDesignOverlay, EvDesignOverlayDropLocation dropLocation){ setWindowTitle(Messages.NL_IWW_Title); setDefaultPageImageDescriptor(Activator.getImageDescriptor(EvConstants.ICON_INSERT_WIDGET_WIZARD)); this.evDesignOverlay = evDesignOverlay; this.dropLocation = dropLocation; IProject project = evDesignOverlay.getDesignPage().getEditor().getProject(); IEditorInput editorInput = evDesignOverlay.getDesignPage().getEditor().getEditorInput(); insertWidgetWizardPage = new InsertWidgetWizardPage(selectedEGLNode, project, editorInput); } public void addPages() { addPage(insertWidgetWizardPage); } @Override public boolean performFinish() { //get the selected InsertDataNodes CheckboxTreeViewer configureWidgetsTableViewer = insertWidgetWizardPage.getConfigureWidgetsTableViewer(); Object[] checkedElements = configureWidgetsTableViewer.getCheckedElements(); for(int i=0; i<checkedElements.length; i++){ Object checkedElement = checkedElements[i]; if(checkedElement instanceof InsertDataNode){ InsertDataNode insertDataNode = (InsertDataNode)checkedElement; Activator.getDefault().getPreferenceStore().putValue(insertDataNode.getBindingName() + insertDataNode.getPurpose(), insertDataNode.getWidgetType().getName()); if(!InsertWidgetWizardUtil.isAnEmbedRecord(insertDataNode) && !InsertWidgetWizardUtil.isAPrimitiveArrayInRecord(insertDataNode)){ insertDataNode.setGen(true); if(insertDataNode.getWidgetName() == null){ insertDataNode.setWidgetName(insertDataNode.getDefaultWidgetName()); } } } } //generate TreeItem[] treeItems = configureWidgetsTableViewer.getTree().getItems(); if(treeItems != null && treeItems.length > 0){ TreeItem firstTreeItem = treeItems[0]; if(firstTreeItem.getData() instanceof InsertDataNode){ InsertDataNode rootInsertDataNode = (InsertDataNode)firstTreeItem.getData(); if(rootInsertDataNode.isGen()){ IProgressService progressService = PlatformUI.getWorkbench().getProgressService(); try { progressService.runInUI(PlatformUI.getWorkbench().getProgressService(), new GenerationProgress(rootInsertDataNode, evDesignOverlay, dropLocation), ResourcesPlugin.getWorkspace().getRoot()); } catch (InvocationTargetException e) { Activator.getDefault().getLog().log(new Status(Status.ERROR, Activator.PLUGIN_ID, "InvocationTargetException while insert widget.", e)); } catch (InterruptedException e) { Activator.getDefault().getLog().log(new Status(Status.ERROR, Activator.PLUGIN_ID, "InterruptedException while insert widget.", e)); } } } } return true; } }