Fix temp path calculation
[idea/community.git] / platform / platform-impl / src / com / intellij / openapi / diff / impl / util / TextDiffType.java
1 /*
2  * Copyright 2000-2010 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.openapi.diff.impl.util;
17
18 import com.intellij.openapi.diff.DiffBundle;
19 import com.intellij.openapi.diff.DiffColors;
20 import com.intellij.openapi.diff.ex.DiffStatusBar;
21 import com.intellij.openapi.editor.Editor;
22 import com.intellij.openapi.editor.colors.EditorColorsScheme;
23 import com.intellij.openapi.editor.colors.TextAttributesKey;
24 import com.intellij.openapi.editor.markup.TextAttributes;
25 import com.intellij.util.containers.Convertor;
26 import org.jetbrains.annotations.NotNull;
27
28 import java.awt.*;
29 import java.util.Arrays;
30 import java.util.List;
31
32 public class TextDiffType implements DiffStatusBar.LegendTypeDescriptor {
33   public static final TextDiffType INSERT = new TextDiffType(TextDiffTypeEnum.INSERT, DiffBundle.message("diff.type.inserted.name"), DiffColors.DIFF_INSERTED);
34   public static final TextDiffType CHANGED = new TextDiffType(TextDiffTypeEnum.CHANGED, DiffBundle.message("diff.type.changed.name"), DiffColors.DIFF_MODIFIED);
35   public static final TextDiffType DELETED = new TextDiffType(TextDiffTypeEnum.DELETED, DiffBundle.message("diff.type.deleted.name"), DiffColors.DIFF_DELETED);
36   public static final TextDiffType CONFLICT = new TextDiffType(TextDiffTypeEnum.CONFLICT, DiffBundle.message("diff.type.conflict.name"), DiffColors.DIFF_CONFLICT);
37
38   public static final TextDiffType NONE = new TextDiffType(TextDiffTypeEnum.NONE, DiffBundle.message("diff.type.none.name"), null);
39
40   private final TextDiffTypeEnum myType;
41   public static final List<TextDiffType> DIFF_TYPES = Arrays.asList(new TextDiffType[]{DELETED, CHANGED, INSERT});
42   public static final List<TextDiffType> MERGE_TYPES = Arrays.asList(new TextDiffType[]{DELETED, CHANGED, INSERT, CONFLICT});
43   private final TextAttributesKey myAttributesKey;
44   private final String myDisplayName;
45   public static final Convertor<TextDiffType, TextAttributesKey> ATTRIBUTES_KEY = new Convertor<TextDiffType, TextAttributesKey>() {
46     public TextAttributesKey convert(TextDiffType textDiffType) {
47       return textDiffType.getAttributesKey();
48     }
49   };
50
51   public static TextDiffType create(@NotNull final TextDiffTypeEnum type) {
52     if (TextDiffTypeEnum.INSERT.equals(type)) {
53       return INSERT;
54     } else if (TextDiffTypeEnum.CHANGED.equals(type)) {
55       return CHANGED;
56     } else if (TextDiffTypeEnum.DELETED.equals(type)) {
57       return DELETED;
58     } else if (TextDiffTypeEnum.CONFLICT.equals(type)) {
59       return CONFLICT;
60     } else {
61       // NONE
62       return NONE;
63     }
64   }
65
66   private TextDiffType(TextDiffTypeEnum type, String displayName, TextAttributesKey attrubutesKey) {
67     myType = type;
68     myAttributesKey = attrubutesKey;
69     myDisplayName = displayName;
70   }
71
72   public String getDisplayName() {
73     return myDisplayName;
74   }
75
76   public Color getLegendColor(EditorColorsScheme colorScheme) {
77     TextAttributes attributes = getTextAttributes(colorScheme);
78     return attributes != null ? attributes.getBackgroundColor() : null;
79   }
80
81   public TextAttributesKey getAttributesKey() {
82     return myAttributesKey;
83   }
84
85   public TextAttributes getTextAttributes(EditorColorsScheme scheme) {
86     return scheme.getAttributes(myAttributesKey);
87   }
88
89   public Color getPoligonColor(Editor editor1) {
90     return getLegendColor(editor1.getColorsScheme());
91   }
92
93   public TextAttributes getTextAttributes(Editor editor1) {
94     return getTextAttributes(editor1.getColorsScheme());
95   }
96
97   public Color getTextBackground(Editor editor) {
98     TextAttributes attributes = getTextAttributes(editor);
99     return attributes != null ? attributes.getBackgroundColor() : null;
100   }
101
102   public String toString(){
103     return myDisplayName;
104   }
105
106   public TextDiffTypeEnum getType() {
107     return myType;
108   }
109 }