2 * Copyright (c) 2000-2006 JetBrains s.r.o. All Rights Reserved.
5 package com
.intellij
.util
.xml
.impl
;
7 import com
.intellij
.util
.xml
.DomElementsNavigationManager
;
8 import com
.intellij
.util
.xml
.DomElementNavigateProvider
;
9 import com
.intellij
.util
.xml
.DomElement
;
10 import com
.intellij
.openapi
.components
.ProjectComponent
;
11 import com
.intellij
.openapi
.project
.Project
;
12 import com
.intellij
.openapi
.fileEditor
.OpenFileDescriptor
;
13 import com
.intellij
.openapi
.fileEditor
.ex
.FileEditorManagerEx
;
17 import org
.jetbrains
.annotations
.NonNls
;
20 * User: Sergey.Vasiliev
22 public class DomElementsNavigationManagerImpl
extends DomElementsNavigationManager
implements ProjectComponent
{
23 private Map
<String
, DomElementNavigateProvider
> myProviders
= new HashMap
<String
, DomElementNavigateProvider
>();
24 private Project myProject
;
26 private DomElementNavigateProvider myTextEditorProvider
= new MyDomElementNavigateProvider();
28 public DomElementsNavigationManagerImpl(final Project project
) {
30 myProviders
.put(myTextEditorProvider
.getProviderName(), myTextEditorProvider
);
33 public Set
<DomElementNavigateProvider
> getDomElementsNavigateProviders(DomElement domElement
) {
34 Set
<DomElementNavigateProvider
> result
= new HashSet
<DomElementNavigateProvider
>();
36 for (DomElementNavigateProvider navigateProvider
: myProviders
.values()) {
37 if (navigateProvider
.canNavigate(domElement
)) result
.add(navigateProvider
) ;
42 public DomElementNavigateProvider
getDomElementsNavigateProvider(String providerName
) {
43 return myProviders
.get(providerName
);
46 public void registerDomElementsNavigateProvider(DomElementNavigateProvider provider
) {
47 myProviders
.put(provider
.getProviderName(), provider
);
50 public void projectOpened() {
54 public void projectClosed() {
59 public String
getComponentName() {
60 return getClass().getName();
63 public void initComponent() {
67 public void disposeComponent() {
71 private class MyDomElementNavigateProvider
implements DomElementNavigateProvider
{
73 public String
getProviderName() {
74 return DEFAULT_PROVIDER_NAME
;
77 public void navigate(DomElement domElement
, boolean requestFocus
) {
78 final OpenFileDescriptor fileDescriptor
=
79 new OpenFileDescriptor(myProject
, domElement
.getRoot().getFile().getVirtualFile(), domElement
.getXmlTag().getTextOffset());
81 FileEditorManagerEx
.getInstanceEx(myProject
).openTextEditor(fileDescriptor
, requestFocus
);
84 public boolean canNavigate(DomElement domElement
) {
85 return domElement
!= null && domElement
.isValid();