Gridarta Editor
AbstractFilterConfig.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2015 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.model.filter;
21 
22 import java.util.Collection;
23 import java.util.concurrent.CopyOnWriteArrayList;
25 import org.apache.log4j.Category;
26 import org.apache.log4j.Logger;
27 import org.jetbrains.annotations.NotNull;
28 
33 public abstract class AbstractFilterConfig<F extends Filter<F, C>, C extends FilterConfig<F, C>> implements FilterConfig<F, C> {
34 
38  @NotNull
39  private static final Category LOG = Logger.getLogger(AbstractFilterConfig.class);
40 
44  private boolean enabled;
45 
49  @NotNull
50  private final Collection<FilterConfigListener> listenerList = new CopyOnWriteArrayList<>();
51 
55  @NotNull
56  private final F filter;
57 
62  protected AbstractFilterConfig(@NotNull final F filter) {
63  this.filter = filter;
64  }
65 
66  @NotNull
67  @Override
68  public F getFilter() {
69  return filter;
70  }
71 
72  @Override
73  public void setEnabled(final boolean enabled) {
74  if (this.enabled == enabled) {
75  return;
76  }
77  this.enabled = enabled;
78 
79  if (LOG.isDebugEnabled()) {
80  LOG.debug((enabled ? "enabling" : "disabling") + " filter");
81  }
83  }
84 
85  @Override
86  public boolean isEnabled() {
87  return enabled;
88  }
89 
95  protected void fireEvent(@NotNull final FilterConfigChangeType filterConfigChangeType, @NotNull final FilterConfig<?, ?> filterConfig) {
96  for (final FilterConfigListener listener : listenerList) {
97  listener.configChanged(filterConfigChangeType, filterConfig);
98  }
99  }
100 
101  @Override
102  public void addConfigChangeListener(@NotNull final FilterConfigListener listener) {
103  listenerList.add(listener);
104  }
105 
106  @Override
107  public void removeConfigChangeListener(@NotNull final FilterConfigListener listener) {
108  listenerList.remove(listener);
109  }
110 
111  @Override
112  public boolean match(@NotNull final GameObject<?, ?, ?> gameObject) {
113  return filter.match(getThis(), gameObject);
114  }
115 
116  @Override
117  public boolean reset() {
118  return filter.reset(getThis());
119  }
120 
125  @NotNull
126  protected abstract C getThis();
127 
128 }
net.sf.gridarta.model.filter.AbstractFilterConfig.fireEvent
void fireEvent(@NotNull final FilterConfigChangeType filterConfigChangeType, @NotNull final FilterConfig<?, ?> filterConfig)
Definition: AbstractFilterConfig.java:95
net.sf.gridarta.model.filter.AbstractFilterConfig.LOG
static final Category LOG
Definition: AbstractFilterConfig.java:39
net.sf.gridarta.model.filter.Filter
Definition: Filter.java:33
net.sf.gridarta
net.sf.gridarta.model.filter.AbstractFilterConfig.filter
final F filter
Definition: AbstractFilterConfig.java:56
net.sf.gridarta.model.filter.FilterConfigChangeType.ENABLE
ENABLE
Definition: FilterConfigChangeType.java:31
net.sf.gridarta.model.filter.AbstractFilterConfig.getFilter
F getFilter()
Definition: AbstractFilterConfig.java:68
net.sf
net.sf.gridarta.model.filter.AbstractFilterConfig.setEnabled
void setEnabled(final boolean enabled)
Definition: AbstractFilterConfig.java:73
net.sf.gridarta.model.filter.FilterConfigChangeType
Definition: FilterConfigChangeType.java:26
net.sf.gridarta.model.gameobject.GameObject
Definition: GameObject.java:36
net.sf.gridarta.model.filter.FilterConfigListener
Definition: FilterConfigListener.java:30
net.sf.gridarta.model.filter.FilterConfig
Definition: FilterConfig.java:29
net.sf.gridarta.model.gameobject
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.model.filter.FilterConfigChangeType.DISABLE
DISABLE
Definition: FilterConfigChangeType.java:36
net.sf.gridarta.model.filter.AbstractFilterConfig.getThis
abstract C getThis()
net.sf.gridarta.model.filter.AbstractFilterConfig.addConfigChangeListener
void addConfigChangeListener(@NotNull final FilterConfigListener listener)
Definition: AbstractFilterConfig.java:102
net.sf.gridarta.model.filter.AbstractFilterConfig.listenerList
final Collection< FilterConfigListener > listenerList
Definition: AbstractFilterConfig.java:50
net.sf.gridarta.model.filter.AbstractFilterConfig.match
boolean match(@NotNull final GameObject<?, ?, ?> gameObject)
Definition: AbstractFilterConfig.java:112
net.sf.gridarta.model
net.sf.gridarta.model.filter.AbstractFilterConfig.enabled
boolean enabled
Definition: AbstractFilterConfig.java:44
net.sf.gridarta.var.crossfire.model.gameobject.GameObject<?, ?, ?>
net.sf.gridarta.model.filter.AbstractFilterConfig.removeConfigChangeListener
void removeConfigChangeListener(@NotNull final FilterConfigListener listener)
Definition: AbstractFilterConfig.java:107
net.sf.gridarta.model.filter.AbstractFilterConfig.isEnabled
boolean isEnabled()
Definition: AbstractFilterConfig.java:86
net.sf.gridarta.model.filter.AbstractFilterConfig
Definition: AbstractFilterConfig.java:33
net.sf.gridarta.model.filter.AbstractFilterConfig.AbstractFilterConfig
AbstractFilterConfig(@NotNull final F filter)
Definition: AbstractFilterConfig.java:62
net.sf.gridarta.model.filter.AbstractFilterConfig.reset
boolean reset()
Definition: AbstractFilterConfig.java:117