Просмотр исходного кода

Add wrap indicator to the search bar. .

Fixes issue CLIENT-32

Change-Id: I0ee37c8d92ec426e0d254a82a23c4d934c8c5e68
Reviewed-on: http://gerrit.dmdirc.com/1547
Automatic-Compile: Greg Holmes <greg@dmdirc.com>
Reviewed-by: Greg Holmes <greg@dmdirc.com>
tags/0.6.5
Greg Holmes 13 лет назад
Родитель
Сommit
e32f1b1b78

+ 15
- 39
src/com/dmdirc/addons/ui_swing/components/SwingSearchBar.java Просмотреть файл

24
 
24
 
25
 import com.dmdirc.addons.ui_swing.UIUtilities;
25
 import com.dmdirc.addons.ui_swing.UIUtilities;
26
 import com.dmdirc.addons.ui_swing.actions.SearchAction;
26
 import com.dmdirc.addons.ui_swing.actions.SearchAction;
27
-import com.dmdirc.addons.ui_swing.components.ImageButton;
28
 import com.dmdirc.addons.ui_swing.components.frames.InputTextFrame;
27
 import com.dmdirc.addons.ui_swing.components.frames.InputTextFrame;
29
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
28
 import com.dmdirc.addons.ui_swing.components.frames.TextFrame;
30
 import com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField;
29
 import com.dmdirc.addons.ui_swing.components.validating.ValidatingJTextField;
31
-import com.dmdirc.addons.ui_swing.dialogs.StandardQuestionDialog;
32
 import com.dmdirc.addons.ui_swing.textpane.TextPane;
30
 import com.dmdirc.addons.ui_swing.textpane.TextPane;
33
 import com.dmdirc.config.IdentityManager;
31
 import com.dmdirc.config.IdentityManager;
34
-import com.dmdirc.util.validators.ValidationResponse;
35
-import com.dmdirc.util.validators.Validator;
36
 import com.dmdirc.interfaces.ConfigChangeListener;
32
 import com.dmdirc.interfaces.ConfigChangeListener;
37
 import com.dmdirc.ui.IconManager;
33
 import com.dmdirc.ui.IconManager;
38
 import com.dmdirc.ui.interfaces.SearchBar;
34
 import com.dmdirc.ui.interfaces.SearchBar;
35
+import com.dmdirc.ui.interfaces.SearchBar.Direction;
39
 import com.dmdirc.ui.messages.IRCDocument;
36
 import com.dmdirc.ui.messages.IRCDocument;
40
 import com.dmdirc.ui.messages.IRCDocumentSearcher;
37
 import com.dmdirc.ui.messages.IRCDocumentSearcher;
41
 import com.dmdirc.ui.messages.LinePosition;
38
 import com.dmdirc.ui.messages.LinePosition;
42
 import com.dmdirc.util.ListenerList;
39
 import com.dmdirc.util.ListenerList;
40
+import com.dmdirc.util.validators.ValidationResponse;
41
+import com.dmdirc.util.validators.Validator;
43
 
42
 
44
-import java.awt.Window;
45
-import java.awt.Dialog.ModalityType;
46
 import java.awt.event.ActionEvent;
43
 import java.awt.event.ActionEvent;
47
 import java.awt.event.ActionListener;
44
 import java.awt.event.ActionListener;
48
 import java.awt.event.KeyEvent;
45
 import java.awt.event.KeyEvent;
51
 import javax.swing.JButton;
48
 import javax.swing.JButton;
52
 import javax.swing.JCheckBox;
49
 import javax.swing.JCheckBox;
53
 import javax.swing.JComponent;
50
 import javax.swing.JComponent;
51
+import javax.swing.JLabel;
54
 import javax.swing.JPanel;
52
 import javax.swing.JPanel;
55
 import javax.swing.JTextField;
53
 import javax.swing.JTextField;
56
 import javax.swing.KeyStroke;
54
 import javax.swing.KeyStroke;
88
     private int line;
86
     private int line;
89
     /** Listener list. */
87
     /** Listener list. */
90
     private final ListenerList listeners;
88
     private final ListenerList listeners;
91
-    /** Parent window. */
92
-    private Window parentWindow;
93
     /** Search validate text. */
89
     /** Search validate text. */
94
     private SearchValidator validator;
90
     private SearchValidator validator;
91
+    /** Wrap indicator. */
92
+    private JLabel wrapIndicator;
95
 
93
 
96
     /**
94
     /**
97
      * Creates a new instance of StatusBar.
95
      * Creates a new instance of StatusBar.
98
      *
96
      *
99
      * @param newParent parent frame for the dialog
97
      * @param newParent parent frame for the dialog
100
-     * @param parentWindow Parent window
101
      */
98
      */
102
-    public SwingSearchBar(final TextFrame newParent, final Window parentWindow) {
99
+    public SwingSearchBar(final TextFrame newParent) {
103
         super();
100
         super();
104
 
101
 
105
         listeners = new ListenerList();
102
         listeners = new ListenerList();
106
 
103
 
107
         this.parent = newParent;
104
         this.parent = newParent;
108
-        this.parentWindow = parentWindow;
109
 
105
 
110
         getInputMap(JComponent.WHEN_FOCUSED).
106
         getInputMap(JComponent.WHEN_FOCUSED).
111
                 put(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0), "searchAction");
107
                 put(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0), "searchAction");
127
         caseCheck = new JCheckBox();
123
         caseCheck = new JCheckBox();
128
         validator = new SearchValidator();
124
         validator = new SearchValidator();
129
         searchBox = new ValidatingJTextField(validator);
125
         searchBox = new ValidatingJTextField(validator);
126
+        wrapIndicator = new JLabel("Search wrapped",
127
+                IconManager.getIconManager().getIcon("linewrap"),
128
+                JLabel.LEFT);
130
 
129
 
131
         nextButton.setText("Later");
130
         nextButton.setText("Later");
132
         prevButton.setText("Earlier");
131
         prevButton.setText("Earlier");
133
         nextButton.setEnabled(false);
132
         nextButton.setEnabled(false);
134
         prevButton.setEnabled(false);
133
         prevButton.setEnabled(false);
135
         caseCheck.setText("Case sensitive");
134
         caseCheck.setText("Case sensitive");
135
+        wrapIndicator.setVisible(false);
136
 
136
 
137
         line = -1;
137
         line = -1;
138
 
138
 
141
 
141
 
142
     /** Lays out components. */
142
     /** Lays out components. */
143
     private void layoutComponents() {
143
     private void layoutComponents() {
144
-        this.setLayout(new MigLayout("ins 0, fill"));
144
+        this.setLayout(new MigLayout("ins 0, fill, hidemode 3"));
145
 
145
 
146
         add(closeButton);
146
         add(closeButton);
147
         add(searchBox, "growx, pushx, sgy all");
147
         add(searchBox, "growx, pushx, sgy all");
148
         add(prevButton, "sgx button, sgy all");
148
         add(prevButton, "sgx button, sgy all");
149
         add(nextButton, "sgx button, sgy all");
149
         add(nextButton, "sgx button, sgy all");
150
         add(caseCheck, "sgy all");
150
         add(caseCheck, "sgy all");
151
+        add(wrapIndicator, "");
151
     }
152
     }
152
 
153
 
153
     /** Adds listeners to components. */
154
     /** Adds listeners to components. */
236
     public void search(final Direction direction, final String text,
237
     public void search(final Direction direction, final String text,
237
             final boolean caseSensitive) {
238
             final boolean caseSensitive) {
238
         boolean foundText = false;
239
         boolean foundText = false;
240
+        wrapIndicator.setVisible(false);
239
 
241
 
240
         final boolean up = Direction.UP == direction;
242
         final boolean up = Direction.UP == direction;
241
 
243
 
257
                 getEndLine())
259
                 getEndLine())
258
                 || (!up && result.getStartLine() < textPane.getSelectedRange().
260
                 || (!up && result.getStartLine() < textPane.getSelectedRange().
259
                 getStartLine()))) {
261
                 getStartLine()))) {
260
-            final StandardQuestionDialog dialog = new StandardQuestionDialog(
261
-                    parentWindow, ModalityType.MODELESS, "No more results",
262
-                    "Do you want to continue searching from the "
263
-                    + (up ? "end" : "beginning") + "?") {
264
-
265
-                /**
266
-                 * A version number for this class. It should be changed whenever the class
267
-                 * structure is changed (or anything else that would prevent serialized
268
-                 * objects being unserialized with the new class).
269
-                 */
270
-                 private static final long serialVersionUID = 1;
271
-
272
-                 /**{@inheritDoc} */
273
-                 @Override
274
-                 public boolean save() {
262
+                     wrapIndicator.setVisible(true);
275
                      textPane.setScrollBarPosition(result.getEndLine());
263
                      textPane.setScrollBarPosition(result.getEndLine());
276
                      textPane.setSelectedTexT(result);
264
                      textPane.setSelectedTexT(result);
277
                      validator.setValidates(true);
265
                      validator.setValidates(true);
278
                      searchBox.checkError();
266
                      searchBox.checkError();
279
-                     return true;
280
-                 }
281
-
282
-                 /**{@inheritDoc} */
283
-                 @Override
284
-                 public void cancelled() {
285
-                     validator.setValidates(true);
286
-                     searchBox.checkError();
287
-                 }
288
-            };
289
-            dialog.display();
290
-            return;
291
         } else {
267
         } else {
292
             //found, select and return found
268
             //found, select and return found
293
             textPane.setScrollBarPosition(result.getEndLine());
269
             textPane.setScrollBarPosition(result.getEndLine());

+ 1
- 1
src/com/dmdirc/addons/ui_swing/components/frames/TextFrame.java Просмотреть файл

508
     private void initComponents() {
508
     private void initComponents() {
509
         setTextPane(new TextPane(this));
509
         setTextPane(new TextPane(this));
510
 
510
 
511
-        searchBar = new SwingSearchBar(this, controller.getMainFrame());
511
+        searchBar = new SwingSearchBar(this);
512
         searchBar.setVisible(false);
512
         searchBar.setVisible(false);
513
 
513
 
514
         getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
514
         getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).

Загрузка…
Отмена
Сохранить