Crossfire JXClient, Trunk
SkinLoader.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff
19  * Copyright (C) 2006-2017,2019-2023 Andreas Kirschbaum
20  * Copyright (C) 2010-2012,2014-2018,2020-2023 Nicolas Weeger
21  */
22 
23 package com.realtime.crossfire.jxclient.main;
24 
49 import java.nio.file.Files;
50 import java.nio.file.Path;
51 import java.nio.file.Paths;
52 import org.jetbrains.annotations.NotNull;
53 import org.jetbrains.annotations.Nullable;
54 
59 public class SkinLoader {
60 
64  @NotNull
66 
70  @NotNull
72 
76  @NotNull
78 
82  @NotNull
83  private final SmoothFaces smoothFaces;
84 
88  @NotNull
89  private final GuiFactory guiFactory;
90 
94  @Nullable
95  private final Resolution resolution;
96 
100  @NotNull
101  private final Macros macros;
102 
106  @NotNull
108 
112  @NotNull
114 
118  @NotNull
120 
124  @NotNull
126 
130  @NotNull
131  private final CommandQueue commandQueue;
132 
136  @NotNull
137  private final JXCSkinLoader skinLoader;
138 
142  @NotNull
144 
148  @NotNull
149  private final Shortcuts shortcuts;
150 
169  public SkinLoader(@NotNull final CommandCallback commandCallback, @NotNull final MetaserverModel metaserverModel, @Nullable final Resolution resolution, @NotNull final Macros macros, @NotNull final JXCWindowRenderer windowRenderer, @NotNull final CrossfireServerConnection server, @NotNull final GuiStateManager guiStateManager, @NotNull final TooltipManager tooltipManager, @NotNull final CommandQueue commandQueue, @NotNull final JXCSkinLoader skinLoader, @NotNull final CommandExecutor commandExecutor, @NotNull final Shortcuts shortcuts, @NotNull final CharacterModel characterModel, @NotNull final SmoothFaces smoothFaces, @NotNull final GuiFactory guiFactory) {
170  this.commandCallback = commandCallback;
171  this.metaserverModel = metaserverModel;
172  this.resolution = resolution;
173  this.macros = macros;
174  this.windowRenderer = windowRenderer;
175  this.server = server;
176  this.guiStateManager = guiStateManager;
177  this.tooltipManager = tooltipManager;
178  this.commandQueue = commandQueue;
179  this.skinLoader = skinLoader;
180  this.commandExecutor = commandExecutor;
181  this.shortcuts = shortcuts;
182  this.characterModel = characterModel;
183  this.smoothFaces = smoothFaces;
184  this.guiFactory = guiFactory;
185  }
186 
193  @NotNull
194  public JXCSkin loadSkin(@NotNull final String skinName) throws JXCSkinException {
195  // check for skin in directory
196  final Path dir = Paths.get(skinName);
197  final JXCSkinSource skinSource = Files.exists(dir) && Files.isDirectory(dir) ? new JXCSkinDirSource(dir) : new JXCSkinClassSource("com/realtime/crossfire/jxclient/skins/"+skinName);
198  final GUIElementListener elementListener = new GUIElementListener() {
199 
200  @Override
201  public void raiseDialog(@NotNull final AbstractGUIElement component) {
202  final Gui gui = guiFactory.getGui(component);
203  if (gui != null) {
205  }
206  }
207 
208  @Override
209  public void activeChanged(@NotNull final ActivatableGUIElement element, final boolean active) {
210  final Gui gui = guiFactory.getGui(element);
211  if (gui != null) {
212  gui.setActiveElement(element, active);
213  }
214  }
215 
216  @Override
217  public boolean isActive(@NotNull final ActivatableGUIElement element) {
218  final Gui gui = guiFactory.getGui(element);
219  return gui != null && gui.isActiveElement(element);
220  }
221 
222  };
223 
225  if (resolution != null) {
227  throw new JXCSkinException("resolution "+resolution+" is not supported by this skin");
228  }
230  throw new JXCSkinException("resolution "+resolution+" is not supported by this skin");
231  }
232  }
233 
234  return skin;
235  }
236 
237 }
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.skin.skin
Definition: DefaultJXCSkin.java:23
com.realtime.crossfire.jxclient.main.SkinLoader.metaserverModel
final MetaserverModel metaserverModel
Definition: SkinLoader.java:71
com.realtime.crossfire.jxclient.faces.SmoothFaces
Definition: SmoothFaces.java:33
com.realtime.crossfire.jxclient.shortcuts.Shortcuts
Definition: Shortcuts.java:43
com.realtime.crossfire.jxclient.main.SkinLoader.resolution
final Resolution resolution
Definition: SkinLoader.java:95
com.realtime.crossfire.jxclient.server
com.realtime.crossfire.jxclient.main.SkinLoader.characterModel
final CharacterModel characterModel
Definition: SkinLoader.java:77
com.realtime.crossfire.jxclient.gui.gui.Gui
Definition: Gui.java:49
com.realtime.crossfire.jxclient.main.SkinLoader.guiFactory
final GuiFactory guiFactory
Definition: SkinLoader.java:89
com.realtime.crossfire.jxclient.util.Resolution.getWidth
int getWidth()
Definition: Resolution.java:88
com.realtime.crossfire.jxclient.skin
com.realtime.crossfire.jxclient.skin.source
Definition: AbstractJXCSkinSource.java:23
com.realtime.crossfire.jxclient.metaserver
Definition: DefaultMetaserver.java:23
com.realtime.crossfire.jxclient.main.SkinLoader.server
final CrossfireServerConnection server
Definition: SkinLoader.java:113
com.realtime.crossfire.jxclient.gui.gui.ActivatableGUIElement
Definition: ActivatableGUIElement.java:33
com.realtime.crossfire.jxclient.skin.io.JXCSkinLoader
Definition: JXCSkinLoader.java:182
com.realtime.crossfire.jxclient.skin.skin.GuiFactory
Definition: GuiFactory.java:41
com.realtime.crossfire.jxclient.gui.textinput
Definition: ActivateCommandInputCommand.java:23
com.realtime.crossfire.jxclient.faces
Definition: AbstractFaceQueue.java:23
com.realtime.crossfire.jxclient.skin.skin.JXCSkinException
Definition: JXCSkinException.java:31
com.realtime.crossfire.jxclient.gui.gui.Gui.setActiveElement
void setActiveElement(@NotNull final ActivatableGUIElement activeElement, final boolean active)
Definition: Gui.java:339
com.realtime.crossfire.jxclient.gui.textinput.CommandCallback
Definition: CommandCallback.java:33
com.realtime.crossfire.jxclient.settings
Definition: CommandHistory.java:23
com.realtime.crossfire.jxclient.gui.misc.JXCWindowRenderer
Definition: JXCWindowRenderer.java:87
com.realtime.crossfire.jxclient.skin.skin.JXCSkin
Definition: JXCSkin.java:42
com.realtime.crossfire.jxclient.guistate.GuiStateManager
Definition: GuiStateManager.java:34
com.realtime.crossfire.jxclient.guistate
Definition: ClientSocketState.java:23
com.realtime.crossfire.jxclient.main.SkinLoader.commandQueue
final CommandQueue commandQueue
Definition: SkinLoader.java:131
com.realtime.crossfire.jxclient.skin.io.JXCSkinLoader.load
JXCSkin load(@NotNull final JXCSkinSource skinSource, @NotNull final CrossfireServerConnection crossfireServerConnection, @NotNull final GuiStateManager guiStateManager, @NotNull final TooltipManager tooltipManager, @NotNull final JXCWindowRenderer windowRenderer, @NotNull final GUIElementListener elementListener, @NotNull final MetaserverModel metaserverModel, @NotNull final CharacterModel characterModel, @NotNull final CommandQueue commandQueue, @NotNull final Shortcuts shortcuts, @NotNull final CommandExecutor commandExecutor, @NotNull final CommandCallback commandCallback, @NotNull final Macros macros, @NotNull final SmoothFaces smoothFaces)
Definition: JXCSkinLoader.java:527
com.realtime.crossfire.jxclient.main.SkinLoader
Definition: SkinLoader.java:59
com.realtime.crossfire.jxclient.skin.skin.GuiFactory.getGui
Gui getGui(@NotNull final AbstractGUIElement element)
Definition: GuiFactory.java:110
com.realtime.crossfire.jxclient.server.crossfire.CrossfireServerConnection
Definition: CrossfireServerConnection.java:37
com.realtime.crossfire.jxclient.skin.source.JXCSkinSource
Definition: JXCSkinSource.java:34
com.realtime.crossfire.jxclient.settings.Macros
Definition: Macros.java:38
com.realtime.crossfire.jxclient.main.SkinLoader.guiStateManager
final GuiStateManager guiStateManager
Definition: SkinLoader.java:119
com.realtime.crossfire.jxclient.gui
com.realtime.crossfire.jxclient.queue.CommandQueue
Definition: CommandQueue.java:38
com.realtime.crossfire.jxclient.skin.io
Definition: Args.java:23
com.realtime.crossfire.jxclient.main.SkinLoader.commandCallback
final CommandCallback commandCallback
Definition: SkinLoader.java:65
com.realtime.crossfire.jxclient.main.SkinLoader.windowRenderer
final JXCWindowRenderer windowRenderer
Definition: SkinLoader.java:107
com.realtime.crossfire.jxclient.main.SkinLoader.loadSkin
JXCSkin loadSkin(@NotNull final String skinName)
Definition: SkinLoader.java:194
com.realtime.crossfire.jxclient.main.SkinLoader.smoothFaces
final SmoothFaces smoothFaces
Definition: SkinLoader.java:83
com.realtime.crossfire.jxclient.util
Definition: Codec.java:23
com.realtime.crossfire.jxclient.server.crossfire
Definition: AbstractCrossfireServerConnection.java:23
com.realtime.crossfire.jxclient.skin.skin.JXCSkin.getMaxResolution
Resolution getMaxResolution()
com.realtime.crossfire.jxclient.gui.textinput.CommandExecutor
Definition: CommandExecutor.java:31
com.realtime.crossfire.jxclient.gui.gui.TooltipManager
Definition: TooltipManager.java:33
com.realtime.crossfire.jxclient.account
Definition: CharacterInformation.java:23
com.realtime.crossfire.jxclient.shortcuts
Definition: Shortcut.java:23
com.realtime.crossfire.jxclient.main.SkinLoader.skinLoader
final JXCSkinLoader skinLoader
Definition: SkinLoader.java:137
com.realtime.crossfire.jxclient.skin.source.JXCSkinDirSource
Definition: JXCSkinDirSource.java:36
com.realtime.crossfire.jxclient.skin.skin.JXCSkin.getMinResolution
Resolution getMinResolution()
com.realtime.crossfire.jxclient.skin.source.JXCSkinClassSource
Definition: JXCSkinClassSource.java:34
com.realtime.crossfire.jxclient.gui.gui
Definition: AbstractGUIElement.java:23
com.realtime.crossfire.jxclient.queue
Definition: CommandQueue.java:23
com.realtime.crossfire
com.realtime.crossfire.jxclient.main.SkinLoader.commandExecutor
final CommandExecutor commandExecutor
Definition: SkinLoader.java:143
com.realtime
com.realtime.crossfire.jxclient.util.Resolution
Definition: Resolution.java:36
com
com.realtime.crossfire.jxclient.main.SkinLoader.tooltipManager
final TooltipManager tooltipManager
Definition: SkinLoader.java:125
com.realtime.crossfire.jxclient.gui.misc.JXCWindowRenderer.raiseDialog
void raiseDialog(@NotNull final Gui dialog)
Definition: JXCWindowRenderer.java:698
com.realtime.crossfire.jxclient.gui.gui.Gui.isActiveElement
boolean isActiveElement(@Nullable final ActivatableGUIElement activeElement)
Definition: Gui.java:381
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement
Definition: AbstractGUIElement.java:37
com.realtime.crossfire.jxclient.gui.misc
Definition: GUICheckBox.java:23
com.realtime.crossfire.jxclient.main.SkinLoader.macros
final Macros macros
Definition: SkinLoader.java:101
com.realtime.crossfire.jxclient.metaserver.MetaserverModel
Definition: MetaserverModel.java:40
com.realtime.crossfire.jxclient.main.SkinLoader.SkinLoader
SkinLoader(@NotNull final CommandCallback commandCallback, @NotNull final MetaserverModel metaserverModel, @Nullable final Resolution resolution, @NotNull final Macros macros, @NotNull final JXCWindowRenderer windowRenderer, @NotNull final CrossfireServerConnection server, @NotNull final GuiStateManager guiStateManager, @NotNull final TooltipManager tooltipManager, @NotNull final CommandQueue commandQueue, @NotNull final JXCSkinLoader skinLoader, @NotNull final CommandExecutor commandExecutor, @NotNull final Shortcuts shortcuts, @NotNull final CharacterModel characterModel, @NotNull final SmoothFaces smoothFaces, @NotNull final GuiFactory guiFactory)
Definition: SkinLoader.java:169
com.realtime.crossfire.jxclient.gui.gui.GUIElementListener
Definition: GUIElementListener.java:32
com.realtime.crossfire.jxclient.account.CharacterModel
Definition: CharacterModel.java:40
com.realtime.crossfire.jxclient.util.Resolution.getHeight
int getHeight()
Definition: Resolution.java:96
com.realtime.crossfire.jxclient.main.SkinLoader.shortcuts
final Shortcuts shortcuts
Definition: SkinLoader.java:149