Gridarta Editor
TristateButtonModel.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 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.utils.tristate;
21 
22 import java.awt.event.ItemEvent;
23 import javax.swing.JToggleButton.ToggleButtonModel;
24 import org.jetbrains.annotations.NotNull;
25 
31 public class TristateButtonModel extends ToggleButtonModel {
32 
36  private static final long serialVersionUID = 1L;
37 
42  @NotNull
43  private TristateState state = TristateState.DESELECTED;
44 
49  public TristateButtonModel(@NotNull final TristateState initialState) {
50  setTristateState(initialState);
51  }
52 
58  this(TristateState.DESELECTED);
59  }
60 
61  @Override
62  public void setEnabled(final boolean b) {
63  super.setEnabled(b);
65  }
66 
70  @Override
71  public void setSelected(final boolean b) {
73  }
74 
78  @Override
79  public void setArmed(final boolean b) {
80  // ignore
81  }
82 
86  @Override
87  public void setPressed(final boolean b) {
88  // ignore
89  }
90 
95  @NotNull
97  return state;
98  }
99 
104  public final void setTristateState(@NotNull final TristateState state) {
105  this.state = state;
107 
108  if (state == TristateState.INDETERMINATE && isEnabled()) {
109  fireStateChanged();
110  final int indeterminate = 3;
111  fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED, this, indeterminate));
112  }
113  }
114 
118  private void updateCheckboxState() {
119  super.setSelected(state != TristateState.DESELECTED);
120  super.setArmed(state == TristateState.INDETERMINATE);
121  super.setPressed(state == TristateState.INDETERMINATE);
122 
123  }
124 
125 }
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.TristateButtonModel
TristateButtonModel(@NotNull final TristateState initialState)
Creates a new instance.
Definition: TristateButtonModel.java:49
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.getTristateState
TristateState getTristateState()
Returns the internal state.
Definition: TristateButtonModel.java:96
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.setPressed
void setPressed(final boolean b)
@noinspection RefusedBequest
Definition: TristateButtonModel.java:87
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.setArmed
void setArmed(final boolean b)
@noinspection RefusedBequest
Definition: TristateButtonModel.java:79
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.serialVersionUID
static final long serialVersionUID
The serial version UID.
Definition: TristateButtonModel.java:36
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.setEnabled
void setEnabled(final boolean b)
Definition: TristateButtonModel.java:62
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.setTristateState
final void setTristateState(@NotNull final TristateState state)
Sets the state.
Definition: TristateButtonModel.java:104
net.sf.gridarta.gui.utils.tristate.TristateState
Possible states for TristateButtonModels.
Definition: TristateState.java:28
net.sf.gridarta.gui.utils.tristate.TristateState.getTristateState
static TristateState getTristateState(final boolean state)
Returns the tristate state for a boolean state.
Definition: TristateState.java:79
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.TristateButtonModel
TristateButtonModel()
Creates a new instance.
Definition: TristateButtonModel.java:57
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.setSelected
void setSelected(final boolean b)
@noinspection RefusedBequest
Definition: TristateButtonModel.java:71
net.sf.gridarta.gui.utils.tristate.TristateButtonModel
A ToggleButtonModel supporting three states (deselected, indeterminate, selected).
Definition: TristateButtonModel.java:31
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.updateCheckboxState
void updateCheckboxState()
Updates the check box state to reflect the internal state.
Definition: TristateButtonModel.java:118
net.sf.gridarta.gui.utils.tristate.TristateButtonModel.state
TristateState state
The current state.
Definition: TristateButtonModel.java:43