001    /*
002     * This file is part of McIDAS-V
003     *
004     * Copyright 2007-2013
005     * Space Science and Engineering Center (SSEC)
006     * University of Wisconsin - Madison
007     * 1225 W. Dayton Street, Madison, WI 53706, USA
008     * https://www.ssec.wisc.edu/mcidas
009     * 
010     * All Rights Reserved
011     * 
012     * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and
013     * some McIDAS-V source code is based on IDV and VisAD source code.  
014     * 
015     * McIDAS-V is free software; you can redistribute it and/or modify
016     * it under the terms of the GNU Lesser Public License as published by
017     * the Free Software Foundation; either version 3 of the License, or
018     * (at your option) any later version.
019     * 
020     * McIDAS-V is distributed in the hope that it will be useful,
021     * but WITHOUT ANY WARRANTY; without even the implied warranty of
022     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
023     * GNU Lesser Public License for more details.
024     * 
025     * You should have received a copy of the GNU Lesser Public License
026     * along with this program.  If not, see http://www.gnu.org/licenses.
027     */
028    
029    package edu.wisc.ssec.mcidasv.control.cyclone;
030    
031    import java.awt.Color;
032    import java.awt.event.ActionEvent;
033    import java.awt.event.ActionListener;
034    
035    import javax.swing.BorderFactory;
036    import javax.swing.JCheckBox;
037    
038    import ucar.unidata.util.LogUtil;
039    
040    /**
041     * 
042     * @author Unidata Development Team
043     * @version $Revision$
044     */
045    
046    public class DisplayState {
047    
048            /** the way display state */
049            private WayDisplayState wayDisplayState;
050    
051            /** for gui */
052            private JCheckBox cbx;
053    
054            /** is this visible */
055            private boolean visible;
056    
057            /** the name */
058            private String name;
059    
060            /**
061             * ctor
062             */
063            public DisplayState() {
064            }
065    
066            /**
067             * ctor
068             * 
069             * 
070             * @param wayDisplayState
071             *            the way display state
072             * @param name
073             *            the name
074             * @param visible
075             *            is this visible
076             */
077            public DisplayState(WayDisplayState wayDisplayState, String name,
078                            boolean visible) {
079                    this.wayDisplayState = wayDisplayState;
080                    this.name = name;
081                    this.visible = visible;
082            }
083    
084            /**
085             * set background color
086             * 
087             * @param c
088             *            color
089             */
090            protected void setBackground(Color c) {
091                    getCheckBox().setBackground(c);
092            }
093    
094            /**
095             * make the checkbox
096             * 
097             * 
098             * @return the checkbox
099             */
100            public JCheckBox getCheckBox() {
101                    if (cbx == null) {
102                            cbx = new JCheckBox("", getVisible());
103                            cbx.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
104                            cbx.setToolTipText(name);
105                            cbx.addActionListener(new ActionListener() {
106                                    public void actionPerformed(ActionEvent ae) {
107                                            try {
108                                                    setVisible(cbx.isSelected());
109                                                    wayDisplayState.getStormDisplayState()
110                                                                    .displayStateChanged(DisplayState.this);
111                                            } catch (Exception exc) {
112                                                    LogUtil.logException("Toggling way visible", exc);
113                                            }
114                                    }
115                            });
116                    }
117                    return cbx;
118            }
119    
120            /**
121             * Set the Visible property.
122             * 
123             * @param value
124             *            The new value for Visible
125             */
126            public void setVisible(boolean value) {
127                    visible = value;
128            }
129    
130            /**
131             * Get the Visible property.
132             * 
133             * @return The Visible
134             */
135            public boolean getVisible() {
136                    return visible;
137            }
138    
139            /**
140             * Set the Name property.
141             * 
142             * @param value
143             *            The new value for Name
144             */
145            public void setName(String value) {
146                    name = value;
147            }
148    
149            /**
150             * Get the Name property.
151             * 
152             * @return The Name
153             */
154            public String getName() {
155                    return name;
156            }
157    
158            /**
159             * Set the WayDisplayState property.
160             * 
161             * @param value
162             *            The new value for WayDisplayState
163             */
164            public void setWayDisplayState(WayDisplayState value) {
165                    wayDisplayState = value;
166            }
167    
168            /**
169             * Get the WayDisplayState property.
170             * 
171             * @return The WayDisplayState
172             */
173            public WayDisplayState getWayDisplayState() {
174                    return wayDisplayState;
175            }
176    
177    }