20 package net.sf.gridarta.gui.panel.gameobjectattributes;
22 import java.awt.Color;
23 import java.awt.Component;
24 import java.awt.Container;
25 import java.awt.GridBagConstraints;
26 import java.awt.GridBagLayout;
27 import java.awt.Insets;
28 import javax.swing.ButtonGroup;
29 import javax.swing.JLabel;
30 import javax.swing.JPanel;
31 import javax.swing.JTextField;
32 import javax.swing.JToggleButton;
33 import javax.swing.text.JTextComponent;
43 import net.
sf.japi.swing.action.ActionBuilder;
44 import net.
sf.japi.swing.action.ActionBuilderFactory;
45 import net.
sf.japi.swing.action.ActionMethod;
46 import org.jetbrains.annotations.NotNull;
47 import org.jetbrains.annotations.Nullable;
61 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
117 private final JPanel
panel =
new JPanel();
135 final GridBagLayout gridBagLayout =
new GridBagLayout();
136 final GridBagConstraints gbc =
new GridBagConstraints();
138 panel.setLayout(gridBagLayout);
139 gbc.fill = GridBagConstraints.BOTH;
142 gbc.anchor = GridBagConstraints.NORTHWEST;
143 gbc.insets =
new Insets(4, 4, 0, 0);
174 gridBagLayout.setConstraints(
archMapPos, gbc);
183 panel.add(dirPanel, gbc);
201 final Container dirPanel =
new JPanel(
new GridBagLayout());
202 final GridBagConstraints gbc =
new GridBagConstraints();
203 gbc.fill = GridBagConstraints.BOTH;
204 gbc.anchor = GridBagConstraints.CENTER;
205 gbc.insets =
new Insets(2, 2, 2, 2);
228 private void createButton(
final int direction, @NotNull
final Container
panel, @NotNull
final GridBagConstraints gbc,
final int x,
final int y) {
229 final JToggleButton button =
new JToggleButton(
ACTION_BUILDER.createAction(
false,
"direction" +
direction,
this));
231 button.setFocusable(
false);
232 button.setEnabled(
false);
235 panel.add(button, gbc);
250 protected void apply(@NotNull
final G gameObject) {
255 protected final void refresh(@Nullable
final G gameObject) {
260 if (gameObject ==
null) {
263 final String objName = gameObject.getAttributeString(
BaseObject.
NAME,
false);
264 if (objName.isEmpty()) {
265 final String archObjName = gameObject.getArchetype().getObjName();
266 setArchNameField(archObjName.isEmpty() ? gameObject.getArchetype().getArchetypeName() : archObjName, Color.black);
273 if (gameObject ==
null) {
276 final StringBuilder faceText =
new StringBuilder(
"Image: ");
282 if (gameObject ==
null) {
285 final StringBuilder typeText =
new StringBuilder(
"Type: ");
287 typeText.append(
" [").append(gameObject.getArchetype().getArchetypeName()).append(
']');
288 if (gameObject.isMulti()) {
289 typeText.append(
" [").append(gameObject.getSizeX()).append(
'x').append(gameObject.getSizeY()).append(
']');
291 typeText.append(
" [single]");
297 if (gameObject ==
null) {
300 final StringBuilder specialText =
new StringBuilder(
"Status:");
301 if (!gameObject.isInContainer()) {
302 specialText.append(
" (map: ").append(gameObject.getMapX()).append(
", ").append(gameObject.getMapY()).append(
')');
304 if (gameObject.isScripted()) {
305 specialText.append(
" (script)");
307 if (gameObject.getMsgText(
true) !=
null) {
308 specialText.append(
" (msg)");
310 final int invObjects = gameObject.countInvObjects();
311 if (invObjects > 0) {
312 specialText.append(
" (inv: ").append(invObjects).append(
')');
316 specialText.append(
" (env: ").append(cont.
getArchetype().getArchetypeName()).append(
')');
323 button.setBackground(
null);
325 final boolean enableDirButtons = gameObject !=
null && gameObject.usesDirection();
327 button.setEnabled(enableDirButtons);
329 final int direction = enableDirButtons ? gameObject.getDirection() : 0;
340 final String faceName = gameObject.getFaceObjName();
341 if (faceName ==
null) {
342 sb.append(
">no face<");
344 final FaceSource faceSource = gameObject.getFaceObjSource();
345 sb.append(faceName).append(
" (");
346 switch (faceSource) {
348 sb.append(
"face not found");
356 sb.append(
"archetype face");
364 sb.append(
"archetype anim");
454 if (mapSquare ==
null) {