summaryrefslogtreecommitdiffstats
path: root/rba.tool.editor.ui/src/rba/tool/editor/ui/resource/RBAModelResourceUIServiceProvider.xtend
blob: fb795a1291cae02022f4bca82f19f2978770f6e3 (plain)
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
package rba.tool.editor.ui.resource

import com.google.inject.Inject
import org.eclipse.core.resources.IFile
import org.eclipse.core.resources.IStorage
import org.eclipse.core.resources.IWorkspace
import org.eclipse.emf.common.util.URI
import org.eclipse.xtext.resource.IResourceServiceProvider
import org.eclipse.xtext.ui.resource.DefaultResourceUIServiceProvider
import rba.tool.editor.ui.wizard.ExtendRBAModelProjectCreator

class RBAModelResourceUIServiceProvider extends DefaultResourceUIServiceProvider {

	@Inject private IWorkspace workspace;

	@Inject private ExtendRBAModelProjectCreator projectCreator;

	@Inject public new(IResourceServiceProvider delegate) {
		super(delegate)
	}

	override canHandle(URI uri, IStorage storage) {
		if(!super.canHandle(uri, storage)) {
			return false;
		}
		if(workspace !== null) {
			if(storage instanceof IFile) {
				val folderName = URI.decode(if(uri.segmentCount > 3) uri.segment(2) else null);
				if(!projectCreator.modelFolderName.equals(folderName)) {
					return false;
				}
			}
		}
		return true;
	}
}