/******************************************************************************* * Copyright (c) 2010 Herman Lee. * 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: * Herman Lee - initial API and implementation ******************************************************************************/ package ca.uwaterloo.gsd.fsml.ecore; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; public class EcoreFeatureGroupWizard extends Wizard implements INewWizard { public static final String WIZARD_CANCELED = "WIZARDCANCELED"; // workbench selection when the wizard was started private Object returnValue = null; // the workbench instance protected IWorkbench workbench; protected EcoreFeatureGroupPage ecoreFmpFeatureGroupPage; public EcoreFeatureGroupWizard() { this.setWindowTitle("Ecore Fmp Attribute Value"); } public void init(IWorkbench workbench) { this.workbench = workbench; } public boolean canFinish() { return ecoreFmpFeatureGroupPage.canFinish; } public boolean performCancel() { returnValue = WIZARD_CANCELED; return true; } public boolean performFinish() { returnValue = ecoreFmpFeatureGroupPage.featureGroupCombo.getText(); // try{ // returnValue = this.determineReturnValueFromWizard(attribute.getEType().getInstanceClassName()); // } // catch (NumberFormatException e){ // ecoreFmpAttributeValuePage.setErrorMessage("There was a number format exception. Please enter a correct value."); // return false; // } // catch (Exception e){ // if (ecoreFmpAttributeValuePage.classConstructor == null){ // ecoreFmpAttributeValuePage.setErrorMessage("This attribute can not be constructed since it has no primitive constructor"); // } // else{ // ecoreFmpAttributeValuePage.setErrorMessage("There was a problem during attribute instantiation. Please cancel and try again."); // } // return false; // } return true; } // private Object determineReturnValueFromWizard(String instanceTypeString) throws NumberFormatException,Exception { // try{ // if (attribute.getEType().getInstanceClass().isPrimitive() || attribute.getEType().getInstanceClass().equals(String.class)){ // if (attribute.getEType().getInstanceClassName().equals("boolean")){ // return this.getObjectFromClassStringAndValueString(attribute.getEType().getInstanceClassName(), ecoreFmpAttributeValuePage.booleanCombo.getText()); // } // else{ // return this.getObjectFromClassStringAndValueString(attribute.getEType().getInstanceClassName(), ecoreFmpAttributeValuePage.valueText.getText()); // } // } // else{ // //otherwise its a non primitive // ArrayList<Text> paramValues = ecoreFmpAttributeValuePage.constructorParameters; // Object[] paramObjects = new Object[paramValues.size()]; // Constructor returnValueConstructor = ecoreFmpAttributeValuePage.classConstructor; // for (int paramIndex = 0; paramIndex < paramValues.size();paramIndex++){ // paramObjects[paramIndex] = this.getObjectFromClassStringAndValueString(returnValueConstructor.getParameterTypes()[paramIndex].getName(),paramValues.get(paramIndex).getText()); // } // if (returnValueConstructor != null){ // return returnValueConstructor.newInstance(paramObjects); // } // else{ // throw new Exception("No Primitive Constructors found."); // } // } // } // catch (NumberFormatException e){ // throw e; // } // catch (InvocationTargetException e){ // if (e.getTargetException() instanceof NumberFormatException){ // throw (NumberFormatException)e.getTargetException(); // } // throw e; // } // catch (Exception e){ // throw e; // } // } private Object getObjectFromClassStringAndValueString(String className, String stringTextToInterpret) { try{ if (className.equals("char")){ return Character.valueOf(stringTextToInterpret.charAt(0)); } else if (className.equals("boolean")){ return Boolean.valueOf(stringTextToInterpret); } else if (className.equals("int")){ return Integer.valueOf(stringTextToInterpret); } else if (className.equals("byte")){ return Byte.valueOf(stringTextToInterpret); } else if (className.equals("short")){ return Short.valueOf(stringTextToInterpret); } else if (className.equals("long")){ return Long.valueOf(stringTextToInterpret); } else if (className.equals("float")){ return Float.valueOf(stringTextToInterpret); } else if (className.equals("double")){ return Double.valueOf(stringTextToInterpret); } else { return stringTextToInterpret; } } catch (NumberFormatException e){ throw e; } } public void addEcoreFmpTypeSelectionWizardPage(EcoreFeatureGroupPage newPage){ ecoreFmpFeatureGroupPage = newPage; addPage(ecoreFmpFeatureGroupPage); } public void init(IWorkbench workbench, IStructuredSelection selection) { // TODO Auto-generated method stub } public Object getReturnValue() { return returnValue; } }