Issue #639 fixed the previouse and next selection listeners, and renamed an inner class in the SearchComposite.

Former-commit-id: b0794e5e55 [formerly 31b09e378571ce6f8b4a6bd99cfb49b3d8b51045]
Former-commit-id: 4135176198
This commit is contained in:
Brad Gonzales 2012-06-03 10:53:31 -05:00
parent 00d014b2f2
commit 08ad661af4
3 changed files with 58 additions and 49 deletions

View file

@ -191,7 +191,7 @@ public abstract class AbstractSessionView extends CaveFloatingView {
} }
}); });
messagesComp.addKeyListener(searchComp.getSearchKeyListener()); messagesComp.addKeyListener(searchComp.getSearchKeyListener());
searchComp.setDefaultSearchView(messagesText); searchComp.setSearchText(messagesText);
} }
protected void createComposeComp(Composite parent) { protected void createComposeComp(Composite parent) {

View file

@ -66,17 +66,17 @@ public class SearchComposite extends Composite {
private boolean searchFWD = true; private boolean searchFWD = true;
private String searchText; private String search;
private List<MatchResult> results = new ArrayList<MatchResult>(); private List<MatchResult> results = new ArrayList<MatchResult>();
private ListIterator<MatchResult> resultIter; private ListIterator<MatchResult> resultIter;
private SearchView searchView; private SearchText searchText;
private KeyListener searchKeyListener; private KeyListener searchKeyListener;
private Text searchTextBox; private Text searchBox;
private Button bck; private Button bck;
@ -97,7 +97,7 @@ public class SearchComposite extends Composite {
// } // }
// } // }
public static interface SearchView { public static interface SearchText {
void select(int start, int end); void select(int start, int end);
@ -110,10 +110,10 @@ public class SearchComposite extends Composite {
} }
public class DefaultSearchView implements SearchView { public class DefaultSearchText implements SearchText {
private StyledText searchView; private StyledText searchView;
public DefaultSearchView(StyledText searchView) { public DefaultSearchText(StyledText searchView) {
this.searchView = searchView; this.searchView = searchView;
} }
@ -146,18 +146,18 @@ public class SearchComposite extends Composite {
// ranges[i] = new StyleRange(sel.start, sel.length, // ranges[i] = new StyleRange(sel.start, sel.length,
// FOREGROUND_COLOR, HIGHLIGHT_COLOR); // FOREGROUND_COLOR, HIGHLIGHT_COLOR);
// } // }
// searchView.setStyleRanges(ranges); // searchText.setStyleRanges(ranges);
// } // }
// //
// @Override // @Override
// public void removeHighlights() { // public void removeHighlights() {
// StyleRange[] ranges = searchView.getStyleRanges(); // StyleRange[] ranges = searchText.getStyleRanges();
// for (StyleRange style : ranges) { // for (StyleRange style : ranges) {
// if (style.background == HIGHLIGHT_COLOR) { // if (style.background == HIGHLIGHT_COLOR) {
// style.background = searchView.getBackground(); // style.background = searchText.getBackground();
// } // }
// } // }
// searchView.setStyleRanges(ranges); // searchText.setStyleRanges(ranges);
// } // }
} }
@ -171,12 +171,12 @@ public class SearchComposite extends Composite {
this.setLayout(new GridLayout(6, false)); this.setLayout(new GridLayout(6, false));
this.setLayoutData(gd); this.setLayoutData(gd);
searchTextBox = new Text(this, SWT.RESIZE); searchBox = new Text(this, SWT.RESIZE);
searchTextBox.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, searchBox
false)); .setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
gd = new GridData(SWT.FILL, SWT.FILL, true, false); gd = new GridData(SWT.FILL, SWT.FILL, true, false);
searchTextBox.setLayoutData(gd); searchBox.setLayoutData(gd);
searchTextBox.addKeyListener(new KeyListener() { searchBox.addKeyListener(new KeyListener() {
@Override @Override
public void keyReleased(KeyEvent e) { public void keyReleased(KeyEvent e) {
} }
@ -198,7 +198,7 @@ public class SearchComposite extends Composite {
result = resultIter.previous(); result = resultIter.previous();
} }
if (result != null) { if (result != null) {
searchView.select(result.start(), result.end()); searchText.select(result.start(), result.end());
} }
if (result == null && resultIter.hasNext()) { if (result == null && resultIter.hasNext()) {
result = resultIter.next(); result = resultIter.next();
@ -217,6 +217,10 @@ public class SearchComposite extends Composite {
@Override @Override
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
searchFWD = false; searchFWD = false;
if (search == null || !search.equals(searchBox.getText())) {
search = searchBox.getText();
updateMatches();
}
nextSearchMatch(); nextSearchMatch();
} }
@ -232,6 +236,10 @@ public class SearchComposite extends Composite {
@Override @Override
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
searchFWD = true; searchFWD = true;
if (search == null || !search.equals(searchBox.getText())) {
search = searchBox.getText();
updateMatches();
}
nextSearchMatch(); nextSearchMatch();
} }
@ -255,7 +263,7 @@ public class SearchComposite extends Composite {
result = resultIter.previous(); result = resultIter.previous();
} }
if (result != null) { if (result != null) {
searchView.select(result.start(), result.end()); searchText.select(result.start(), result.end());
} }
} }
@ -278,9 +286,8 @@ public class SearchComposite extends Composite {
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
if (search(e)) { if (search(e)) {
} else if (e.keyCode == SWT.KEYPAD_CR || e.keyCode == SWT.CR) { } else if (e.keyCode == SWT.KEYPAD_CR || e.keyCode == SWT.CR) {
if (searchText == null if (search == null || !search.equals(searchBox.getText())) {
|| !searchText.equals(searchTextBox.getText())) { search = searchBox.getText();
searchText = searchTextBox.getText();
updateMatches(); updateMatches();
} }
if (searchFWD) { if (searchFWD) {
@ -290,13 +297,13 @@ public class SearchComposite extends Composite {
} }
nextSearchMatch(); nextSearchMatch();
} else { } else {
searchTextBox.setFocus(); searchBox.setFocus();
} }
} }
}; };
this.addKeyListener(searchKeyListener); this.addKeyListener(searchKeyListener);
searchTextBox.addKeyListener(searchKeyListener); searchBox.addKeyListener(searchKeyListener);
bck.addKeyListener(searchKeyListener); bck.addKeyListener(searchKeyListener);
fwd.addKeyListener(searchKeyListener); fwd.addKeyListener(searchKeyListener);
caseSensitive.addKeyListener(searchKeyListener); caseSensitive.addKeyListener(searchKeyListener);
@ -319,9 +326,13 @@ public class SearchComposite extends Composite {
if (((e.stateMask & SWT.CTRL) == SWT.CTRL)) { if (((e.stateMask & SWT.CTRL) == SWT.CTRL)) {
if (e.keyCode == 'f' || e.keyCode == 'b' || e.keyCode == 'B') { if (e.keyCode == 'f' || e.keyCode == 'b' || e.keyCode == 'B') {
searchFWD = e.keyCode == 'f' ? true : false; searchFWD = e.keyCode == 'f' ? true : false;
if (search == null || !search.equals(searchBox.getText())) {
search = searchBox.getText();
updateMatches();
}
hide(false); hide(false);
// redraw(); // redraw();
searchTextBox.setFocus(); searchBox.setFocus();
if (searchFWD) { if (searchFWD) {
fwd.setFocus(); fwd.setFocus();
} else { } else {
@ -330,11 +341,6 @@ public class SearchComposite extends Composite {
if (text == null) { if (text == null) {
reachedLimit(); reachedLimit();
} }
if (searchText == null
|| !searchText.equals(searchTextBox.getText())) {
searchText = searchTextBox.getText();
updateMatches();
}
nextSearchMatch(); nextSearchMatch();
result = true; result = true;
} }
@ -349,8 +355,8 @@ public class SearchComposite extends Composite {
public void hide(boolean isHidden) { public void hide(boolean isHidden) {
((GridData) getLayoutData()).exclude = isHidden; ((GridData) getLayoutData()).exclude = isHidden;
setVisible(!isHidden); setVisible(!isHidden);
// if (searchView != null) { // if (searchText != null) {
// searchView.removeHighlights(); // searchText.removeHighlights();
// } // }
getParent().layout(); getParent().layout();
} }
@ -373,7 +379,7 @@ public class SearchComposite extends Composite {
if (hasNextInSequence) { if (hasNextInSequence) {
MatchResult current = searchFWD ? resultIter.next() : resultIter MatchResult current = searchFWD ? resultIter.next() : resultIter
.previous(); .previous();
searchView.select(current.start(), current.end()); searchText.select(current.start(), current.end());
} else { } else {
reachedLimit(); reachedLimit();
} }
@ -389,8 +395,8 @@ public class SearchComposite extends Composite {
reachedLimit(); reachedLimit();
} }
if (searchText != null) { if (search != null) {
Pattern pattern = Pattern.compile(searchText, patternFlags); Pattern pattern = Pattern.compile(search, patternFlags);
Matcher matcher = pattern.matcher(text); Matcher matcher = pattern.matcher(text);
while (matcher.find()) { while (matcher.find()) {
@ -407,7 +413,7 @@ public class SearchComposite extends Composite {
// highlights[index] = new HighlightSelection(mr.start(), mr.end() // highlights[index] = new HighlightSelection(mr.start(), mr.end()
// - mr.start()); // - mr.start());
// } // }
// searchView.setHighlights(highlights); // searchText.setHighlights(highlights);
int index = searchFWD ? 0 : results.size(); int index = searchFWD ? 0 : results.size();
resultIter = results.listIterator(index); resultIter = results.listIterator(index);
@ -416,18 +422,26 @@ public class SearchComposite extends Composite {
private void reachedLimit() { private void reachedLimit() {
if (searchFWD) { if (searchFWD) {
searchView.reachedLast(); searchText.reachedLast();
} else { } else {
searchView.reachedFirst(); searchText.reachedFirst();
} }
} }
/** /**
* @param searchView * @param searchText
* the SearchView to set * the SearchText to set
*/ */
public void setSearchView(SearchView searchView) { public void setSearchText(SearchText searchText) {
this.searchView = searchView; this.searchText = searchText;
}
/**
* @param styledText
*/
public void setSearchText(StyledText styledText) {
setText(styledText.getText());
setSearchText(new DefaultSearchText(styledText));
} }
/** /**
@ -457,11 +471,6 @@ public class SearchComposite extends Composite {
return searchKeyListener; return searchKeyListener;
} }
public void setDefaultSearchView(StyledText styledText) {
setText(styledText.getText());
setSearchView(new DefaultSearchView(styledText));
}
public void appendText(String newText) { public void appendText(String newText) {
this.text.append(newText); this.text.append(newText);
updateMatches(); updateMatches();

View file

@ -56,7 +56,7 @@ import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager; import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager;
import com.raytheon.uf.viz.collaboration.ui.session.SearchComposite.SearchView; import com.raytheon.uf.viz.collaboration.ui.session.SearchComposite.SearchText;
/** /**
* Browse, view, and search messages in the archive. * Browse, view, and search messages in the archive.
@ -75,7 +75,7 @@ import com.raytheon.uf.viz.collaboration.ui.session.SearchComposite.SearchView;
* @version 1.0 * @version 1.0
*/ */
public class SessionMsgArchiveBrowser extends Composite implements SearchView { public class SessionMsgArchiveBrowser extends Composite implements SearchText {
private static final transient IUFStatusHandler statusHandler = UFStatus private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(SessionMsgArchiveBrowser.class); .getHandler(SessionMsgArchiveBrowser.class);
@ -194,7 +194,7 @@ public class SessionMsgArchiveBrowser extends Composite implements SearchView {
logView.setEditable(false); logView.setEditable(false);
searchComp = new SearchComposite(logViewPart, SWT.BORDER); searchComp = new SearchComposite(logViewPart, SWT.BORDER);
searchComp.setSearchView(this); searchComp.setSearchText(this);
searchComp.hide(true); searchComp.hide(true);
tree.addKeyListener(searchComp.getSearchKeyListener()); tree.addKeyListener(searchComp.getSearchKeyListener());