]> gerrit.simantics Code Review - simantics/platform.git/blob
b67dee50e807959fd38852dcf1696cc7ab350371
[simantics/platform.git] /
1 /*******************************************************************************
2  * Copyright (c) 2012 Association for Decentralized Information Management in
3  * Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.modeling.ui.sharedontology.wizard;
13
14 import org.eclipse.core.runtime.CoreException;
15 import org.eclipse.core.runtime.IConfigurationElement;
16 import org.eclipse.core.runtime.IExecutableExtension;
17 import org.eclipse.core.runtime.IExecutableExtensionFactory;
18 import org.eclipse.core.runtime.IStatus;
19 import org.eclipse.core.runtime.Status;
20 import org.simantics.modeling.ui.Activator;
21
22 /**
23  * A factory for diagram template related wizard extensions.
24  * 
25  * @author Tuukka Lehtonen
26  */
27 public class WizardExtensionFactory implements IExecutableExtensionFactory, IExecutableExtension {
28
29     /**
30      * Factory ID for the shared library export wizard.
31      */
32     public static final String ANNOTATION_TYPE_EXPORT_WIZARD = "sharedOntologyExportWizard"; // $//$NON-NLS-1$
33     public static final String MODEL_TYPE_EXPORT_WIZARD = "modelExportWizard"; // $//$NON-NLS-1$
34
35     /**
36      * Factory ID for the shared library import wizard.
37      */
38     public static final String ANNOTATION_TYPE_IMPORT_WIZARD = "sharedOntologyImportWizard"; // $//$NON-NLS-1$
39  
40     private IConfigurationElement config;
41
42     private String id;
43
44     private String propertyName;
45
46     public WizardExtensionFactory() {
47         // do nothing
48     }
49
50     private Object configure(Object obj) throws CoreException {
51         if (obj instanceof IExecutableExtension) {
52             ((IExecutableExtension) obj).setInitializationData(config, propertyName, null);
53         }
54         return obj;
55     }
56
57     @Override
58     public Object create() throws CoreException {
59         if (ANNOTATION_TYPE_EXPORT_WIZARD.equals(id)) {
60             return configure(new SharedOntologyExportWizard());
61         }
62         if (MODEL_TYPE_EXPORT_WIZARD.equals(id)) {
63             return configure(new ModelExportWizard());
64         }
65         if (ANNOTATION_TYPE_IMPORT_WIZARD.equals(id)) {
66             return configure(new SharedOntologyImportWizard());
67         }
68
69         throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
70                 0, "Unknown id in data argument for " + getClass(), null)); //$NON-NLS-1$
71     }
72
73     @Override
74     public void setInitializationData(IConfigurationElement config, String propertyName, Object data)
75     throws CoreException {
76
77         if (data instanceof String) {
78             id = (String) data;
79         } else {
80             throw new CoreException(new Status(IStatus.ERROR,
81                     Activator.PLUGIN_ID, 0,
82                     "Data argument must be a String for " + getClass(), null)); //$NON-NLS-1$
83         }
84         this.config = config;
85         this.propertyName = propertyName;
86     }
87
88 }