Crossfire JXClient, Trunk
src
gui
src
main
java
com
realtime
crossfire
jxclient
settings
options
OptionManager.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.settings.options;
24
25
import
com
.
realtime
.
crossfire
.
jxclient
.
settings
.
Settings
;
26
import
com
.
realtime
.
crossfire
.
jxclient
.
settings
.
SettingsEntry
;
27
import
java.util.Collections;
28
import
java.util.HashMap;
29
import
java.util.Map;
30
import
org.jetbrains.annotations.NotNull;
31
36
public
class
OptionManager
{
37
41
@NotNull
42
private
final
Map<String, Entry>
options
=
new
HashMap<>();
43
47
@NotNull
48
private
final
Settings
settings
;
49
54
public
OptionManager
(@NotNull
final
Settings
settings
) {
55
this.settings =
settings
;
56
}
57
65
public
void
addOption
(@NotNull
final
String optionName, @NotNull
final
String documentation, @NotNull
final
Option
option)
throws
OptionException
{
66
if
(
options
.containsKey(optionName)) {
67
throw
new
OptionException
(
"duplicate option name: "
+optionName);
68
}
69
70
options
.put(optionName,
new
Entry
(option, documentation));
71
}
72
77
public
void
removeOption
(@NotNull
final
String optionName) {
78
options
.remove(optionName);
79
}
80
85
@NotNull
86
public
Map<String, Entry>
getOptions
() {
87
return
Collections.unmodifiableMap(
options
);
88
}
89
96
@NotNull
97
public
CheckBoxOption
getCheckBoxOption
(@NotNull
final
String optionName)
throws
OptionException
{
98
final
Entry
entry =
options
.get(optionName);
99
if
(entry ==
null
|| !(entry.
getOption
() instanceof
CheckBoxOption
)) {
100
throw
new
OptionException
(
"Unknown option '"
+optionName+
"'"
);
101
}
102
103
return
(
CheckBoxOption
)entry.
getOption
();
104
}
105
109
public
void
loadOptions
() {
110
for
(Map.Entry<String,
Entry
> e :
options
.entrySet()) {
111
final
String optionName = e.getKey();
112
final
Object option = e.getValue().getOption();
113
if
(option instanceof
CheckBoxOption
) {
114
final
CheckBoxOption
checkBoxOption = (
CheckBoxOption
)option;
115
final
boolean
checked =
settings
.
getBoolean
(
new
SettingsEntry<>
(optionName, checkBoxOption.
isDefaultChecked
(),
null
));
116
if
(checkBoxOption.
isChecked
() == checked) {
117
// make sure the appropriate option command is executed
118
checkBoxOption.
fireStateChangedEvent
();
119
}
else
{
120
checkBoxOption.
setChecked
(checked);
121
}
122
}
else
{
123
throw
new
AssertionError();
124
}
125
}
126
}
127
131
public
void
saveOptions
() {
132
for
(Map.Entry<String,
Entry
> e :
options
.entrySet()) {
133
final
String optionName = e.getKey();
134
final
Entry
entry = e.getValue();
135
final
Option
option = entry.
getOption
();
136
if
(!option.
inhibitSave
()) {
137
if
(option instanceof
CheckBoxOption
) {
138
final
CheckBoxOption
checkBoxOption = (
CheckBoxOption
)option;
139
settings
.
putBoolean
(
new
SettingsEntry<>
(optionName,
false
, entry.
getDocumentation
()), checkBoxOption.
isChecked
());
140
}
else
{
141
throw
new
AssertionError();
142
}
143
}
144
}
145
}
146
151
public
static
class
Entry
{
152
156
@NotNull
157
private
final
Option
option
;
158
162
@NotNull
163
private
final
String
documentation
;
164
170
private
Entry
(@NotNull
final
Option
option
, @NotNull
final
String
documentation
) {
171
this.option =
option
;
172
this.documentation =
documentation
;
173
}
174
179
@NotNull
180
public
Option
getOption
() {
181
return
option
;
182
}
183
188
@NotNull
189
public
String
getDocumentation
() {
190
return
documentation
;
191
}
192
193
}
194
195
}
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.settings.options.OptionManager.options
final Map< String, Entry > options
Definition:
OptionManager.java:42
com.realtime.crossfire.jxclient.settings.options.OptionManager.removeOption
void removeOption(@NotNull final String optionName)
Definition:
OptionManager.java:77
com.realtime.crossfire.jxclient.settings.options.OptionManager.Entry.getOption
Option getOption()
Definition:
OptionManager.java:180
com.realtime.crossfire.jxclient.settings.options.CheckBoxOption.setChecked
void setChecked(final boolean checked)
Definition:
CheckBoxOption.java:65
com.realtime.crossfire.jxclient.settings.options.OptionException
Definition:
OptionException.java:31
com.realtime.crossfire.jxclient.settings.options.OptionManager.loadOptions
void loadOptions()
Definition:
OptionManager.java:109
com.realtime.crossfire.jxclient.settings.options.OptionManager.Entry
Definition:
OptionManager.java:151
com.realtime.crossfire.jxclient.settings.options.OptionManager.Entry.Entry
Entry(@NotNull final Option option, @NotNull final String documentation)
Definition:
OptionManager.java:170
com.realtime.crossfire.jxclient.settings
Definition:
CommandHistory.java:23
com.realtime.crossfire.jxclient.settings.Settings.putBoolean
void putBoolean(@NotNull final SettingsEntry< Boolean > key, final boolean value)
Definition:
Settings.java:151
com.realtime.crossfire.jxclient.settings.options.OptionManager.saveOptions
void saveOptions()
Definition:
OptionManager.java:131
com.realtime.crossfire.jxclient.settings.options.OptionManager.settings
final Settings settings
Definition:
OptionManager.java:48
com.realtime.crossfire.jxclient.settings.options.CheckBoxOption.fireStateChangedEvent
void fireStateChangedEvent()
Definition:
CheckBoxOption.java:89
com.realtime.crossfire.jxclient.settings.Settings
Definition:
Settings.java:45
com.realtime.crossfire.jxclient.settings.options.OptionManager.getOptions
Map< String, Entry > getOptions()
Definition:
OptionManager.java:86
com.realtime.crossfire.jxclient.settings.options.CheckBoxOption.isChecked
boolean isChecked()
Definition:
CheckBoxOption.java:57
com.realtime.crossfire.jxclient.settings.options.OptionManager.OptionManager
OptionManager(@NotNull final Settings settings)
Definition:
OptionManager.java:54
com.realtime.crossfire.jxclient.settings.options.Option.inhibitSave
boolean inhibitSave()
Definition:
Option.java:72
com.realtime.crossfire
com.realtime.crossfire.jxclient.settings.options.OptionManager.Entry.getDocumentation
String getDocumentation()
Definition:
OptionManager.java:189
com.realtime.crossfire.jxclient.settings.options.OptionManager.Entry.option
final Option option
Definition:
OptionManager.java:157
com.realtime.crossfire.jxclient.settings.options.OptionManager.getCheckBoxOption
CheckBoxOption getCheckBoxOption(@NotNull final String optionName)
Definition:
OptionManager.java:97
com.realtime
com
com.realtime.crossfire.jxclient.settings.options.Option
Definition:
Option.java:33
com.realtime.crossfire.jxclient.settings.options.CheckBoxOption.isDefaultChecked
abstract boolean isDefaultChecked()
com.realtime.crossfire.jxclient.settings.Settings.getBoolean
boolean getBoolean(@NotNull final SettingsEntry< Boolean > key)
Definition:
Settings.java:95
com.realtime.crossfire.jxclient.settings.options.CheckBoxOption
Definition:
CheckBoxOption.java:32
com.realtime.crossfire.jxclient.settings.options.OptionManager.Entry.documentation
final String documentation
Definition:
OptionManager.java:163
com.realtime.crossfire.jxclient.settings.options.OptionManager
Definition:
OptionManager.java:36
com.realtime.crossfire.jxclient.settings.options.OptionManager.addOption
void addOption(@NotNull final String optionName, @NotNull final String documentation, @NotNull final Option option)
Definition:
OptionManager.java:65
com.realtime.crossfire.jxclient.settings.SettingsEntry
Definition:
SettingsEntry.java:34
Generated by
1.8.17