/platform/platform-impl/src/com/intellij/openapi/editor/impl/RangeHighlighterImpl.java

https://bitbucket.org/nbargnesi/idea · Java · 228 lines · 166 code · 40 blank · 22 comment · 2 complexity · e1faf56fa4ccd731802041b9d3616fb4 MD5 · raw file

  1. /*
  2. * Copyright 2000-2009 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.impl;
  17. import com.intellij.openapi.editor.ex.DocumentEx;
  18. import com.intellij.openapi.editor.ex.RangeHighlighterEx;
  19. import com.intellij.openapi.editor.markup.*;
  20. import com.intellij.openapi.util.Getter;
  21. import com.intellij.util.Consumer;
  22. import org.jetbrains.annotations.NotNull;
  23. import org.jetbrains.annotations.Nullable;
  24. import java.awt.*;
  25. /**
  26. * Implementation of the markup element for the editor and document.
  27. * @author max
  28. */
  29. class RangeHighlighterImpl extends RangeMarkerImpl implements RangeHighlighterEx, Getter<RangeHighlighterEx> {
  30. private final RangeHighlighterData data;
  31. RangeHighlighterImpl(@NotNull MarkupModel model,
  32. int start,
  33. int end,
  34. int layer,
  35. @NotNull HighlighterTargetArea target,
  36. TextAttributes textAttributes, boolean greedyToLeft, boolean greedyToRight) {
  37. super((DocumentEx)model.getDocument(), start, end,false);
  38. data = new RangeHighlighterData(model, target, textAttributes) {
  39. @NotNull
  40. @Override
  41. public RangeHighlighterEx getRangeHighlighter() {
  42. return RangeHighlighterImpl.this;
  43. }
  44. };
  45. registerInTree(start, end, greedyToLeft, greedyToRight, layer);
  46. }
  47. protected RangeHighlighterData getData() {
  48. return data;
  49. }
  50. @Override
  51. protected void registerInTree(int start, int end, boolean greedyToLeft, boolean greedyToRight, int layer) {
  52. // we store highlighters in MarkupModel
  53. ((MarkupModelImpl)data.getMarkupModel()).addRangeHighlighter(this, start, end, greedyToLeft, greedyToRight, layer);
  54. }
  55. @Override
  56. protected boolean unregisterInTree() {
  57. if (!isValid()) return false;
  58. // we store highlighters in MarkupModel
  59. getData().getMarkupModel().removeHighlighter(this);
  60. return true;
  61. }
  62. @Override
  63. public RangeHighlighterImpl get() {
  64. return this;
  65. }
  66. // delegates
  67. @Override
  68. public TextAttributes getTextAttributes() {
  69. return getData().getTextAttributes();
  70. }
  71. @Override
  72. public void setTextAttributes(TextAttributes textAttributes) {
  73. getData().setTextAttributes(textAttributes);
  74. }
  75. boolean changeAttributesNoEvents(@NotNull Consumer<RangeHighlighterEx> change) {
  76. return getData().changeAttributesInBatch(change);
  77. }
  78. @Override
  79. public int getLayer() {
  80. RangeHighlighterTree.RHNode node = (RangeHighlighterTree.RHNode)(Object)myNode;
  81. return node == null ? -1 : node.myLayer;
  82. }
  83. @Override
  84. public HighlighterTargetArea getTargetArea() {
  85. return getData().getTargetArea();
  86. }
  87. @Override
  88. public LineMarkerRenderer getLineMarkerRenderer() {
  89. return getData().getLineMarkerRenderer();
  90. }
  91. @Override
  92. public void setLineMarkerRenderer(LineMarkerRenderer renderer) {
  93. getData().setLineMarkerRenderer(renderer);
  94. }
  95. @Override
  96. public CustomHighlighterRenderer getCustomRenderer() {
  97. return getData().getCustomRenderer();
  98. }
  99. @Override
  100. public void setCustomRenderer(CustomHighlighterRenderer renderer) {
  101. getData().setCustomRenderer(renderer);
  102. }
  103. @Override
  104. public GutterIconRenderer getGutterIconRenderer() {
  105. return getData().getGutterIconRenderer();
  106. }
  107. @Override
  108. public void setGutterIconRenderer(GutterIconRenderer renderer) {
  109. getData().setGutterIconRenderer(renderer);
  110. }
  111. @Override
  112. public Color getErrorStripeMarkColor() {
  113. return getData().getErrorStripeMarkColor();
  114. }
  115. @Override
  116. public void setErrorStripeMarkColor(Color color) {
  117. getData().setErrorStripeMarkColor(color);
  118. }
  119. @Override
  120. public Object getErrorStripeTooltip() {
  121. return getData().getErrorStripeTooltip();
  122. }
  123. @Override
  124. public void setErrorStripeTooltip(Object tooltipObject) {
  125. getData().setErrorStripeTooltip(tooltipObject);
  126. }
  127. @Override
  128. public boolean isThinErrorStripeMark() {
  129. return getData().isThinErrorStripeMark();
  130. }
  131. @Override
  132. public void setThinErrorStripeMark(boolean value) {
  133. getData().setThinErrorStripeMark(value);
  134. }
  135. @Override
  136. public Color getLineSeparatorColor() {
  137. return getData().getLineSeparatorColor();
  138. }
  139. @Override
  140. public void setLineSeparatorColor(Color color) {
  141. getData().setLineSeparatorColor(color);
  142. }
  143. @Override
  144. public void setLineSeparatorRenderer(LineSeparatorRenderer renderer) {
  145. getData().setLineSeparatorRenderer(renderer);
  146. }
  147. @Override
  148. public LineSeparatorRenderer getLineSeparatorRenderer() {
  149. return getData().getLineSeparatorRenderer();
  150. }
  151. @Override
  152. public SeparatorPlacement getLineSeparatorPlacement() {
  153. return getData().getLineSeparatorPlacement();
  154. }
  155. @Override
  156. public void setLineSeparatorPlacement(@Nullable SeparatorPlacement placement) {
  157. getData().setLineSeparatorPlacement(placement);
  158. }
  159. @Override
  160. public void setEditorFilter(@NotNull MarkupEditorFilter filter) {
  161. getData().setEditorFilter(filter);
  162. }
  163. @Override
  164. @NotNull
  165. public MarkupEditorFilter getEditorFilter() {
  166. return getData().getEditorFilter();
  167. }
  168. @Override
  169. public boolean isAfterEndOfLine() {
  170. return getData().isAfterEndOfLine();
  171. }
  172. @Override
  173. public void setAfterEndOfLine(boolean afterEndOfLine) {
  174. getData().setAfterEndOfLine(afterEndOfLine);
  175. }
  176. @Override
  177. public int getAffectedAreaStartOffset() {
  178. return getData().getAffectedAreaStartOffset();
  179. }
  180. @Override
  181. public int getAffectedAreaEndOffset() {
  182. return getData().getAffectedAreaEndOffset();
  183. }
  184. @Override
  185. public String toString() {
  186. return "RangeHighlighter: ("+getStartOffset()+","+getEndOffset()+"); layer:"+getLayer()+"; tooltip: "+getData().getErrorStripeTooltip();
  187. }
  188. }