63b7c999014bcb22cf5536d77cef0ef71f8560ce
[idea/community.git] / plugins / hg4idea / src / org / zmlx / hg4idea / HgGlobalSettings.java
1 // Copyright 2008-2010 Victor Iacoban
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software distributed under
10 // the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
11 // either express or implied. See the License for the specific language governing permissions and
12 // limitations under the License.
13 package org.zmlx.hg4idea;
14
15 import com.intellij.openapi.components.PersistentStateComponent;
16 import com.intellij.openapi.components.State;
17 import com.intellij.openapi.components.Storage;
18 import com.intellij.util.containers.HashMap;
19 import org.jetbrains.annotations.NotNull;
20
21 import java.util.LinkedList;
22 import java.util.List;
23 import java.util.Map;
24
25 @State(
26   name = "hg4idea.settings",
27   storages = @Storage(id = "hg4idea.settings", file = "$OPTIONS$/hg4idea.xml")
28 )
29 public class HgGlobalSettings implements PersistentStateComponent<HgGlobalSettings> {
30
31   private static final String HG = HgVcs.HG_EXECUTABLE_FILE_NAME;
32   private static final int FIVE_MINUTES = 300;
33
34   private String hgExecutable = HG;
35
36   // visited URL -> list of logins for this URL. Passwords are remembered in the PasswordSafe.
37   private Map<String, List<String>> myRememberedUrls = new HashMap<String, List<String>>();
38
39   /**
40    * Returns the rememebered urls which were accessed while working in the plugin.
41    * @return key is a String representation of a URL, value is the list (probably empty) of logins remembered for this URL.
42    */
43   @NotNull
44   public Map<String, List<String>> getRememberedUrls() {
45     return myRememberedUrls;
46   }
47
48   /**
49    * Adds the information about visited URL.
50    * @param stringUrl String representation of the URL.
51    * @param username  Login used to access the URL.
52    */
53   public void addRememberedUrl(@NotNull String stringUrl, @NotNull String username) {
54     List<String> list = myRememberedUrls.get(stringUrl);
55     if (list == null) {
56       list = new LinkedList<String>();
57       myRememberedUrls.put(stringUrl, list);
58     }
59     list.add(username);
60   }
61
62   public static String getDefaultExecutable() {
63     return HG;
64   }
65
66   public String getHgExecutable() {
67     return hgExecutable;
68   }
69
70   public void setHgExecutable(String hgExecutable) {
71     this.hgExecutable = hgExecutable;
72   }
73
74   public boolean isAutodetectHg() {
75     return HG.equals(hgExecutable);
76   }
77
78   public void enableAutodetectHg() {
79     hgExecutable = HG;
80   }
81
82   public static int getIncomingCheckIntervalSeconds() {
83     return FIVE_MINUTES;
84   }
85
86   public HgGlobalSettings getState() {
87     return this;
88   }
89
90   public void loadState(HgGlobalSettings state) {
91     hgExecutable = state.hgExecutable;
92   }
93
94 }