Gridarta Editor
ToolTipAppender.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.gui.map.renderer;
21 
22 import java.util.Collections;
23 import java.util.Map;
24 import java.util.Map.Entry;
32 import org.jetbrains.annotations.NotNull;
33 import org.jetbrains.annotations.Nullable;
34 
38 public class ToolTipAppender<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> {
39 
44  @Nullable
46 
47  @NotNull
48  private final StringBuilder sb = new StringBuilder("<html>");
49 
50  private boolean empty = true;
51 
58  this.gameObjectParser = gameObjectParser;
59  }
60 
61  public void appendGameObject(@NotNull final G gameObject, final boolean alwaysInclude, @NotNull final String prefix) {
62  final Map<String, String> fields = gameObjectParser == null ? Collections.emptyMap() : gameObjectParser.getModifiedFields(gameObject);
63  fields.remove("x");
64  fields.remove("y");
65  if (alwaysInclude || !fields.isEmpty() || !gameObject.isEmpty()) {
66  if (empty) {
67  empty = false;
68  } else {
69  sb.append("<br><hr>");
70  }
71  sb.append(prefix);
72  sb.append("<b>").append(HtmlUtils.encode(gameObject.getBestName())).append("</b>");
73  for (final Entry<String, String> field : fields.entrySet()) {
74  sb.append("<br>");
75  sb.append(prefix);
76  sb.append(StringUtils.PATTERN_NEWLINE.matcher((HtmlUtils.encode(field.getKey()) + " " + HtmlUtils.encode(field.getValue())).trim()).replaceAll("<br>" + prefix));
77  }
78  for (final G invGameObject : gameObject.reverse()) {
79  appendGameObject(invGameObject, true, prefix + "&nbsp;&nbsp;&nbsp;&nbsp;");
80  }
81  }
82  }
83 
84  public void appendValidationError(@NotNull final ValidationError<G, ?, ?> error) {
85  if (empty) {
86  empty = false;
87  } else {
88  sb.append("\n<hr>");
89  }
90  sb.append(error.getMessage().trim());
91  }
92 
93  @Nullable
94  public String finish() {
95  return empty ? null : StringUtils.PATTERN_NEWLINE.matcher(sb.toString()).replaceAll("<br>");
96  }
97 
98 }
net.sf.gridarta.gui.map.renderer.ToolTipAppender.sb
final StringBuilder sb
Definition: ToolTipAppender.java:48
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.model.validation.errors.ValidationError
Super class of all errors that could occur during map validation.
Definition: ValidationError.java:45
net.sf
net.sf.gridarta.utils.HtmlUtils
Utility class for HTML related functions.
Definition: HtmlUtils.java:28
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.gameobject.GameObject
Reflects a game object (object on a map).
Definition: GameObject.java:36
net.sf.gridarta.model.io.GameObjectParser.getModifiedFields
Map< String, String > getModifiedFields(@NotNull G gameObject)
Returns the modified fields of a GameObject.
net.sf.gridarta.utils.HtmlUtils.encode
static String encode(@NotNull final String str)
Encodes a string so that the result can be embedded into HTML.
Definition: HtmlUtils.java:53
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net.sf.gridarta.gui.map.renderer.ToolTipAppender.gameObjectParser
final GameObjectParser< G, A, R > gameObjectParser
The GameObjectParser for creating tooltip information or.
Definition: ToolTipAppender.java:45
net
net.sf.gridarta.model.maparchobject.MapArchObject
Interface for MapArchObjects.
Definition: MapArchObject.java:40
net.sf.gridarta.gui.map.renderer.ToolTipAppender.appendValidationError
void appendValidationError(@NotNull final ValidationError< G, ?, ?> error)
Definition: ToolTipAppender.java:84
net.sf.gridarta.model.validation
This package contains the framework for validating maps.
Definition: AbstractValidator.java:20
net.sf.gridarta.utils.StringUtils
Utility class for string manipulation.
Definition: StringUtils.java:31
net.sf.gridarta.gui.map.renderer.ToolTipAppender.finish
String finish()
Definition: ToolTipAppender.java:94
net.sf.gridarta.model.io
Reading and writing of maps, handling of paths.
Definition: AbstractAnimationObjectsReader.java:20
net.sf.gridarta.gui.map.renderer.ToolTipAppender
Definition: ToolTipAppender.java:38
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Reflects an Archetype.
Definition: Archetype.java:41
net.sf.gridarta.gui.map.renderer.ToolTipAppender.appendGameObject
void appendGameObject(@NotNull final G gameObject, final boolean alwaysInclude, @NotNull final String prefix)
Definition: ToolTipAppender.java:61
net.sf.gridarta.utils.StringUtils.PATTERN_NEWLINE
static final Pattern PATTERN_NEWLINE
The pattern that matches a single newline ("\n").
Definition: StringUtils.java:109
net.sf.gridarta.gui.map.renderer.ToolTipAppender.ToolTipAppender
ToolTipAppender(@Nullable final GameObjectParser< G, A, R > gameObjectParser)
Creates a new instance.
Definition: ToolTipAppender.java:57
net.sf.gridarta.model.validation.errors
Definition: AttributeRangeError.java:20
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.model.io.GameObjectParser
Interface for classes that read or write GameObject instances.
Definition: GameObjectParser.java:37
net.sf.gridarta.gui.map.renderer.ToolTipAppender.empty
boolean empty
Definition: ToolTipAppender.java:50
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20