23 package com.realtime.crossfire.jxclient.main;
45 import java.awt.Dimension;
46 import java.awt.Insets;
47 import java.awt.event.ComponentEvent;
48 import java.awt.event.ComponentListener;
49 import java.awt.event.KeyEvent;
50 import java.awt.event.KeyListener;
51 import java.awt.event.WindowAdapter;
52 import java.awt.event.WindowEvent;
53 import java.awt.event.WindowFocusListener;
54 import java.awt.event.WindowListener;
55 import java.io.IOException;
56 import javax.swing.JFrame;
57 import javax.swing.SwingUtilities;
58 import javax.swing.WindowConstants;
59 import org.jetbrains.annotations.NotNull;
60 import org.jetbrains.annotations.Nullable;
120 private final JFrame
frame =
new JFrame(
"");
134 @SuppressWarnings(
"FieldCanBeLocal")
138 @SuppressWarnings(
"MethodDoesntCallSuperMethod")
139 public void windowLostFocus(
final WindowEvent e) {
154 public void delinvReceived(
final int tag) {
159 public void delitemReceived(
final int @NotNull [] tags) {
164 public void addItemReceived(
final int location,
final int tag,
final int flags,
final int weight,
final int faceNum, @NotNull
final String name, @NotNull
final String namePl,
final int anim,
final int animSpeed,
final int nrof,
final int type) {
169 public void playerReceived(
final int tag,
final int weight,
final int faceNum, @NotNull
final String name) {
170 SwingUtilities.invokeLater(guiManager::playerReceived);
174 public void upditemReceived(
final int flags,
final int tag,
final int valLocation,
final int valFlags,
final int valWeight,
final int valFaceNum, @NotNull
final String valName, @NotNull
final String valNamePl,
final int valAnim,
final int valAnimSpeed,
final int valNrof) {
184 @SuppressWarnings(
"FieldCanBeLocal")
188 @SuppressWarnings(
"MethodDoesntCallSuperMethod")
189 public void windowClosing(@NotNull
final WindowEvent e) {
196 @SuppressWarnings(
"MethodDoesntCallSuperMethod")
197 public void windowClosed(@NotNull
final WindowEvent e) {
198 if (!
frame.isVisible()) {
209 @SuppressWarnings(
"FieldCanBeLocal")
213 public void keyTyped(@NotNull
final KeyEvent e) {
218 public void keyPressed(@NotNull
final KeyEvent e) {
223 public void keyReleased(@NotNull
final KeyEvent e) {
237 public void commandQueryReceived(@NotNull
final String prompt,
final int queryType) {
248 @SuppressWarnings(
"FieldCanBeLocal")
252 public void start() {
261 public void metaserver() {
267 public void preConnecting(@NotNull
final String serverInfo) {
272 public void connecting(@NotNull
final String serverInfo) {
278 public void connecting(@NotNull
final ClientSocketState clientSocketState, @NotNull
final String param) {
283 public void connected() {
288 public void connectFailed(@NotNull
final String reason) {
299 @SuppressWarnings(
"FieldCanBeLocal")
303 public void markSent(
final int tag) {
308 public void replySent() {
318 @SuppressWarnings(
"FieldCanBeLocal")
322 public void manageAccount() {
323 SwingUtilities.invokeLater(guiManager::manageAccount);
332 public void startAccountList(@NotNull
final String accountName) {
333 SwingUtilities.invokeLater(() -> {
340 public void endAccountList(
final int count) {
341 SwingUtilities.invokeLater(() -> {
348 public void startPlaying() {
349 SwingUtilities.invokeLater(guiManager::hideAccountWindows);
353 public void selectCharacter(@NotNull
final String accountName, @NotNull
final String characterName) {
375 public JXCWindow(@NotNull
final Exiter exiter, @NotNull
final CrossfireServerConnection server, @NotNull
final OptionManager optionManager, @NotNull
final GuiStateManager guiStateManager, @NotNull
final JXCWindowRenderer windowRenderer, @NotNull
final CommandQueue commandQueue, @NotNull
final GuiManager guiManager, @NotNull
final KeyHandler keyHandler, @NotNull
final CharacterModel characterModel, @NotNull
final JXCConnection connection, @Nullable
final Resolution resolution,
final boolean fullScreen, @NotNull
final JXCSkin skin) {
383 frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
386 }
catch (
final IOException ex) {
387 System.err.println(
"Cannot find application icon: "+ex.getMessage());
389 frame.setFocusTraversalKeysEnabled(
false);
392 frame.addComponentListener(
new ComponentListener() {
395 public void componentResized(
final ComponentEvent e) {
396 final int width =
frame.getContentPane().getWidth();
397 final int height =
frame.getContentPane().getHeight();
402 public void componentMoved(
final ComponentEvent e) {
407 public void componentShown(
final ComponentEvent e) {
412 public void componentHidden(
final ComponentEvent e) {
421 connection.setFrame(
frame);
427 final Resolution minResolution = skin.getMinResolution();
428 final Dimension minSize = minResolution.
asDimension();
429 final Dimension maxSize = skin.getMaxResolution().asDimension();
430 final Insets insets =
frame.getInsets();
431 minSize.width += insets.left+insets.right;
432 minSize.height += insets.top+insets.bottom;
433 maxSize.width += insets.left+insets.right;
434 maxSize.height += insets.top+insets.bottom;
435 frame.setMinimumSize(minSize);
436 frame.setMaximumSize(maxSize);
438 if (!fullScreen || !windowRenderer.setFullScreenMode(
frame, resolution)) {
439 windowRenderer.setWindowMode(
frame, resolution, minResolution, minSize.
equals(maxSize));