001: package net.suberic.pooka.gui.filter;
002:
003: import javax.swing.*;
004: import java.util.Properties;
005:
006: /**
007: * This is a class that lets you choose your filter actions.
008: */
009: public class BounceFilterEditor extends FilterEditor {
010: JTextField addressField;
011: JCheckBox deleteField;
012:
013: public static String FILTER_CLASS = "net.suberic.pooka.filter.BounceFilterAction";
014:
015: /**
016: * Configures the given FilterEditor from the given VariableBundle and
017: * property.
018: */
019: public void configureEditor(
020: net.suberic.util.gui.propedit.PropertyEditorManager newManager,
021: String propertyName) {
022: property = propertyName;
023: manager = newManager;
024:
025: String originalAddressString = manager.getProperty(propertyName
026: + ".targetAddresses", "");
027:
028: addressField = new JTextField(originalAddressString);
029:
030: boolean originalDeleteValue = manager.getProperty(
031: propertyName + ".removeBounced", "false")
032: .equalsIgnoreCase("true");
033:
034: deleteField = new JCheckBox();
035: deleteField.setSelected(originalDeleteValue);
036:
037: this .add(addressField);
038: this .add(deleteField);
039: }
040:
041: /**
042: * Gets the values that would be set by this FilterEditor.
043: */
044: public java.util.Properties getValue() {
045: Properties props = new Properties();
046:
047: String oldClassName = manager.getProperty(property + ".class",
048: "");
049: if (!oldClassName.equals(FILTER_CLASS))
050: props.setProperty(property + ".class", FILTER_CLASS);
051:
052: String originalAddressString = manager.getProperty(property
053: + ".targetAddresses", "");
054: if (addressField.getText() != originalAddressString) {
055: props.setProperty(property + ".targetAddresses",
056: addressField.getText());
057: }
058:
059: boolean originalDeleteValue = manager.getProperty(
060: property + ".removeBounced", "false").equalsIgnoreCase(
061: "true");
062: if (originalDeleteValue != deleteField.isSelected()) {
063: if (deleteField.isSelected())
064: props.setProperty(property + ".removeBounced", "true");
065: else
066: props.setProperty(property + ".removeBounced", "false");
067: }
068:
069: return props;
070: }
071:
072: /**
073: * Sets the values represented by this FilterEditor in the manager.
074: */
075: public void setValue() {
076:
077: String oldClassName = manager.getProperty(property + ".class",
078: "");
079: if (!oldClassName.equals(FILTER_CLASS))
080: manager.setProperty(property + ".class", FILTER_CLASS);
081:
082: String originalAddressString = manager.getProperty(property
083: + ".targetAddresses", "");
084: if (addressField.getText() != originalAddressString) {
085: manager.setProperty(property + ".targetAddresses",
086: addressField.getText());
087: }
088:
089: boolean originalDeleteValue = manager.getProperty(
090: property + ".removeBounced", "false").equalsIgnoreCase(
091: "true");
092: if (originalDeleteValue != deleteField.isSelected()) {
093: if (deleteField.isSelected())
094: manager
095: .setProperty(property + ".removeBounced",
096: "true");
097: else
098: manager.setProperty(property + ".removeBounced",
099: "false");
100: }
101:
102: }
103:
104: /**
105: * Returns the class that will be set for this FilterEditor.
106: */
107: public String getFilterClassValue() {
108: return FILTER_CLASS;
109: }
110:
111: }
|