fix yellow code producing by CommonDataKeys
[idea/community.git] / platform / platform-api / src / com / intellij / util / OpenSourceUtil.java
1 /*
2  * Copyright 2000-2013 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.util;
17
18 import com.intellij.openapi.actionSystem.CommonDataKeys;
19 import com.intellij.openapi.actionSystem.DataContext;
20 import com.intellij.openapi.actionSystem.DataProvider;
21 import com.intellij.openapi.actionSystem.PlatformDataKeys;
22 import com.intellij.pom.Navigatable;
23 import com.intellij.pom.StatePreservingNavigatable;
24
25 public class OpenSourceUtil {
26
27   private OpenSourceUtil() {
28   }
29
30   public static void openSourcesFrom(DataContext context, boolean requestFocus) {
31     navigate(requestFocus, CommonDataKeys.NAVIGATABLE_ARRAY.getData(context));
32   }
33
34   public static void openSourcesFrom(DataProvider context, boolean requestFocus) {
35     navigate(requestFocus, CommonDataKeys.NAVIGATABLE_ARRAY.getData(context));
36   }
37
38   /**
39    * Equivalent to navigate(true, navigatables)
40    *
41    * @param navigatables elements navigate to
42    * 
43    * @see OpenSourceUtil#navigate(boolean, com.intellij.pom.Navigatable...)  
44    */
45   public static void navigate(final Navigatable...navigatables) {
46     navigate(true, navigatables);
47   }
48
49   public static void navigate(final boolean requestFocus, final Navigatable...navigatables) {
50     if (navigatables == null) return;
51     for (Navigatable navigatable : navigatables) {
52       if (navigatable.canNavigate()) {
53         navigatable.navigate(requestFocus);
54       }
55     }
56   }
57
58   public static void navigate(final boolean requestFocus, final boolean tryNotToScroll, final Navigatable...navigatables) {
59     if (navigatables == null) return;
60     for (Navigatable navigatable : navigatables) {
61       if (navigatable.canNavigate()) {
62         if (tryNotToScroll && navigatable instanceof StatePreservingNavigatable) {
63           ((StatePreservingNavigatable)navigatable).navigate(requestFocus, true);
64         } else {
65           navigatable.navigate(requestFocus);
66         }
67       }
68     }
69   }
70 }