📄 searchhighlighter.java
字号:
/* * $Id: SearchHighlighter.java,v 1.7 2005/10/10 18:02:36 rbair Exp $ * * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, * Santa Clara, California 95054, U.S.A. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */package org.jdesktop.swingx.decorator;import java.awt.Color;import java.util.regex.Pattern;/** * Convenience Highlighter to test and highlight cells in searching. * * @author Jeanette Winzenburg */public class SearchHighlighter extends PatternHighlighter { /** the row to highlight in view coordinates. -1 means all */ int highlightRow; private boolean enableHighlight; private static final String ALL = ".*"; /** * Instantiates a default SearchHighlighter. * The default colors are Yellow background and null foreground. * The default matching state is * Pattern == null, flags = 0, tests all columns and all rows. * */ public SearchHighlighter() { this(Color.YELLOW.brighter(), null); } /** * Instantiates a default SearchHighlighter with background/foreground colors. * The default matching state is * Pattern == null, flags = 0, tests all columns and all rows. * * @param background color of hightlight background * @param foreground color of highlight foreground */ public SearchHighlighter(Color background, Color foreground) { super(background, foreground, null, 0, -1); setHighlightRow(-1); } /** * Toggle to enable/disable - if disabled never hightlights. * * @param enableHighlight */ public void setEnabled(boolean enableHighlight) { this.enableHighlight = enableHighlight; fireStateChanged(); } protected boolean needsHighlight(ComponentAdapter adapter) { if (!isEnabled()) return false; if (highlightRow >= 0 && (adapter.row != highlightRow)) { return false; } return super.needsHighlight(adapter); } private boolean isEnabled() { Pattern pattern = getPattern(); if (pattern == null || ALL.equals(pattern.pattern())) { return false; } return enableHighlight; } protected boolean test(ComponentAdapter adapter) { if (pattern == null) { return false; } int columnToTest = testColumn; // use one highlighter for all columns if (columnToTest < 0) { columnToTest = adapter.viewToModel(adapter.column); } Object value = adapter.getFilteredValueAt(adapter.row, columnToTest); if (value == null) { return false; } else { boolean matches = pattern.matcher(value.toString()).find(); return matches; } } /** set the row to match in test. * - 1 means all. * @param row */ public void setHighlightRow(int row) { highlightRow = row; fireStateChanged(); } /** * convenience method to test and highlight all rows/columns and * enable. * */ public void setHighlightAll() { setHighlightCell(-1, -1); } /** * Set's highlightRow to row, test- and highlight column = column * @param row * @param modelColumn */ public void setHighlightCell(int row, int modelColumn) { this.testColumn = modelColumn; this.highlightColumn = modelColumn; this.highlightRow = row; setEnabled(true); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -