LabelProperties.java
资源名称:swingx.zip [点击查看]
上传用户:zhengdagz
上传日期:2014-03-06
资源大小:1956k
文件大小:11k
源码类别:
xml/soap/webservice
开发平台:
Java
- /*
- * $Id: LabelProperties.java,v 1.3 2005/10/10 18:01:58 rbair Exp $
- *
- * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
- * Santa Clara, California 95054, U.S.A. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
- package org.jdesktop.swingx;
- import java.awt.Color;
- import java.awt.Font;
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import javax.swing.AbstractButton;
- import javax.swing.Icon;
- import javax.swing.JLabel;
- import javax.swing.table.TableCellRenderer;
- /**
- * Class used to store label properties in a single object so that they
- * may be applied as a set on renderers.
- * @author Amy Fowler
- * @version 1.0
- */
- public class LabelProperties extends JLabel {
- private static final int BACKGROUND_SET = 1;
- private static final int FOREGROUND_SET = 2;
- private static final int FONT_SET = 4;
- private static final int HORIZONTAL_ALIGNMENT_SET = 8;
- private static final int HORIZONTAL_TEXT_POSITION_SET = 16;
- private static final int ICON_SET = 32;
- private static final int ICON_TEXT_GAP_SET = 64;
- private static final int TEXT_SET = 128;
- private static final int VERTICAL_ALIGNMENT_SET = 256;
- private static final int VERTICAL_TEXT_POSITION_SET = 512;
- private int setFlags = 0;
- public LabelProperties() {
- super();
- addPropertyChangeListener(new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent e) {
- String propertyName = e.getPropertyName();
- Object value = e.getNewValue();
- if (propertyName.equals("background")) {
- if (value != null) {
- setFlags |= BACKGROUND_SET;
- } else {
- setFlags &= (~BACKGROUND_SET);
- }
- }
- else if (propertyName.equals("font")) {
- if (value != null) {
- setFlags |= FONT_SET;
- } else {
- setFlags &= (~FONT_SET);
- }
- }
- else if (propertyName.equals("foreground")) {
- if (value != null) {
- setFlags |= FOREGROUND_SET;
- } else {
- setFlags &= (~FOREGROUND_SET);
- }
- }
- else if (propertyName.equals("horizontalAlignment")) {
- if (value != null && ((Integer)value).intValue() != -1) {
- setFlags |= HORIZONTAL_ALIGNMENT_SET;
- } else {
- setFlags &= (~HORIZONTAL_ALIGNMENT_SET);
- }
- }
- else if (propertyName.equals("horizontalTextPosition")) {
- if (value != null && ((Integer)value).intValue() != -1) {
- setFlags |= HORIZONTAL_TEXT_POSITION_SET;
- } else {
- setFlags &= (~HORIZONTAL_TEXT_POSITION_SET);
- }
- }
- else if (propertyName.equals("icon")) {
- if (value != null) {
- setFlags |= ICON_SET;
- } else {
- setFlags &= (~ICON_SET);
- }
- }
- else if (propertyName.equals("iconTextGap")) {
- if (value != null && ((Integer)value).intValue() != -1) {
- setFlags |= ICON_TEXT_GAP_SET;
- } else {
- setFlags &= (~ICON_TEXT_GAP_SET);
- }
- }
- else if (propertyName.equals("text")) {
- if (value != null) {
- setFlags |= TEXT_SET;
- } else {
- setFlags &= (~TEXT_SET);
- }
- }
- else if (propertyName.equals("verticalAlignment")) {
- if (value != null && ((Integer)value).intValue() != -1) {
- setFlags |= VERTICAL_ALIGNMENT_SET;
- } else {
- setFlags &= (~VERTICAL_ALIGNMENT_SET);
- }
- }
- else if (propertyName.equals("verticalTextPosition")) {
- if (value != null && ((Integer)value).intValue() != -1) {
- setFlags |= VERTICAL_TEXT_POSITION_SET;
- } else {
- setFlags &= (~VERTICAL_TEXT_POSITION_SET);
- }
- }
- }
- });
- }
- public LabelProperties(Color background, Color foreground, Font font,
- int horizontalAlignment, int horizontalTextPosition,
- int verticalAlignment, int verticalTextPosition,
- Icon icon, int iconTextGap, String text) {
- this();
- setBackground(background);
- setForeground(foreground);
- setFont(font);
- setHorizontalAlignment(horizontalAlignment);
- setHorizontalTextPosition(horizontalTextPosition);
- setVerticalAlignment(verticalAlignment);
- setVerticalTextPosition(verticalTextPosition);
- setIcon(icon);
- setIconTextGap(iconTextGap);
- setText(text);
- }
- public boolean isBackgroundSet() {
- return (setFlags & BACKGROUND_SET) > 0;
- }
- public boolean isForegroundSet() {
- return (setFlags & FOREGROUND_SET) > 0;
- }
- public boolean isFontSet() {
- return (setFlags & FONT_SET) > 0;
- }
- public boolean isHorizontalAlignmentSet() {
- return (setFlags & HORIZONTAL_ALIGNMENT_SET) > 0;
- }
- public boolean isHorizontalTextPositionSet() {
- return (setFlags & HORIZONTAL_TEXT_POSITION_SET) > 0;
- }
- public boolean isIconSet() {
- return (setFlags & ICON_SET) > 0;
- }
- public boolean isIconTextGapSet() {
- return (setFlags & ICON_TEXT_GAP_SET) > 0;
- }
- public boolean isTextSet() {
- return (setFlags & TEXT_SET) > 0;
- }
- public boolean isVerticalAlignmentSet() {
- return (setFlags & VERTICAL_ALIGNMENT_SET) > 0;
- }
- public boolean isVerticalTextPositionSet() {
- return (setFlags & VERTICAL_TEXT_POSITION_SET) > 0;
- }
- public boolean noPropertiesSet() {
- return setFlags == 0;
- }
- public void applyPropertiesTo(JLabel label) {
- if (noPropertiesSet()) {
- return;
- }
- if (isBackgroundSet()) {
- label.setBackground(getBackground());
- }
- if (isForegroundSet()) {
- label.setForeground(getForeground());
- }
- if (isFontSet()) {
- label.setFont(getFont());
- }
- if (isHorizontalAlignmentSet()) {
- label.setHorizontalAlignment(getHorizontalAlignment());
- }
- if (isHorizontalTextPositionSet()) {
- label.setHorizontalTextPosition(getHorizontalTextPosition());
- }
- if (isIconSet()) {
- label.setIcon(getIcon());
- }
- if (isIconTextGapSet()) {
- label.setIconTextGap(getIconTextGap());
- }
- if (isTextSet()) {
- label.setText(getText());
- }
- if (isVerticalAlignmentSet()) {
- label.setVerticalAlignment(getVerticalAlignment());
- }
- if (isVerticalTextPositionSet()) {
- label.setVerticalTextPosition(getVerticalTextPosition());
- }
- }
- public void applyPropertiesTo(AbstractButton button) {
- if (noPropertiesSet()) {
- return;
- }
- if (isBackgroundSet()) {
- button.setBackground(getBackground());
- }
- if (isForegroundSet()) {
- button.setForeground(getForeground());
- }
- if (isFontSet()) {
- button.setFont(getFont());
- }
- if (isHorizontalAlignmentSet()) {
- button.setHorizontalAlignment(getHorizontalAlignment());
- }
- if (isHorizontalTextPositionSet()) {
- button.setHorizontalTextPosition(getHorizontalTextPosition());
- }
- if (isIconSet()) {
- button.setIcon(getIcon());
- }
- if (isIconTextGapSet()) {
- button.setIconTextGap(getIconTextGap());
- }
- if (isTextSet()) {
- button.setText(getText());
- }
- if (isVerticalAlignmentSet()) {
- button.setVerticalAlignment(getVerticalAlignment());
- }
- if (isVerticalTextPositionSet()) {
- button.setVerticalTextPosition(getVerticalTextPosition());
- }
- }
- public void applyPropertiesTo(LabelProperties props) {
- if (noPropertiesSet()) {
- return;
- }
- if (isBackgroundSet()) {
- props.setBackground(getBackground());
- }
- if (isForegroundSet()) {
- props.setForeground(getForeground());
- }
- if (isFontSet()) {
- props.setFont(getFont());
- }
- if (isHorizontalAlignmentSet()) {
- props.setHorizontalAlignment(getHorizontalAlignment());
- }
- if (isHorizontalTextPositionSet()) {
- props.setHorizontalTextPosition(getHorizontalTextPosition());
- }
- if (isIconSet()) {
- props.setIcon(getIcon());
- }
- if (isIconTextGapSet()) {
- props.setIconTextGap(getIconTextGap());
- }
- if (isTextSet()) {
- props.setText(getText());
- }
- if (isVerticalAlignmentSet()) {
- props.setVerticalAlignment(getVerticalAlignment());
- }
- if (isVerticalTextPositionSet()) {
- props.setVerticalTextPosition(getVerticalTextPosition());
- }
- }
- public void applyPropertiesTo(TableCellRenderer renderer) {
- if (renderer instanceof JLabel) {
- applyPropertiesTo( (JLabel) renderer);
- }
- else if (renderer instanceof AbstractButton) {
- applyPropertiesTo( (AbstractButton) renderer);
- }
- }
- }