Gridarta Editor
FilterComponent.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.awt.Component;
23 import java.awt.Container;
24 import java.util.HashMap;
25 import java.util.Map;
26 import javax.swing.AbstractButton;
27 import javax.swing.JCheckBoxMenuItem;
28 import javax.swing.JComponent;
29 import javax.swing.JSeparator;
30 import javax.swing.event.ChangeEvent;
31 import javax.swing.event.ChangeListener;
35 import net.sf.japi.swing.action.ActionBuilder;
36 import net.sf.japi.swing.action.ActionBuilderFactory;
37 import org.jetbrains.annotations.NotNull;
38 
45 public class FilterComponent {
46 
50  @NotNull
51  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
52 
57  @NotNull
58  private final Map<String, JComponent> content = new HashMap<>();
59 
64  @NotNull
65  private final Container component;
66 
70  @NotNull
71  private final NamedFilterConfig config;
72 
77  @NotNull
78  private final AbstractButton active = new JCheckBoxMenuItem(ActionBuilderUtils.getString(ACTION_BUILDER, "analyzeActive.text"));
79 
84  @NotNull
85  private final AbstractButton inverted = new JCheckBoxMenuItem(ActionBuilderUtils.getString(ACTION_BUILDER, "analyzeInvert.text"));
86 
93  public FilterComponent(@NotNull final Container component, @NotNull final NamedFilterConfig config) {
94  this.component = component;
95  this.config = config;
96  active.getModel().setSelected(this.config.isEnabled());
97  active.addChangeListener(new ChangeListener() {
98 
99  @Override
100  public void stateChanged(@NotNull final ChangeEvent e) {
101  FilterComponent.this.config.setEnabled(active.getModel().isSelected());
102  }
103  });
104  component.add(active);
105  inverted.getModel().setSelected(this.config.isInverted());
106  inverted.addChangeListener(new ChangeListener() {
107 
108  @Override
109  public void stateChanged(@NotNull final ChangeEvent e) {
110  FilterComponent.this.config.setInverted(inverted.getModel().isSelected());
111  }
112  });
113  component.add(inverted);
114  component.add(new JSeparator());
115  }
116 
117  public void addFilter(@NotNull final String name, @NotNull final FilterConfig<?, ?> config) {
118  if (content.containsKey(name)) {
119  return;
120  }
121 
122  final AbstractButton entry = new MenuItemCreator(config).getMenuItem();
123  entry.setVisible(true);
124  entry.setText(name);
125  content.put(name, entry);
126  component.add(entry);
127  }
128 
129  public void removeFilter(@NotNull final String name) {
130  if (!content.containsKey(name)) {
131  return;
132  }
133 
134  final Component c = content.get(name);
135  content.remove(name);
136  component.remove(c);
137  }
138 
139 }
net.sf.gridarta.gui.filter.MenuItemCreator.getMenuItem
JMenuItem getMenuItem()
Definition: MenuItemCreator.java:87
net.sf.gridarta.gui.filter.FilterComponent.content
final Map< String, JComponent > content
Definition: FilterComponent.java:58
net.sf.gridarta.gui.filter.FilterComponent.inverted
final AbstractButton inverted
Definition: FilterComponent.java:85
net.sf.gridarta
net.sf.gridarta.gui.filter.FilterComponent
Definition: FilterComponent.java:45
net.sf
net.sf.gridarta.gui.filter.FilterComponent.active
final AbstractButton active
Definition: FilterComponent.java:78
net.sf.gridarta.model.filter.AbstractFilterConfig.setEnabled
void setEnabled(final boolean enabled)
Definition: AbstractFilterConfig.java:73
net.sf.gridarta.model.filter.NamedFilterConfig
Definition: NamedFilterConfig.java:34
net.sf.gridarta.gui.filter.FilterComponent.removeFilter
void removeFilter(@NotNull final String name)
Definition: FilterComponent.java:129
net.sf.gridarta.gui.filter.FilterComponent.FilterComponent
FilterComponent(@NotNull final Container component, @NotNull final NamedFilterConfig config)
Definition: FilterComponent.java:93
net.sf.gridarta.gui.filter.FilterComponent.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
Definition: FilterComponent.java:51
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.gui.filter.FilterComponent.config
final NamedFilterConfig config
Definition: FilterComponent.java:71
net.sf.gridarta.gui.filter.MenuItemCreator
Definition: MenuItemCreator.java:39
net.sf.gridarta.model.filter
Definition: AbstractFilterConfig.java:20
net.sf.gridarta.model.filter.NamedFilterConfig.setInverted
void setInverted(final boolean inverted)
Definition: NamedFilterConfig.java:128
net.sf.gridarta.utils.ActionBuilderUtils.getString
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Definition: ActionBuilderUtils.java:71
net.sf.gridarta.model
net.sf.gridarta.utils.ActionBuilderUtils
Definition: ActionBuilderUtils.java:31
net.sf.gridarta.gui.filter.FilterComponent.component
final Container component
Definition: FilterComponent.java:65
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20