Browse Source

Merge pull request #146 from greboid/master

Tidy up feedback model listener.
pull/147/head
Chris Smith 9 years ago
parent
commit
9a5ab7cf28

+ 1
- 0
ui_swing/src/com/dmdirc/addons/ui_swing/dialogs/feedback/FeedbackDialog.java View File

@@ -55,6 +55,7 @@ public class FeedbackDialog extends StandardDialog {
55 55
             @ClientModule.GlobalConfig final IconManager iconManager) {
56 56
         super(mainFrame, ModalityType.DOCUMENT_MODAL);
57 57
         final FeedbackModelLinker linker = new FeedbackModelLinker(this, model);
58
+        linker.init();
58 59
 
59 60
         setTitle("Feedback");
60 61
 

+ 64
- 143
ui_swing/src/com/dmdirc/addons/ui_swing/dialogs/feedback/FeedbackModelLinker.java View File

@@ -22,8 +22,9 @@
22 22
 
23 23
 package com.dmdirc.addons.ui_swing.dialogs.feedback;
24 24
 
25
+import com.dmdirc.addons.ui_swing.components.ConsumerDocumentListener;
25 26
 import com.dmdirc.interfaces.ui.FeedbackDialogModel;
26
-import com.dmdirc.ui.core.feedback.FeedbackDialogModelAdapter;
27
+import com.dmdirc.interfaces.ui.FeedbackDialogModelListener;
27 28
 
28 29
 import java.util.Optional;
29 30
 
@@ -31,188 +32,69 @@ import javax.swing.JButton;
31 32
 import javax.swing.JCheckBox;
32 33
 import javax.swing.JTextArea;
33 34
 import javax.swing.JTextField;
34
-import javax.swing.event.DocumentEvent;
35
-import javax.swing.event.DocumentListener;
36 35
 
37 36
 /**
38 37
  * Links the Feedback Dialog with its model.
39 38
  */
40
-public class FeedbackModelLinker {
39
+public class FeedbackModelLinker implements FeedbackDialogModelListener {
41 40
 
42 41
     private final FeedbackDialog dialog;
43 42
     private final FeedbackDialogModel model;
43
+    private JTextField emailField;
44
+    private JTextField nameField;
45
+    private JTextArea feedbackField;
46
+    private JButton okButton;
47
+    private JCheckBox serverInfo;
48
+    private JCheckBox dmdircInfo;
44 49
 
45 50
     public FeedbackModelLinker(final FeedbackDialog dialog, final FeedbackDialogModel model) {
46 51
         this.dialog = dialog;
47 52
         this.model = model;
48 53
     }
49 54
 
55
+    public void init() {
56
+        model.addListener(this);
57
+    }
58
+
50 59
     public void bindName(final JTextField nameField) {
51
-        nameField.getDocument().addDocumentListener(new DocumentListener() {
52
-
53
-            private void update() {
54
-                model.setName(Optional.ofNullable(nameField.getText()));
55
-            }
56
-
57
-            @Override
58
-            public void insertUpdate(final DocumentEvent e) {
59
-                update();
60
-            }
61
-
62
-            @Override
63
-            public void removeUpdate(final DocumentEvent e) {
64
-                update();
65
-            }
66
-
67
-            @Override
68
-            public void changedUpdate(final DocumentEvent e) {
69
-                update();
70
-            }
71
-        });
72
-        model.addListener(new FeedbackDialogModelAdapter() {
73
-
74
-            @Override
75
-            public void nameChanged(final Optional<String> name) {
76
-                if (!name.equals(Optional.ofNullable(nameField.getText()))) {
77
-                    nameField.setText(name.orElse(null));
78
-                }
79
-            }
80
-        });
60
+        this.nameField = nameField;
61
+        nameField.getDocument().addDocumentListener(new ConsumerDocumentListener(
62
+                s -> model.setName(Optional.ofNullable(s))));
81 63
         nameField.setText("");
82 64
     }
83 65
 
84 66
     public void bindEmail(final JTextField emailField) {
85
-        emailField.getDocument().addDocumentListener(new DocumentListener() {
86
-
87
-            private void update() {
88
-                model.setEmail(Optional.ofNullable(emailField.getText()));
89
-            }
90
-
91
-            @Override
92
-            public void insertUpdate(final DocumentEvent e) {
93
-                update();
94
-            }
95
-
96
-            @Override
97
-            public void removeUpdate(final DocumentEvent e) {
98
-                update();
99
-            }
100
-
101
-            @Override
102
-            public void changedUpdate(final DocumentEvent e) {
103
-                update();
104
-            }
105
-        });
106
-        model.addListener(new FeedbackDialogModelAdapter() {
107
-
108
-            @Override
109
-            public void emailChanged(final Optional<String> email) {
110
-                if (!email.equals(Optional.ofNullable(emailField.getText()))) {
111
-                    emailField.setText(email.orElse(null));
112
-                }
113
-            }
114
-        });
67
+        this.emailField = emailField;
68
+        emailField.getDocument().addDocumentListener(new ConsumerDocumentListener(
69
+                s -> model.setEmail(Optional.ofNullable(emailField.getText()))));
115 70
         emailField.setText("");
116 71
     }
117 72
 
118 73
     public void bindFeedback(final JTextArea feedbackField) {
119
-        feedbackField.getDocument().addDocumentListener(new DocumentListener() {
120
-
121
-            private void update() {
122
-                model.setFeedback(Optional.ofNullable(feedbackField.getText()));
123
-            }
124
-
125
-            @Override
126
-            public void insertUpdate(final DocumentEvent e) {
127
-                update();
128
-            }
129
-
130
-            @Override
131
-            public void removeUpdate(final DocumentEvent e) {
132
-                update();
133
-            }
134
-
135
-            @Override
136
-            public void changedUpdate(final DocumentEvent e) {
137
-                update();
138
-            }
139
-        });
140
-        model.addListener(new FeedbackDialogModelAdapter() {
141
-
142
-            @Override
143
-            public void feedbackChanged(final Optional<String> feedback) {
144
-                if (!feedback.equals(Optional.ofNullable(feedbackField.getText()))) {
145
-                    feedbackField.setText(feedback.orElse(null));
146
-                }
147
-            }
148
-        });
74
+        this.feedbackField = feedbackField;
75
+        feedbackField.getDocument().addDocumentListener(new ConsumerDocumentListener(
76
+                s -> model.setFeedback(Optional.ofNullable(feedbackField.getText()))));
149 77
         feedbackField.setText("");
150 78
     }
151 79
 
152 80
     public void bindDMDircInfo(final JCheckBox dmdircInfo) {
81
+        this.dmdircInfo = dmdircInfo;
153 82
         dmdircInfo.addActionListener(e -> model.setIncludeDMDircInfo(dmdircInfo.isSelected()));
154
-        model.addListener(new FeedbackDialogModelAdapter() {
155
-
156
-            @Override
157
-            public void includeDMDircInfoChanged(final boolean includeDMDircInfo) {
158
-                if (includeDMDircInfo != dmdircInfo.isSelected()) {
159
-                    dmdircInfo.setSelected(includeDMDircInfo);
160
-                }
161
-            }
162
-        });
163 83
         dmdircInfo.setSelected(false);
164 84
     }
165 85
 
166 86
     public void bindServerInfo(final JCheckBox serverInfo) {
87
+        this.serverInfo = serverInfo;
167 88
         serverInfo.addActionListener(e -> model.setIncludeServerInfo(serverInfo.isSelected()));
168
-        model.addListener(new FeedbackDialogModelAdapter() {
169
-
170
-            @Override
171
-            public void includeServerInfoChanged(final boolean includeServerInfo) {
172
-                if (includeServerInfo != serverInfo.isSelected()) {
173
-                    serverInfo.setSelected(includeServerInfo);
174
-                }
175
-            }
176
-        });
177 89
         serverInfo.setSelected(false);
178 90
     }
179 91
 
180 92
     public void bindOKButton(final JButton okButton) {
93
+        this.okButton = okButton;
181 94
         okButton.addActionListener(e -> {
182 95
             model.save();
183 96
             dialog.dispose();
184 97
         });
185
-        model.addListener(new FeedbackDialogModelAdapter() {
186
-
187
-            private void update() {
188
-                okButton.setEnabled(model.isSaveAllowed());
189
-            }
190
-
191
-            @Override
192
-            public void includeDMDircInfoChanged(final boolean includeDMDircInfo) {
193
-                update();
194
-            }
195
-
196
-            @Override
197
-            public void includeServerInfoChanged(final boolean includeServerInfo) {
198
-                update();
199
-            }
200
-
201
-            @Override
202
-            public void feedbackChanged(final Optional<String> feedback) {
203
-                update();
204
-            }
205
-
206
-            @Override
207
-            public void emailChanged(final Optional<String> email) {
208
-                update();
209
-            }
210
-
211
-            @Override
212
-            public void nameChanged(final Optional<String> name) {
213
-                update();
214
-            }
215
-        });
216 98
         okButton.setEnabled(model.isSaveAllowed());
217 99
     }
218 100
 
@@ -220,4 +102,43 @@ public class FeedbackModelLinker {
220 102
         cancelButton.addActionListener(e -> dialog.dispose());
221 103
     }
222 104
 
105
+    @Override
106
+    public void nameChanged(final Optional<String> name) {
107
+        if (!name.equals(Optional.ofNullable(nameField.getText()))) {
108
+            nameField.setText(name.orElse(null));
109
+        }
110
+        okButton.setEnabled(model.isSaveAllowed());
111
+    }
112
+
113
+    @Override
114
+    public void emailChanged(final Optional<String> email) {
115
+        if (!email.equals(Optional.ofNullable(emailField.getText()))) {
116
+            emailField.setText(email.orElse(null));
117
+        }
118
+        okButton.setEnabled(model.isSaveAllowed());
119
+    }
120
+
121
+    @Override
122
+    public void feedbackChanged(final Optional<String> feedback) {
123
+        if (!feedback.equals(Optional.ofNullable(feedbackField.getText()))) {
124
+            feedbackField.setText(feedback.orElse(null));
125
+        }
126
+        okButton.setEnabled(model.isSaveAllowed());
127
+    }
128
+
129
+    @Override
130
+    public void includeServerInfoChanged(final boolean includeServerInfo) {
131
+        if (includeServerInfo != serverInfo.isSelected()) {
132
+            serverInfo.setSelected(includeServerInfo);
133
+        }
134
+        okButton.setEnabled(model.isSaveAllowed());
135
+    }
136
+
137
+    @Override
138
+    public void includeDMDircInfoChanged(final boolean includeDMDircInfo) {
139
+        if (includeDMDircInfo != dmdircInfo.isSelected()) {
140
+            dmdircInfo.setSelected(includeDMDircInfo);
141
+        }
142
+        okButton.setEnabled(model.isSaveAllowed());
143
+    }
223 144
 }

Loading…
Cancel
Save