20 package net.sf.gridarta.gui.panel.gameobjecttexteditor;
22 import java.awt.BorderLayout;
23 import java.awt.Color;
24 import java.awt.Component;
25 import java.util.Arrays;
26 import java.util.Collection;
27 import java.util.HashSet;
28 import javax.swing.JPanel;
29 import javax.swing.JScrollPane;
30 import javax.swing.JTextPane;
31 import javax.swing.JViewport;
32 import javax.swing.ScrollPaneConstants;
33 import javax.swing.text.BadLocationException;
34 import javax.swing.text.Document;
35 import javax.swing.text.MutableAttributeSet;
36 import javax.swing.text.StyleConstants;
37 import javax.swing.text.StyleContext;
45 import org.jetbrains.annotations.NotNull;
46 import org.jetbrains.annotations.Nullable;
83 super(
new BorderLayout());
85 final JScrollPane scrollPane =
new JScrollPane();
86 add(scrollPane, BorderLayout.CENTER);
87 scrollPane.setViewportView(
archEdit);
88 scrollPane.setBackground(
archEdit.getBackground());
89 scrollPane.getViewport().add(
archEdit);
90 scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
91 scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
92 scrollPane.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
119 archEdit.setEnabled(gameObject !=
null);
122 if (gameObject !=
null) {
123 final MutableAttributeSet currentAttributes =
archEdit.getStyle(StyleContext.DEFAULT_STYLE);
125 final Document document =
archEdit.getDocument();
130 final String objectText = gameObject.getObjectText();
131 if (errorText ==
null) {
132 StyleConstants.setForeground(currentAttributes, Color.blue);
133 document.insertString(document.getLength(), objectText, currentAttributes);
134 if (!objectText.isEmpty()) {
140 StyleConstants.setForeground(currentAttributes, Color.red);
141 document.insertString(document.getLength(), errorText, currentAttributes);
144 StyleConstants.setForeground(currentAttributes, Color.blue);
146 if (!
errors.contains(line)) {
147 document.insertString(document.getLength(), line +
'\n', currentAttributes);
152 StyleConstants.setForeground(currentAttributes, Color.black);
154 }
catch (
final BadLocationException ex) {
155 throw new AssertionError(ex);
177 final Document document =
archEdit.getDocument();
178 if (document !=
null) {
179 archEdit.setCaretPosition(document.getLength());