Crossfire JXClient, Trunk
GUIStartingMapsComboBox.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.gui.combobox;
24 
34 import java.awt.Component;
35 import java.util.ArrayList;
36 import java.util.List;
37 import javax.swing.JLabel;
38 import javax.swing.JList;
39 import org.jetbrains.annotations.NotNull;
40 import org.jetbrains.annotations.Nullable;
41 
47 public class GUIStartingMapsComboBox extends GUIComboBox<String> {
48 
52  private static final long serialVersionUID = 1L;
53 
57  @NotNull
58  private final Model model;
59 
63  @NotNull
64  private final NewCharModel newCharModel;
65 
69  @NotNull
70  private final JLabel renderer = new JLabel();
71 
75  @NotNull
77 
78  @Override
79  public void classListChanged() {
80  // ignore
81  }
82 
83  @Override
84  public void classInfoChanged(@NotNull final String className) {
85  // ignore
86  }
87 
88  @Override
89  public void raceListChanged() {
90  // ignore
91  }
92 
93  @Override
94  public void raceInfoChanged(@NotNull final String raceName) {
95  // ignore
96  }
97 
98  @Override
99  public void startingMapListChanged() {
100  updateModel();
101  }
102 
103  @Override
104  public void startingMapInfoChanged(@NotNull final String startingMapName) {
105  updateModel();
107  }
108 
109  };
110 
114  @NotNull
116 
117  @Override
118  public void changed() {
120  }
121 
122  };
123 
134  public GUIStartingMapsComboBox(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final Model model, @NotNull final NewCharModel newCharModel, @Nullable final GUILabelLog label, @NotNull final GuiFactory guiFactory) {
135  super(tooltipManager, elementListener, name, label, guiFactory);
136  this.model = model;
137  this.newCharModel = newCharModel;
140  updateModel();
142  }
143 
144  @Override
145  public void dispose() {
146  super.dispose();
149  }
150 
151  @Override
152  public void notifyOpen() {
153  }
154 
159  private void updateModel() {
160  final List<String> tmp = new ArrayList<>(model.getNewCharacterInformation().getStartingMapList());
161  tmp.sort((o1, o2) -> {
162  final StartingMap info1 = model.getNewCharacterInformation().getStartingMapInfo(o1);
163  final StartingMap info2 = model.getNewCharacterInformation().getStartingMapInfo(o2);
164  return info1 == null || info2 == null ? 0 : info1.getName().compareTo(info2.getName());
165  });
166  updateModel(tmp);
168  }
169 
170  @NotNull
171  @Override
172  protected Component getListCellRendererComponent(@NotNull final JList<? extends String> list, @Nullable final String value, final int index, final boolean selected, final boolean cellHasFocus) {
173  final StartingMap startingMapInfo = value == null ? null : model.getNewCharacterInformation().getStartingMapInfo(value);
174  renderer.setText(startingMapInfo == null ? value : startingMapInfo.getName());
175  return renderer;
176  }
177 
178  @Override
179  protected void updateSelectedItem(@Nullable final String item) {
180  if (item != null) {
182  }
183  }
184 
185  @NotNull
186  @Override
187  protected String getDescription(@Nullable final String item) {
188  final StartingMap startingMap = item == null ? null : model.getNewCharacterInformation().getStartingMapInfo(item);
189  return startingMap == null ? "" : startingMap.getDescription();
190  }
191 
192 }
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.skin.skin
Definition: DefaultJXCSkin.java:23
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.model
final Model model
Definition: GUIStartingMapsComboBox.java:58
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.updateSelectedItem
void updateSelectedItem(@Nullable final String item)
Definition: GUIStartingMapsComboBox.java:179
com.realtime.crossfire.jxclient.character.NewCharacterInformationListener
Definition: NewCharacterInformationListener.java:33
com.realtime.crossfire.jxclient.server.crossfire.Model.getNewCharacterInformation
NewCharacterInformation getNewCharacterInformation()
Definition: Model.java:156
com.realtime.crossfire.jxclient.server
com.realtime.crossfire.jxclient.gui.label.NewCharModelListener
Definition: NewCharModelListener.java:30
com.realtime.crossfire.jxclient.skin
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.renderer
final JLabel renderer
Definition: GUIStartingMapsComboBox.java:70
com.realtime.crossfire.jxclient.gui.combobox.GUIComboBox< String >::setSelectedItem
void setSelectedItem( @NotNull final T item)
Definition: GUIComboBox.java:221
com.realtime.crossfire.jxclient.gui.label
Definition: AbstractLabel.java:23
com.realtime.crossfire.jxclient.gui.label.NewCharModel.addListener
void addListener(@NotNull final NewCharModelListener listener)
Definition: NewCharModel.java:208
com.realtime.crossfire.jxclient.skin.skin.GuiFactory
Definition: GuiFactory.java:41
com.realtime.crossfire.jxclient.gui.log.GUILabelLog
Definition: GUILabelLog.java:38
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.serialVersionUID
static final long serialVersionUID
Definition: GUIStartingMapsComboBox.java:52
com.realtime.crossfire.jxclient.character.NewCharacterInformation.getStartingMapList
List< String > getStartingMapList()
Definition: NewCharacterInformation.java:129
com.realtime.crossfire.jxclient.gui.label.NewCharModel.getStartingMap
String getStartingMap()
Definition: NewCharModel.java:299
com.realtime.crossfire.jxclient.gui.log
Definition: Buffer.java:23
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.updateModel
void updateModel()
Definition: GUIStartingMapsComboBox.java:159
com.realtime.crossfire.jxclient.gui.combobox.GUIComboBox
Definition: GUIComboBox.java:50
com.realtime.crossfire.jxclient.character.NewCharacterInformation.getStartingMapInfo
StartingMap getStartingMapInfo(@NotNull final String name)
Definition: NewCharacterInformation.java:151
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.newCharModelListener
final NewCharModelListener newCharModelListener
Definition: GUIStartingMapsComboBox.java:115
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.dispose
void dispose()
Definition: GUIStartingMapsComboBox.java:145
com.realtime.crossfire.jxclient.character.StartingMap.getName
String getName()
Definition: StartingMap.java:77
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.getListCellRendererComponent
Component getListCellRendererComponent(@NotNull final JList<? extends String > list, @Nullable final String value, final int index, final boolean selected, final boolean cellHasFocus)
Definition: GUIStartingMapsComboBox.java:172
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.newCharacterInformationListener
final NewCharacterInformationListener newCharacterInformationListener
Definition: GUIStartingMapsComboBox.java:76
com.realtime.crossfire.jxclient.gui.combobox.GUIComboBox< String >::updateSelectedItem
void updateSelectedItem()
Definition: GUIComboBox.java:195
com.realtime.crossfire.jxclient.server.crossfire.Model
Definition: Model.java:43
com.realtime.crossfire.jxclient.character.StartingMap
Definition: StartingMap.java:31
com.realtime.crossfire.jxclient.gui.combobox.GUIComboBox< String >::label
final GUILabelLog label
Definition: GUIComboBox.java:79
com.realtime.crossfire.jxclient.gui
com.realtime.crossfire.jxclient.character.NewCharacterInformation.removeNewCharacterInformationListener
void removeNewCharacterInformationListener(@NotNull final NewCharacterInformationListener newCharacterInformationListener)
Definition: NewCharacterInformation.java:103
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox
Definition: GUIStartingMapsComboBox.java:47
com.realtime.crossfire.jxclient.server.crossfire
Definition: AbstractCrossfireServerConnection.java:23
com.realtime.crossfire.jxclient.gui.gui.TooltipManager
Definition: TooltipManager.java:33
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.GUIStartingMapsComboBox
GUIStartingMapsComboBox(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final Model model, @NotNull final NewCharModel newCharModel, @Nullable final GUILabelLog label, @NotNull final GuiFactory guiFactory)
Definition: GUIStartingMapsComboBox.java:134
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.newCharModel
final NewCharModel newCharModel
Definition: GUIStartingMapsComboBox.java:64
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.notifyOpen
void notifyOpen()
Definition: GUIStartingMapsComboBox.java:152
com.realtime.crossfire.jxclient.gui.label.NewCharModel
Definition: NewCharModel.java:43
com.realtime.crossfire.jxclient.gui.gui
Definition: AbstractGUIElement.java:23
com.realtime.crossfire.jxclient.character.StartingMap.getDescription
String getDescription()
Definition: StartingMap.java:86
com.realtime.crossfire.jxclient.gui.label.NewCharModel.setStartingMap
void setStartingMap(@NotNull final String startingMap)
Definition: NewCharModel.java:307
com.realtime.crossfire.jxclient.gui.combobox.GUIStartingMapsComboBox.getDescription
String getDescription(@Nullable final String item)
Definition: GUIStartingMapsComboBox.java:187
com.realtime.crossfire
com.realtime
com
com.realtime.crossfire.jxclient.character
Definition: Choice.java:23
com.realtime.crossfire.jxclient.character.NewCharacterInformation.addNewCharacterInformationListener
void addNewCharacterInformationListener(@NotNull final NewCharacterInformationListener newCharacterInformationListener)
Definition: NewCharacterInformation.java:94
com.realtime.crossfire.jxclient.gui.label.NewCharModel.removeListener
void removeListener(@NotNull final NewCharModelListener listener)
Definition: NewCharModel.java:216
com.realtime.crossfire.jxclient.gui.gui.GUIElementListener
Definition: GUIElementListener.java:32