rename interface
[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.DataContext;
19 import com.intellij.openapi.actionSystem.DataProvider;
20 import com.intellij.openapi.actionSystem.PlatformDataKeys;
21 import com.intellij.pom.Navigatable;
22 import com.intellij.pom.StatePreservingNavigatable;
23
24 public class OpenSourceUtil {
25
26   private OpenSourceUtil() {
27   }
28
29   public static void openSourcesFrom(DataContext context, boolean requestFocus) {
30     navigate(requestFocus, PlatformDataKeys.NAVIGATABLE_ARRAY.getData(context));
31   }
32
33   public static void openSourcesFrom(DataProvider context, boolean requestFocus) {
34     navigate(requestFocus, PlatformDataKeys.NAVIGATABLE_ARRAY.getData(context));
35   }
36
37   /**
38    * Equivalent to navigate(true, navigatables)
39    *
40    * @param navigatables elements navigate to
41    * 
42    * @see OpenSourceUtil#navigate(boolean, com.intellij.pom.Navigatable...)  
43    */
44   public static void navigate(final Navigatable...navigatables) {
45     navigate(true, navigatables);
46   }
47
48   public static void navigate(final boolean requestFocus, final Navigatable...navigatables) {
49     if (navigatables == null) return;
50     for (Navigatable navigatable : navigatables) {
51       if (navigatable.canNavigate()) {
52         navigatable.navigate(requestFocus);
53       }
54     }
55   }
56
57   public static void navigate(final boolean requestFocus, final boolean tryNotToScroll, final Navigatable...navigatables) {
58     if (navigatables == null) return;
59     for (Navigatable navigatable : navigatables) {
60       if (navigatable.canNavigate()) {
61         if (tryNotToScroll && navigatable instanceof StatePreservingNavigatable) {
62           ((StatePreservingNavigatable)navigatable).navigate(requestFocus, true);
63         } else {
64           navigatable.navigate(requestFocus);
65         }
66       }
67     }
68   }
69 }