001: /*
002: * Gruntspud
003: *
004: * Copyright (C) 2002 Brett Smith.
005: *
006: * Written by: Brett Smith <t_magicthize@users.sourceforge.net>
007: *
008: * This program is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU Library General Public License
010: * as published by the Free Software Foundation; either version 2 of
011: * the License, or (at your option) any later version.
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
015: * GNU Library General Public License for more details.
016: *
017: * You should have received a copy of the GNU Library General Public
018: * License along with this program; if not, write to the Free Software
019: * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
020: */
021:
022: package gruntspud.ui;
023:
024: import gruntspud.CVSFileTypeUtil;
025: import gruntspud.file.DirectoryStatus;
026: import gruntspud.filter.CVSFileDirectoryFilter;
027:
028: import java.awt.GridBagConstraints;
029: import java.awt.GridBagLayout;
030: import java.awt.Insets;
031:
032: import javax.swing.Icon;
033: import javax.swing.JCheckBox;
034: import javax.swing.JLabel;
035: import javax.swing.JPanel;
036:
037: /**
038: * DOCUMENT ME!
039: *
040: * @author $author$
041: */
042: public class CVSFileDirectoryFilterPane extends JPanel {
043: private final static DirectoryStatus[] ALL_DIRECTORY_STATUS = {
044: DirectoryStatus.ATTENTION, DirectoryStatus.PROJECT,
045: DirectoryStatus.MODULE, DirectoryStatus.UP_TO_DATE,
046: DirectoryStatus.PLAIN };
047: private JCheckBox[] filters;
048: private CVSFileDirectoryFilter filter;
049:
050: /**
051: * Creates a new CVSFileStatusFilterPane object.
052: */
053: public CVSFileDirectoryFilterPane() {
054: super (new GridBagLayout());
055:
056: //
057: GridBagConstraints gbc = new GridBagConstraints();
058: gbc.anchor = GridBagConstraints.NORTH;
059: gbc.fill = GridBagConstraints.HORIZONTAL;
060: gbc.insets = new Insets(0, 0, 1, 8);
061: filters = new JCheckBox[ALL_DIRECTORY_STATUS.length];
062:
063: for (int i = 0; i < ALL_DIRECTORY_STATUS.length; i++) {
064: gbc.weightx = 0.0;
065:
066: Icon icon = CVSFileTypeUtil
067: .getIconForStatus(ALL_DIRECTORY_STATUS[i]);
068: UIUtil.jGridBagAdd(this , new JLabel(icon), gbc,
069: GridBagConstraints.RELATIVE);
070: gbc.weightx = 1.0;
071:
072: if ((i + 1) == ALL_DIRECTORY_STATUS.length) {
073: gbc.weighty = 1.0;
074:
075: }
076: UIUtil.jGridBagAdd(this , filters[i] = new JCheckBox(
077: (ALL_DIRECTORY_STATUS[i] == null) ? "Unknown"
078: : ALL_DIRECTORY_STATUS[i].toString()), gbc,
079: GridBagConstraints.REMAINDER);
080: }
081: }
082:
083: /**
084: * DOCUMENT ME!
085: *
086: * @param enabled DOCUMENT ME!
087: */
088: public void setEnabled(boolean enabled) {
089: super .setEnabled(enabled);
090:
091: for (int i = 0; i < ALL_DIRECTORY_STATUS.length; i++) {
092: filters[i].setEnabled(enabled);
093: }
094: }
095:
096: /**
097: * DOCUMENT ME!
098: *
099: * @param filter DOCUMENT ME!
100: */
101: public void setCVSFileDirectoryFilter(CVSFileDirectoryFilter filter) {
102: this .filter = filter;
103:
104: for (int i = 0; i < ALL_DIRECTORY_STATUS.length; i++) {
105: filters[i].setSelected((filter == null)
106: || !filter.isFiltered(ALL_DIRECTORY_STATUS[i]));
107: }
108: }
109:
110: /**
111: * DOCUMENT ME!
112: *
113: * @return DOCUMENT ME!
114: */
115: public CVSFileDirectoryFilter getCVSFileDirectoryFilter() {
116: return filter;
117: }
118:
119: /**
120: * DOCUMENT ME!
121: */
122: public void apply() {
123: filter.clearFilters();
124:
125: for (int i = 0; i < ALL_DIRECTORY_STATUS.length; i++) {
126: if (!filters[i].isSelected()) {
127: filter.addStatusToIgnore(ALL_DIRECTORY_STATUS[i]);
128: }
129: }
130: }
131: }
|