001 /*
002 * Copyright 2002-2007 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.richclient.dialog.control;
017
018 import java.beans.PropertyChangeListener;
019 import java.beans.PropertyChangeSupport;
020
021 import javax.swing.Icon;
022 import javax.swing.JComponent;
023
024 /**
025 * Represents a single tab in a tabbed pane.
026 * <p>
027 * TODO: move this to another package?
028 *
029 * @author Peter De Bruycker
030 */
031 public class Tab {
032 public static final String TITLE_PROPERTY = "title";
033 public static final String ICON_PROPERTY = "icon";
034 public static final String TOOLTIP_PROPERTY = "tooltip";
035 public static final String COMPONENT_PROPERTY = "component";
036 public static final String VISIBLE_PROPERTY = "visible";
037 public static final String MNEMONIC_PROPERTY = "mnemonic";
038 public static final String ENABLED_PROPERTY = "enabled";
039
040 private String title;
041 private Icon icon;
042 private String tooltip;
043 private JComponent component;
044 private boolean visible = true;
045 private int mnemonic;
046 private boolean enabled = true;
047
048 private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
049
050 public Tab(String title, JComponent component) {
051 this.title = title;
052 this.component = component;
053 }
054
055 public Tab() {
056
057 }
058
059 public boolean isVisible() {
060 return visible;
061 }
062
063 public void setVisible(boolean visible) {
064 boolean old = this.visible;
065 this.visible = visible;
066 if (old != visible) {
067 propertyChangeSupport.firePropertyChange(VISIBLE_PROPERTY, old, visible);
068 }
069 }
070
071 public JComponent getComponent() {
072 return component;
073 }
074
075 public void setComponent(JComponent component) {
076 JComponent old = this.component;
077 this.component = component;
078 if (old != component) {
079 propertyChangeSupport.firePropertyChange(COMPONENT_PROPERTY, old, component);
080 }
081 }
082
083 public Icon getIcon() {
084 return icon;
085 }
086
087 public void setIcon(Icon icon) {
088 Icon old = this.icon;
089 this.icon = icon;
090 if (old != icon) {
091 propertyChangeSupport.firePropertyChange(ICON_PROPERTY, old, icon);
092 }
093 }
094
095 public String getTitle() {
096 return title;
097 }
098
099 public void setTitle(String title) {
100 String old = this.title;
101 this.title = title;
102 if(old != null && !old.equals(title) || title != null) {
103 propertyChangeSupport.firePropertyChange(TITLE_PROPERTY, old, title);
104 }
105 }
106
107 public String getTooltip() {
108 return tooltip;
109 }
110
111 public void setTooltip(String tooltip) {
112 String old = this.tooltip;
113 this.tooltip = tooltip;
114 if(old != null && !old.equals(tooltip) || tooltip != null) {
115 propertyChangeSupport.firePropertyChange(TOOLTIP_PROPERTY, old, tooltip);
116 }
117 }
118
119 public void addPropertyChangeListener(PropertyChangeListener l) {
120 propertyChangeSupport.addPropertyChangeListener(l);
121 }
122
123 public void addPropertyChangeListener(String propertyName, PropertyChangeListener l) {
124 propertyChangeSupport.addPropertyChangeListener(propertyName, l);
125 }
126
127 public void removePropertyChangeListener(PropertyChangeListener l) {
128 propertyChangeSupport.addPropertyChangeListener(l);
129 }
130
131 public void removePropertyChangeListener(String propertyName, PropertyChangeListener l) {
132 propertyChangeSupport.addPropertyChangeListener(propertyName, l);
133 }
134
135 public void setMnemonic(int mnemonic) {
136 int old = this.mnemonic;
137 this.mnemonic = mnemonic;
138 if(mnemonic != old) {
139 propertyChangeSupport.firePropertyChange(MNEMONIC_PROPERTY, old, mnemonic);
140 }
141 }
142
143 public int getMnemonic() {
144 return mnemonic;
145 }
146
147 public boolean isEnabled() {
148 return enabled;
149 }
150
151 public void setEnabled(boolean enabled) {
152 boolean old = this.enabled;
153 this.enabled = enabled;
154 if(enabled != old) {
155 propertyChangeSupport.firePropertyChange(ENABLED_PROPERTY, old, enabled);
156 }
157 }
158 }