@Nullable annotation & NPE fix
[idea/community.git] / platform / editor-ui-api / src / com / intellij / openapi / editor / colors / EditorColorsScheme.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.openapi.editor.colors;
17
18 import com.intellij.openapi.editor.markup.TextAttributes;
19 import com.intellij.openapi.options.FontSize;
20 import com.intellij.openapi.options.Scheme;
21 import com.intellij.openapi.util.JDOMExternalizable;
22 import org.jetbrains.annotations.NonNls;
23 import org.jetbrains.annotations.NotNull;
24 import org.jetbrains.annotations.Nullable;
25
26 import java.awt.*;
27
28 public interface EditorColorsScheme extends Cloneable, JDOMExternalizable, TextAttributesScheme, Scheme {
29   @NonNls String DEFAULT_SCHEME_NAME = "Default";
30
31   void setName(String name);
32
33   void setAttributes(TextAttributesKey key, TextAttributes attributes);
34
35   @NotNull
36   Color getDefaultBackground();
37   @NotNull
38   Color getDefaultForeground();
39
40   @Nullable
41   Color getColor(ColorKey key);
42   void setColor(ColorKey key, Color color);
43
44   /**
45    * The IDE has allowed to configure only a single font family for a while. However, that doesn't handle a situation when
46    * that font family is unable to display particular char - fallback font family was chosen randomly from the whole collection
47    * of all registered fonts.
48    * <p/>
49    * Now it's possible to specify more than one font, i.e. directly indicated 'fallback fonts sequence' (see {@link FontPreferences}).
50    * However, old single font-based API is still here in order to preserve backward compatibility ({@link #getEditorFontName()} and
51    * {@link #getEditorFontSize()}). I.e. those methods are just re-written in order to use {@link FontPreferences} object exposed
52    * by this method.
53    *
54    * @return    font preferences to use
55    */
56   @NotNull
57   FontPreferences getFontPreferences();
58   void setFontPreferences(@NotNull FontPreferences preferences);
59
60   String getEditorFontName();
61   void setEditorFontName(String fontName);
62
63   int getEditorFontSize();
64   void setEditorFontSize(int fontSize);
65
66   FontSize getQuickDocFontSize();
67   void setQuickDocFontSize(@NotNull FontSize fontSize);
68
69   Font getFont(EditorFontType key);
70   void setFont(EditorFontType key, Font font);
71
72   float getLineSpacing();
73   void setLineSpacing(float lineSpacing);
74
75   Object clone();
76
77   /**
78    * @return    console font preferences to use
79    * @see #getFontPreferences()
80    */
81   @NotNull
82   FontPreferences getConsoleFontPreferences();
83   void setConsoleFontPreferences(@NotNull FontPreferences preferences);
84
85   String getConsoleFontName();
86   void setConsoleFontName(String fontName);
87
88   int getConsoleFontSize();
89   void setConsoleFontSize(int fontSize);
90
91   float getConsoleLineSpacing();
92   void setConsoleLineSpacing(float lineSpacing);
93 }