Skip to main content
summaryrefslogtreecommitdiffstats
blob: 2aea7c85b7580fde89c14d03ee39bdbd34512e53 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/*****************************************************************************
 * Copyright (c) 2010 CEA LIST.
 *    
 * 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:
 *  Remi Schnekenburger (CEA LIST) remi.schnekenburger@cea.fr - Initial API and implementation
 *****************************************************************************/
package org.eclipse.papyrus.views.properties.runtime.controller;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.papyrus.views.properties.runtime.controller.descriptor.IPropertyEditorControllerDescriptor;
import org.eclipse.papyrus.views.properties.runtime.controller.descriptor.IPropertyEditorControllerDescriptorFactory;
import org.osgi.framework.Bundle;
import org.w3c.dom.Node;

/**
 * Class that contains the information about a specific controller
 */
public class PropertyEditorControllerConfiguration {

	/** description of the editor */
	protected String description;

	/** Image descriptor of the editor */
	protected ImageDescriptor descriptor;

	/** identifier of this extension point */
	protected String id;

	/** configuration element that manages this editor */
	protected IConfigurationElement element;

	/** factory used to create controller descriptors */
	private IPropertyEditorControllerDescriptorFactory factory;

	/**
	 * Sets the element that configures the editor
	 * 
	 * @param element
	 *        the element to set
	 */
	protected void setElement(IConfigurationElement element) {
		this.element = element;
	}

	/**
	 * Returns the element that configures the editor
	 * 
	 * @return the element that configures the editor
	 */
	protected IConfigurationElement getElement() {
		return element;
	}

	/**
	 * Returns the description of the editor
	 * 
	 * @return the description of the editor
	 */
	public String getDescription() {
		return description;
	}

	/**
	 * Sets the description of this editor
	 * 
	 * @param description
	 *        the description to set
	 */
	public void setDescription(String description) {
		this.description = description;
	}

	/**
	 * Returns the image descriptor of the preview of the editor
	 * 
	 * @return the image descriptor of the preview of the editor
	 */
	public ImageDescriptor getDescriptor() {
		return descriptor;
	}

	/**
	 * Sets the image descriptor of the editor preview
	 * 
	 * @param descriptor
	 *        the descriptor to set
	 */
	public void setDescriptor(ImageDescriptor descriptor) {
		this.descriptor = descriptor;
	}


	/**
	 * parses the configuration element and returns an editor configuration
	 * 
	 * @param element
	 *        the configuration element to parse
	 * @return the created editor configuration
	 * @throws CoreException
	 *         the validator was not successfully initialized
	 */
	public static PropertyEditorControllerConfiguration parse(IConfigurationElement element) throws CoreException {
		PropertyEditorControllerConfiguration configuration = new PropertyEditorControllerConfiguration();

		// init the id
		configuration.setId(element.getAttribute("id"));

		// description
		configuration.setDescription(element.getAttribute("description"));

		// sets the configuration that configures this editor 
		configuration.setElement(element);

		configuration.setDescriptorFactory((IPropertyEditorControllerDescriptorFactory)element.createExecutableExtension("factory"));

		// check everything is valid
		assert configuration.getId() != null : "impossible to get the identifier for the provider " + element.getName();

		return configuration;
	}

	/**
	 * Sets the factory used to create descriptors
	 * 
	 * @param factory
	 *        the factory used to create descriptors
	 */
	public void setDescriptorFactory(IPropertyEditorControllerDescriptorFactory factory) {
		assert (factory != null) : "factory should not be null for configuration " + getId();
		this.factory = factory;
	}

	/**
	 * Sets the identifier for this configuration
	 * 
	 * @param id
	 *        the id to set
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * Returns the id of this configuration
	 * 
	 * @return the id of this configuration
	 */
	public String getId() {
		return id;
	}

	/**
	 * Instantiates the controller.
	 * 
	 * @return the controller instantiated
	 * @throws CoreException
	 *         exception thrown when something went wrong during creation of the controller
	 */
	public PropertyEditorController instanciateController() throws CoreException {
		return (PropertyEditorController)getElement().createExecutableExtension("class");
	}

	/**
	 * Generates the descriptor for the given configuration node
	 * 
	 * @param controllerNode
	 *        the configuration node of the controller
	 * @param bundle
	 *        the bundle used to load classes
	 * @return the configured descriptor
	 */
	public IPropertyEditorControllerDescriptor createControllerDescriptor(Node controllerNode, Bundle bundle) {
		return factory.createDescriptor(controllerNode, bundle);
	}
}

Back to the top