Search in sources :

Example 1 with SearchOptions

use of org.knime.core.node.tableview.FindPosition.SearchOptions in project knime-core by knime.

the class FindPositionTest method testNormalTable.

@Test
public void testNormalTable() throws Exception {
    FindPosition f = new FindPosition(1, 1, new SearchOptions(m_isSearchRowID, m_isSearchColumnName, m_isSearchData));
    f.reset();
    f.mark();
    // coverage is all
    f.toString();
    if (m_isSearchColumnName) {
        assertThat(f.next(), is(true));
        assertThat("Expected header row", f.getSearchRow(), is(-1));
        assertThat("Expected first column", f.getSearchColumn(), is(0));
        assertThat("Not at mark", f.reachedMark(), is(false));
    }
    if (m_isSearchRowID) {
        assertThat(f.next(), is(true));
        assertThat("Expected first row key", f.getSearchRow(), is(0));
        assertThat("Expected rowID column", f.getSearchColumn(), is(-1));
        assertThat("Not at mark", f.reachedMark(), is(false));
    }
    if (m_isSearchData) {
        assertThat(f.next(), is(true));
        assertThat("Expected first data element", f.getSearchRow(), is(0));
        assertThat("Expected rowID column", f.getSearchColumn(), is(0));
        assertThat("Not at mark", f.reachedMark(), is(false));
    }
    assertThat(f.next(), is(false));
}
Also used : SearchOptions(org.knime.core.node.tableview.FindPosition.SearchOptions) Test(org.junit.Test)

Example 2 with SearchOptions

use of org.knime.core.node.tableview.FindPosition.SearchOptions in project knime-core by knime.

the class FindPositionTest method testNoRowsTable.

@Test
public void testNoRowsTable() throws Exception {
    FindPosition f = new FindPosition(0, 1, new SearchOptions(m_isSearchRowID, m_isSearchColumnName, m_isSearchData));
    f.reset();
    f.mark();
    if (m_isSearchColumnName) {
        assertThat(f.next(), is(true));
        assertThat("Expected header row", f.getSearchRow(), is(-1));
        assertThat("Expected first column", f.getSearchColumn(), is(0));
        assertThat("Not at mark", f.reachedMark(), is(false));
    }
    assertThat(f.next(), is(false));
}
Also used : SearchOptions(org.knime.core.node.tableview.FindPosition.SearchOptions) Test(org.junit.Test)

Example 3 with SearchOptions

use of org.knime.core.node.tableview.FindPosition.SearchOptions in project knime-core by knime.

the class FindPositionTest method testNoRowsNoColumnsTable.

@Test
public void testNoRowsNoColumnsTable() throws Exception {
    FindPosition f = new FindPosition(0, 0, new SearchOptions(m_isSearchRowID, m_isSearchColumnName, m_isSearchData));
    f.reset();
    f.mark();
    assertThat(f.next(), is(false));
}
Also used : SearchOptions(org.knime.core.node.tableview.FindPosition.SearchOptions) Test(org.junit.Test)

Example 4 with SearchOptions

use of org.knime.core.node.tableview.FindPosition.SearchOptions in project knime-core by knime.

the class TableView method registerFindAction.

/**
 * Creates and registers the "Find ..." action on this component. Multiple invocation of this method have no effect
 * (lazy initialization).
 *
 * @return The non-null action representing the find task.
 * @see #registerNavigationActions()
 */
public TableAction registerFindAction() {
    if (m_findAction == null) {
        String name = "Find...";
        KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
        TableAction action = new TableAction(stroke, name) {

            @Override
            public void actionPerformed(final ActionEvent e) {
                if (!hasData()) {
                    return;
                }
                if (m_searchPosition == null) {
                    initNewSearchPostion(new SearchOptions(true, true, true));
                }
                m_searchPosition.reset();
                SearchOptions searchOptions = m_searchPosition.getSearchOptions();
                boolean isSearchRowID = searchOptions.isSearchRowID();
                boolean isSearchColumnName = searchOptions.isSearchColumnName();
                boolean isSearchData = searchOptions.isSearchData();
                JCheckBox rowKeyBox = new JCheckBox("Search RowID Column", isSearchRowID);
                JCheckBox colNameBox = new JCheckBox("Search Column Names", isSearchColumnName);
                JCheckBox dataBox = new JCheckBox("Search Data", isSearchData);
                JCheckBox[] asArray = new JCheckBox[] { rowKeyBox, colNameBox, dataBox };
                rowKeyBox.addItemListener(new AtLeastOnButtonSelectedItemListener(dataBox, asArray));
                colNameBox.addItemListener(new AtLeastOnButtonSelectedItemListener(rowKeyBox, asArray));
                dataBox.addItemListener(new AtLeastOnButtonSelectedItemListener(rowKeyBox, asArray));
                JCheckBox caseSensitiveBox = new JCheckBox("Case sensitive", m_searchString.map(i -> !i.isIgnoreCase()).orElse(false));
                JCheckBox regexBox = new JCheckBox("Regular Expression", m_searchString.map(i -> i.isRegex()).orElse(false));
                JPanel panel = new JPanel(new BorderLayout());
                panel.add(new JLabel("Options: "), BorderLayout.NORTH);
                JPanel centerPanel = new JPanel(new GridLayout(0, 1));
                centerPanel.add(rowKeyBox);
                centerPanel.add(colNameBox);
                centerPanel.add(dataBox);
                centerPanel.add(new JLabel());
                centerPanel.add(caseSensitiveBox);
                centerPanel.add(regexBox);
                centerPanel.add(new JLabel());
                panel.add(centerPanel, BorderLayout.CENTER);
                panel.add(new JLabel("    "), BorderLayout.WEST);
                panel.add(new JLabel("Find String: "), BorderLayout.SOUTH);
                SearchString newSearchString;
                while (true) {
                    String in = (String) JOptionPane.showInputDialog(TableView.this, panel, "Search", JOptionPane.QUESTION_MESSAGE, null, null, m_searchString.map(s -> s.getSearchString()).orElse(""));
                    if (StringUtils.isEmpty(in)) {
                        // canceled
                        return;
                    }
                    try {
                        newSearchString = new SearchString(in, !caseSensitiveBox.isSelected(), regexBox.isSelected());
                        break;
                    } catch (PatternSyntaxException pse) {
                        JOptionPane.showMessageDialog(TableView.this, pse.getMessage(), "Invalid regular expression", JOptionPane.ERROR_MESSAGE);
                    }
                }
                searchOptions = new SearchOptions(rowKeyBox.isSelected(), colNameBox.isSelected(), dataBox.isSelected());
                find(newSearchString, searchOptions);
            }
        };
        registerAction(action);
        m_findAction = action;
    }
    return m_findAction;
}
Also used : RowKey(org.knime.core.data.RowKey) Enumeration(java.util.Enumeration) Cursor(java.awt.Cursor) Point(java.awt.Point) ItemListener(java.awt.event.ItemListener) SearchOptions(org.knime.core.node.tableview.FindPosition.SearchOptions) TableCellRenderer(javax.swing.table.TableCellRenderer) StringUtils(org.apache.commons.lang3.StringUtils) GraphicsEnvironment(java.awt.GraphicsEnvironment) JCheckBoxMenuItem(javax.swing.JCheckBoxMenuItem) MouseAdapter(java.awt.event.MouseAdapter) ChangeListener(javax.swing.event.ChangeListener) BorderLayout(java.awt.BorderLayout) Clipboard(java.awt.datatransfer.Clipboard) KeyStroke(javax.swing.KeyStroke) ScrollPaneConstants(javax.swing.ScrollPaneConstants) ChangeEvent(javax.swing.event.ChangeEvent) ItemEvent(java.awt.event.ItemEvent) PatternSyntaxException(java.util.regex.PatternSyntaxException) Font(java.awt.Font) Collection(java.util.Collection) JMenu(javax.swing.JMenu) MouseInputAdapter(javax.swing.event.MouseInputAdapter) KeyEvent(java.awt.event.KeyEvent) Component(java.awt.Component) Objects(java.util.Objects) Dimension(java.awt.Dimension) PropertyChangeListener(java.beans.PropertyChangeListener) AbstractAction(javax.swing.AbstractAction) HiLiteHandler(org.knime.core.node.property.hilite.HiLiteHandler) JCheckBox(javax.swing.JCheckBox) Optional(java.util.Optional) JTable(javax.swing.JTable) CheckUtils(org.knime.core.node.util.CheckUtils) JPanel(javax.swing.JPanel) TableContentFilter(org.knime.core.node.tableview.TableContentModel.TableContentFilter) Toolkit(java.awt.Toolkit) InputEvent(java.awt.event.InputEvent) ListSelectionModel(javax.swing.ListSelectionModel) Rectangle(java.awt.Rectangle) ActionListener(java.awt.event.ActionListener) TableColumnModel(javax.swing.table.TableColumnModel) GraphicsDevice(java.awt.GraphicsDevice) Transferable(java.awt.datatransfer.Transferable) MethodUtils(org.apache.commons.lang3.reflect.MethodUtils) ArrayUtils(org.apache.commons.lang3.ArrayUtils) Action(javax.swing.Action) Constructor(java.lang.reflect.Constructor) ArrayList(java.util.ArrayList) GridLayout(java.awt.GridLayout) SwingUtilities(javax.swing.SwingUtilities) JMenuItem(javax.swing.JMenuItem) TransferHandler(javax.swing.TransferHandler) NodeLogger(org.knime.core.node.NodeLogger) FieldUtils(org.apache.commons.lang3.reflect.FieldUtils) AbstractButton(javax.swing.AbstractButton) BasicTableUI(javax.swing.plaf.basic.BasicTableUI) PropertyChangeEvent(java.beans.PropertyChangeEvent) JComponent(javax.swing.JComponent) TableColumn(javax.swing.table.TableColumn) JPopupMenu(javax.swing.JPopupMenu) DataTable(org.knime.core.data.DataTable) Field(java.lang.reflect.Field) JOptionPane(javax.swing.JOptionPane) ActionEvent(java.awt.event.ActionEvent) MouseEvent(java.awt.event.MouseEvent) JScrollPane(javax.swing.JScrollPane) JLabel(javax.swing.JLabel) JRadioButtonMenuItem(javax.swing.JRadioButtonMenuItem) JViewport(javax.swing.JViewport) JPanel(javax.swing.JPanel) ActionEvent(java.awt.event.ActionEvent) JLabel(javax.swing.JLabel) SearchOptions(org.knime.core.node.tableview.FindPosition.SearchOptions) JCheckBox(javax.swing.JCheckBox) GridLayout(java.awt.GridLayout) BorderLayout(java.awt.BorderLayout) KeyStroke(javax.swing.KeyStroke) PatternSyntaxException(java.util.regex.PatternSyntaxException)

Example 5 with SearchOptions

use of org.knime.core.node.tableview.FindPosition.SearchOptions in project knime-core by knime.

the class FindPositionTest method testNoColumnsTable.

@Test
public void testNoColumnsTable() throws Exception {
    FindPosition f = new FindPosition(1, 0, new SearchOptions(m_isSearchRowID, m_isSearchColumnName, m_isSearchData));
    f.reset();
    f.mark();
    if (m_isSearchRowID) {
        assertThat(f.next(), is(true));
        assertThat("Expected first row key", f.getSearchRow(), is(0));
        assertThat("Expected rowID column", f.getSearchColumn(), is(-1));
        assertThat("Not at mark", f.reachedMark(), is(false));
    }
    assertThat(f.next(), is(false));
}
Also used : SearchOptions(org.knime.core.node.tableview.FindPosition.SearchOptions) Test(org.junit.Test)

Aggregations

SearchOptions (org.knime.core.node.tableview.FindPosition.SearchOptions)5 Test (org.junit.Test)4 BorderLayout (java.awt.BorderLayout)1 Component (java.awt.Component)1 Cursor (java.awt.Cursor)1 Dimension (java.awt.Dimension)1 Font (java.awt.Font)1 GraphicsDevice (java.awt.GraphicsDevice)1 GraphicsEnvironment (java.awt.GraphicsEnvironment)1 GridLayout (java.awt.GridLayout)1 Point (java.awt.Point)1 Rectangle (java.awt.Rectangle)1 Toolkit (java.awt.Toolkit)1 Clipboard (java.awt.datatransfer.Clipboard)1 Transferable (java.awt.datatransfer.Transferable)1 ActionEvent (java.awt.event.ActionEvent)1 ActionListener (java.awt.event.ActionListener)1 InputEvent (java.awt.event.InputEvent)1 ItemEvent (java.awt.event.ItemEvent)1 ItemListener (java.awt.event.ItemListener)1