Gridarta Editor
FilterMenuEntry.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.gui.filter;
21 
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import java.util.Map.Entry;
25 import javax.swing.JComponent;
26 import javax.swing.JMenu;
32 import org.apache.log4j.Category;
33 import org.apache.log4j.Logger;
34 import org.jetbrains.annotations.NotNull;
35 
36 public class FilterMenuEntry extends JMenu implements NamedFilterListener {
37 
41  @NotNull
42  private static final Category LOG = Logger.getLogger(FilterMenuEntry.class);
43 
47  private static final long serialVersionUID = 1L;
48 
49  @NotNull
50  private final NamedFilterConfig config;
51 
52  @NotNull
53  private final Collection<FilterComponent> components = new ArrayList<>();
54 
55  public FilterMenuEntry(@NotNull final NamedFilterConfig config) {
56  super("");
57  this.config = config;
58  config.getFilter().addFilterListener(this);
59  populateComponent(this);
60  }
61 
62  private void populateComponent(@NotNull final JComponent component) {
63  final FilterComponent filterComponent = new FilterComponent(component, config);
64  for (final Entry<String, FilterConfig<?, ?>> entry : config.getEntries().entrySet()) {
65  filterComponent.addFilter(entry.getKey(), entry.getValue());
66  }
67  components.add(filterComponent);
68  }
69 
70  @NotNull
71  public JComponent getMenuBarComponent() {
72  final JComponent menu = new JMenu(getName());
73  populateComponent(menu);
74  return menu;
75  }
76 
77  @NotNull
78  private JComponent getMenuItemComponent() {
79  final JComponent menu = new JMenu(getName());
80  populateComponent(menu);
81  return menu;
82  }
83 
84  @NotNull
85  public JComponent getToolbarComponent() {
86  return new BtnPopup((JMenu) getMenuItemComponent(), getName()).getButton();
87  }
88 
89  @Override
90  public void nameFilterChanged(@NotNull final NamedFilterChangeType type, @NotNull final String filterName, @NotNull final Filter<?, ?> filter) {
91  switch (type) {
92  case ADD:
93  for (final FilterComponent filterComponent : components) {
94  if (LOG.isDebugEnabled()) {
95  LOG.debug("set sub filter enabled(), calling on " + filterName);
96  }
97  config.setSubFilterEnabled(filterName, false);
98  filterComponent.addFilter(filterName, config.getConfig(filterName));
99  }
100  break;
101 
102  case REMOVE:
103  for (final FilterComponent filterComponent : components) {
104  filterComponent.removeFilter(filterName);
105  }
106  break;
107  }
108  }
109 
110 }
net.sf.gridarta.gui.filter.FilterMenuEntry.serialVersionUID
static final long serialVersionUID
Definition: FilterMenuEntry.java:47
net.sf.gridarta.gui.filter.FilterMenuEntry.getToolbarComponent
JComponent getToolbarComponent()
Definition: FilterMenuEntry.java:85
net.sf.gridarta.model.filter.Filter
Definition: Filter.java:33
net.sf.gridarta.model.filter.NamedFilterChangeType
Definition: NamedFilterChangeType.java:26
net.sf.gridarta
net.sf.gridarta.gui.filter.BtnPopup
Definition: BtnPopup.java:30
net.sf.gridarta.gui.filter.FilterComponent
Definition: FilterComponent.java:45
net.sf.gridarta.model.filter.AbstractFilterConfig.getFilter
F getFilter()
Definition: AbstractFilterConfig.java:68
net.sf
net.sf.gridarta.gui.filter.BtnPopup.getButton
JComponent getButton()
Definition: BtnPopup.java:53
net.sf.gridarta.model.filter.NamedFilterConfig
Definition: NamedFilterConfig.java:34
net.sf.gridarta.gui.filter.FilterMenuEntry.components
final Collection< FilterComponent > components
Definition: FilterMenuEntry.java:53
net.sf.gridarta.model.filter.NamedFilterConfig.getEntries
Map< String, FilterConfig<?, ?> > getEntries()
Definition: NamedFilterConfig.java:183
net.sf.gridarta.gui.filter.FilterMenuEntry.getMenuItemComponent
JComponent getMenuItemComponent()
Definition: FilterMenuEntry.java:78
net.sf.gridarta.model.filter.FilterConfig
Definition: FilterConfig.java:29
net
net.sf.gridarta.gui.filter.FilterComponent.addFilter
void addFilter(@NotNull final String name, @NotNull final FilterConfig<?, ?> config)
Definition: FilterComponent.java:117
net.sf.gridarta.model.filter.NamedFilterListener
Definition: NamedFilterListener.java:29
net.sf.gridarta.model.filter
Definition: AbstractFilterConfig.java:20
net.sf.gridarta.gui.filter.FilterMenuEntry
Definition: FilterMenuEntry.java:36
net.sf.gridarta.model.filter.NamedFilterConfig.setSubFilterEnabled
void setSubFilterEnabled(@NotNull final String name, final boolean enabled)
Definition: NamedFilterConfig.java:164
net.sf.gridarta.model
net.sf.gridarta.gui.filter.FilterMenuEntry.FilterMenuEntry
FilterMenuEntry(@NotNull final NamedFilterConfig config)
Definition: FilterMenuEntry.java:55
net.sf.gridarta.gui.filter.FilterMenuEntry.LOG
static final Category LOG
Definition: FilterMenuEntry.java:42
net.sf.gridarta.gui.filter.FilterMenuEntry.getMenuBarComponent
JComponent getMenuBarComponent()
Definition: FilterMenuEntry.java:71
net.sf.gridarta.gui.filter.FilterMenuEntry.config
final NamedFilterConfig config
Definition: FilterMenuEntry.java:50
net.sf.gridarta.model.filter.NamedFilterConfig.getConfig
FilterConfig<?, ?> getConfig(@NotNull final String name)
Definition: NamedFilterConfig.java:142
net.sf.gridarta.gui.filter.FilterMenuEntry.nameFilterChanged
void nameFilterChanged(@NotNull final NamedFilterChangeType type, @NotNull final String filterName, @NotNull final Filter<?, ?> filter)
Definition: FilterMenuEntry.java:90
net.sf.gridarta.gui.filter.FilterMenuEntry.populateComponent
void populateComponent(@NotNull final JComponent component)
Definition: FilterMenuEntry.java:62