psmith 2003/09/10 16:03:07
Modified: src/java/org/apache/log4j/chainsaw
ChainsawToolBarAndMenus.java LogPanel.java
ChainsawCyclicBufferTableModel.java
Log:
Refactored LogPanel and Menu & Toolbar class so they are decoupled.
LogPanel is now responsible for it's own undocked Toolbar
actions.
The find option now at least doens't cause a ClassCastException,
but it's still operating a little oddly. Will replace this mechanism
with a series of Finder-style objects.
Revision Changes Path
1.11 +18 -202
jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
Index: ChainsawToolBarAndMenus.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ChainsawToolBarAndMenus.java 10 Sep 2003 03:18:33 -0000 1.10
+++ ChainsawToolBarAndMenus.java 10 Sep 2003 23:03:07 -0000 1.11
@@ -70,8 +70,6 @@
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Collection;
@@ -89,7 +87,6 @@
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComponent;
-import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
@@ -134,16 +131,14 @@
private final Collection lookAndFeelMenus = new ArrayList();
private final JCheckBoxMenuItem toggleShowReceiversCheck =
new JCheckBoxMenuItem();
-
- private final JCheckBoxMenuItem toggleDetailMenuItem =
- new JCheckBoxMenuItem();
-
+ private final JCheckBoxMenuItem toggleDetailMenuItem =
+ new JCheckBoxMenuItem();
private final FileMenu fileMenu;
private final JCheckBoxMenuItem toggleStatusBarCheck =
new JCheckBoxMenuItem();
private final JMenu viewMenu = new JMenu("View");
private final JMenuBar menuBar;
- private final JCheckBoxMenuItem menuItemClose = new JCheckBoxMenuItem();
+ private final JCheckBoxMenuItem menuItemClose = new JCheckBoxMenuItem();
private final JRadioButtonMenuItem levelDisplayIcon =
new JRadioButtonMenuItem("Icon");
private final JRadioButtonMenuItem levelDisplayText =
@@ -336,168 +331,6 @@
return toolbar;
}
- JToolBar createDockwindowToolbar(
- final JFrame dockablePanel, final LogPanel logPanel) {
- final JToolBar toolbar = new JToolBar();
- toolbar.setFloatable(false);
-
- final String ident = dockablePanel.getTitle();
- final Action dockPauseAction =
- new AbstractAction("Pause") {
- public void actionPerformed(ActionEvent evt) {
- logPanel.setPaused(!logPanel.isPaused());
- }
- };
-
- dockPauseAction.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_P));
- dockPauseAction.putValue(
- Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F12"));
- dockPauseAction.putValue(
- Action.SHORT_DESCRIPTION,
- "Halts the display, while still allowing events to stream in the background");
- dockPauseAction.putValue(
- Action.SMALL_ICON, new ImageIcon(ChainsawIcons.PAUSE));
-
- final SmallToggleButton dockPauseButton =
- new SmallToggleButton(dockPauseAction);
- dockPauseButton.setText("");
-
- dockPauseButton.getModel().setSelected(logPanel.isPaused());
-
- logPanel.addPropertyChangeListener("paused", new PropertyChangeListener() {
-
- public void propertyChange(PropertyChangeEvent evt) {
- dockPauseButton.getModel().setSelected(logPanel.isPaused());
- }});
- toolbar.add(dockPauseButton);
-
- Action dockShowPrefsAction =
- new AbstractAction("") {
- public void actionPerformed(ActionEvent arg0) {
- logPanel.showPreferences();
- }
- };
-
- dockShowPrefsAction.putValue(
- Action.SHORT_DESCRIPTION,
- showPreferencesAction.getValue(Action.SHORT_DESCRIPTION));
- dockShowPrefsAction.putValue(
- Action.SMALL_ICON, showPreferencesAction.getValue(Action.SMALL_ICON));
-
- Action dockToggleLogTreeAction =
- new AbstractAction() {
- public void actionPerformed(ActionEvent e) {
- logPanel.toggleLogTreePanel();
- }
- };
-
- dockToggleLogTreeAction.putValue(
- Action.SMALL_ICON, toggleLogTreeAction.getValue(Action.SMALL_ICON));
-
- dockToggleLogTreeAction.putValue(
- Action.NAME, toggleLogTreeAction.getValue(Action.NAME));
-
- dockToggleLogTreeAction.putValue(
- Action.SHORT_DESCRIPTION,
- toggleLogTreeAction.getValue(Action.SHORT_DESCRIPTION));
- dockToggleLogTreeAction.putValue(
- Action.SMALL_ICON, toggleLogTreeAction.getValue(Action.SMALL_ICON));
-
- toolbar.add(new SmallButton(dockShowPrefsAction));
-
- SmallToggleButton toggleLogTreeButton =
- new SmallToggleButton(dockToggleLogTreeAction);
- toggleLogTreeButton.setSelected(logPanel.isLogTreePanelVisible());
- toolbar.add(toggleLogTreeButton);
- toolbar.addSeparator();
-
- final Action undockedClearAction =
- new AbstractAction("Clear") {
- public void actionPerformed(ActionEvent arg0) {
- logPanel.clearModel();
- }
- };
-
- undockedClearAction.putValue(
- Action.SMALL_ICON, new ImageIcon(ChainsawIcons.DELETE));
- undockedClearAction.putValue(
- Action.SHORT_DESCRIPTION, "Removes all the events from the current view");
-
- final SmallButton dockClearButton = new SmallButton(undockedClearAction);
- dockClearButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
- KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, InputEvent.CTRL_MASK),
- undockedClearAction.getValue(Action.NAME));
- dockClearButton.getActionMap().put(
- undockedClearAction.getValue(Action.NAME), undockedClearAction);
-
- dockClearButton.setText("");
- toolbar.add(dockClearButton);
- toolbar.addSeparator();
-
- final JTextField findField = createFindField();
- findField.getDocument().addDocumentListener(
- new DocumentListener() {
- public void insertUpdate(DocumentEvent e) {
- findInUndocked(false);
- }
-
- public void removeUpdate(DocumentEvent e) {
- findInUndocked(false);
- }
-
- public void changedUpdate(DocumentEvent e) {
- findInUndocked(false);
- }
-
- private void findInUndocked(boolean next) {
- localFind(next, logPanel, findField);
- }
- });
-
- final Action undockedFindAction =
- new AbstractAction() {
- public void actionPerformed(ActionEvent e) {
- localFind(true, logPanel, findField);
- }
- };
-
- undockedFindAction.putValue(Action.NAME, "Find");
- undockedFindAction.putValue(
- Action.SHORT_DESCRIPTION, "Finds the next occurrence within this view");
- undockedFindAction.putValue(
- Action.SMALL_ICON, new ImageIcon(ChainsawIcons.FIND));
-
- SmallButton undockedFindNextButton = new SmallButton(undockedFindAction);
-
- undockedFindNextButton.setAction(undockedFindAction);
- undockedFindNextButton.setText("");
- undockedFindNextButton.getActionMap().put(
- undockedFindAction.getValue(Action.NAME), undockedFindAction);
- undockedFindNextButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
- KeyStroke.getKeyStroke("F3"), undockedFindAction.getValue(Action.NAME));
-
- toolbar.add(undockedFindNextButton);
- toolbar.add(findField);
-
- toolbar.addSeparator();
-
- Action redockAction =
- new AbstractAction("", ChainsawIcons.ICON_DOCK) {
- public void actionPerformed(ActionEvent arg0) {
- logPanel.dock();
- }
- };
-
- redockAction.putValue(
- Action.SHORT_DESCRIPTION,
- "Docks this window back with the main Chainsaw window");
-
- SmallButton redockButton = new SmallButton(redockAction);
- toolbar.add(redockButton);
-
- return toolbar;
- }
-
private Action createClearAction() {
final Action action =
new AbstractAction("Clear") {
@@ -527,13 +360,13 @@
final Action action =
new AbstractAction() {
public void actionPerformed(ActionEvent e) {
- closeAction.putValue(Action.NAME, "Welcome tab");
- logui.removeWelcomePanel();
- if(menuItemClose.isSelected()){
- logui.addWelcomePanel();
- } else {
-
- }
+ closeAction.putValue(Action.NAME, "Welcome tab");
+ logui.removeWelcomePanel();
+
+ if (menuItemClose.isSelected()) {
+ logui.addWelcomePanel();
+ } else {
+ }
}
};
@@ -564,7 +397,7 @@
});
}
- private JTextField createFindField() {
+ static JTextField createFindField() {
JTextField tf = new JTextField();
Dimension fixedSize = new Dimension(132, 24);
tf.setPreferredSize(fixedSize);
@@ -618,7 +451,7 @@
showToolbarCheck.setSelected(true);
menuItemClose.setAction(closeAction);
-
+
JCheckBoxMenuItem pause = new JCheckBoxMenuItem(pauseAction);
JMenuItem menuPrefs = new JMenuItem(showPreferencesAction);
menuPrefs.setText(
@@ -650,7 +483,7 @@
Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_B));
toggleStatusBarCheck.setAction(toggleStatusBarAction);
toggleStatusBarCheck.setSelected(true);
-
+
activeTabMenu.add(pause);
activeTabMenu.add(toggleDetailMenuItem);
activeTabMenu.add(toggleLogTreeMenuItem);
@@ -1086,29 +919,11 @@
LogPanel logPanel = logui.getCurrentLogPanel();
if (logPanel != null) {
- localFind(next, logPanel, findTextField);
- }
- }
-
- private void localFind(
- boolean next, final LogPanel logPanel,
- final JTextField theFindTextField) {
- if (!theFindTextField.getText().equals("")) {
- if (
- (lastFind.length() == 0)
- || (lastFind.length() > theFindTextField.getText().length())) {
- logPanel.findFromTop(theFindTextField.getText());
+ if (next) {
+ logPanel.find(findTextField.getText());
} else {
- if (next) {
- logPanel.findNext(theFindTextField.getText());
- } else {
- logPanel.find(theFindTextField.getText());
- }
+ logPanel.find(findTextField.getText());
}
-
- lastFind = theFindTextField.getText();
- } else {
- theFindTextField.requestFocus();
}
}
@@ -1130,6 +945,7 @@
logTreePaneButton.setSelected(logui.isLogTreePanelVisible());
showReceiversButton.setSelected(logui.isReceiverPanelVisible());
menuItemClose.setSelected(logui.getTabbedPane().containsWelcomePanel());
+
/**
* We get the currently selected LogPanel, and if null, deactivate some
* actions
@@ -1150,7 +966,7 @@
pauseButton.getModel().setSelected(logPanel.isPaused());
logui.getStatusBar().setPaused(logPanel.isPaused());
- toggleDetailMenuItem.setSelected(logPanel.isDetailPaneVisible());
+ toggleDetailMenuItem.setSelected(logPanel.isDetailPaneVisible());
detailPaneButton.getModel().setSelected(logPanel.isDetailPaneVisible());
}
1.3 +180 -14 jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java
Index: LogPanel.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LogPanel.java 10 Sep 2003 03:18:33 -0000 1.2
+++ LogPanel.java 10 Sep 2003 23:03:07 -0000 1.3
@@ -80,6 +80,7 @@
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
+import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
@@ -139,6 +140,7 @@
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToolBar;
+import javax.swing.KeyStroke;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
@@ -173,7 +175,7 @@
final DetailPaneUpdater detailPaneUpdater;
final JPanel upperPanel;
final JPanel eventsAndStatusPanel;
- final JFrame f;
+ final JFrame undockedFrame;
final DockablePanel externalPanel;
final Action dockingAction;
final JSortTable table;
@@ -199,6 +201,7 @@
private final LoggerNameTreePanel logTreePanel;
private boolean tooltipsEnabled;
private final ChainsawStatusBar statusBar;
+ private final JToolBar undockedToolbar;
public LogPanel(
final ChainsawStatusBar statusBar, final String ident, String eventType) {
@@ -750,20 +753,18 @@
final JMenuItem menuItemToggleDock = new JMenuItem("Undock/dock");
- f = new JFrame(ident);
- f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+ undockedFrame = new JFrame(ident);
+ undockedFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
if (ChainsawIcons.UNDOCKED_ICON != null) {
- f.setIconImage(new ImageIcon(ChainsawIcons.UNDOCKED_ICON).getImage());
+ undockedFrame.setIconImage(
+ new ImageIcon(ChainsawIcons.UNDOCKED_ICON).getImage());
}
externalPanel = new DockablePanel();
externalPanel.setLayout(new BorderLayout());
- f.getContentPane().add(externalPanel);
+ undockedFrame.getContentPane().add(externalPanel);
- // TODO undocked toolbar is broken
- // f.getContentPane().add(
- // logUI.getToolBarAndMenus().createDockwindowToolbar(f, this),
BorderLayout.NORTH);
dockingAction =
new AbstractAction("Undock") {
public void actionPerformed(ActionEvent evt) {
@@ -777,7 +778,7 @@
dockingAction.putValue(
Action.SMALL_ICON, new ImageIcon(ChainsawIcons.UNDOCK));
menuItemToggleDock.setAction(dockingAction);
- f.addWindowListener(
+ undockedFrame.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dock();
@@ -974,7 +975,170 @@
});
}
- f.pack();
+ undockedToolbar = createDockwindowToolbar();
+ externalPanel.add(undockedToolbar, BorderLayout.NORTH);
+ undockedFrame.pack();
+ }
+
+ private JToolBar createDockwindowToolbar() {
+ final JToolBar toolbar = new JToolBar();
+ toolbar.setFloatable(false);
+
+ final Action dockPauseAction =
+ new AbstractAction("Pause") {
+ public void actionPerformed(ActionEvent evt) {
+ setPaused(!isPaused());
+ }
+ };
+
+ dockPauseAction.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_P));
+ dockPauseAction.putValue(
+ Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F12"));
+ dockPauseAction.putValue(
+ Action.SHORT_DESCRIPTION,
+ "Halts the display, while still allowing events to stream in the background");
+ dockPauseAction.putValue(
+ Action.SMALL_ICON, new ImageIcon(ChainsawIcons.PAUSE));
+
+ final SmallToggleButton dockPauseButton =
+ new SmallToggleButton(dockPauseAction);
+ dockPauseButton.setText("");
+
+ dockPauseButton.getModel().setSelected(isPaused());
+
+ addPropertyChangeListener(
+ "paused",
+ new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ dockPauseButton.getModel().setSelected(isPaused());
+ }
+ });
+ toolbar.add(dockPauseButton);
+
+ Action dockShowPrefsAction =
+ new AbstractAction("") {
+ public void actionPerformed(ActionEvent arg0) {
+ showPreferences();
+ }
+ };
+
+ dockShowPrefsAction.putValue(
+ Action.SHORT_DESCRIPTION, "Define display and color filters...");
+ dockShowPrefsAction.putValue(
+ Action.SMALL_ICON, ChainsawIcons.ICON_PREFERENCES);
+
+ Action dockToggleLogTreeAction =
+ new AbstractAction() {
+ public void actionPerformed(ActionEvent e) {
+ toggleLogTreePanel();
+ }
+ };
+
+ dockToggleLogTreeAction.putValue(Action.SMALL_ICON, null);
+
+ dockToggleLogTreeAction.putValue(Action.NAME, "Logger Tree");
+
+ dockToggleLogTreeAction.putValue(
+ Action.SHORT_DESCRIPTION, "Toggles the Log Tree panel");
+ dockToggleLogTreeAction.putValue(Action.SMALL_ICON, null);
+
+ toolbar.add(new SmallButton(dockShowPrefsAction));
+
+ SmallToggleButton toggleLogTreeButton =
+ new SmallToggleButton(dockToggleLogTreeAction);
+ toggleLogTreeButton.setSelected(isLogTreePanelVisible());
+ toolbar.add(toggleLogTreeButton);
+ toolbar.addSeparator();
+
+ final Action undockedClearAction =
+ new AbstractAction("Clear") {
+ public void actionPerformed(ActionEvent arg0) {
+ clearModel();
+ }
+ };
+
+ undockedClearAction.putValue(
+ Action.SMALL_ICON, new ImageIcon(ChainsawIcons.DELETE));
+ undockedClearAction.putValue(
+ Action.SHORT_DESCRIPTION, "Removes all the events from the current view");
+
+ final SmallButton dockClearButton = new SmallButton(undockedClearAction);
+ dockClearButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
+ KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, InputEvent.CTRL_MASK),
+ undockedClearAction.getValue(Action.NAME));
+ dockClearButton.getActionMap().put(
+ undockedClearAction.getValue(Action.NAME), undockedClearAction);
+
+ dockClearButton.setText("");
+ toolbar.add(dockClearButton);
+ toolbar.addSeparator();
+
+ final JTextField findField = ChainsawToolBarAndMenus.createFindField();
+ findField.getDocument().addDocumentListener(
+ new DocumentListener() {
+ public void insertUpdate(DocumentEvent e) {
+ findInUndocked(false);
+ }
+
+ public void removeUpdate(DocumentEvent e) {
+ findInUndocked(false);
+ }
+
+ public void changedUpdate(DocumentEvent e) {
+ findInUndocked(false);
+ }
+
+ private void findInUndocked(boolean next) {
+ if (next) {
+ findNext(findField.getText());
+ } else {
+ find(findField.getText());
+ }
+ }
+ });
+
+ final Action undockedFindAction =
+ new AbstractAction() {
+ public void actionPerformed(ActionEvent e) {
+ findNext(findField.getText());
+ }
+ };
+
+ undockedFindAction.putValue(Action.NAME, "Find");
+ undockedFindAction.putValue(
+ Action.SHORT_DESCRIPTION, "Finds the next occurrence within this view");
+ undockedFindAction.putValue(
+ Action.SMALL_ICON, new ImageIcon(ChainsawIcons.FIND));
+
+ SmallButton undockedFindNextButton = new SmallButton(undockedFindAction);
+
+ undockedFindNextButton.setAction(undockedFindAction);
+ undockedFindNextButton.setText("");
+ undockedFindNextButton.getActionMap().put(
+ undockedFindAction.getValue(Action.NAME), undockedFindAction);
+ undockedFindNextButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
+ KeyStroke.getKeyStroke("F3"), undockedFindAction.getValue(Action.NAME));
+
+ toolbar.add(undockedFindNextButton);
+ toolbar.add(findField);
+
+ toolbar.addSeparator();
+
+ Action redockAction =
+ new AbstractAction("", ChainsawIcons.ICON_DOCK) {
+ public void actionPerformed(ActionEvent arg0) {
+ dock();
+ }
+ };
+
+ redockAction.putValue(
+ Action.SHORT_DESCRIPTION,
+ "Docks this window back with the main Chainsaw window");
+
+ SmallButton redockButton = new SmallButton(redockAction);
+ toolbar.add(redockButton);
+
+ return toolbar;
}
public void addEventCountListener(EventCountListener l) {
@@ -1092,7 +1256,7 @@
*/
void dock() {
setDocked(true);
- f.setVisible(false);
+ undockedFrame.setVisible(false);
removeAll();
// add(lowerPanel, BorderLayout.CENTER);
@@ -1110,13 +1274,15 @@
void undock() {
setDocked(false);
externalPanel.removeAll();
+
+ externalPanel.add(undockedToolbar, BorderLayout.NORTH);
externalPanel.add(nameTreeAndMainPanelSplit, BorderLayout.CENTER);
externalPanel.setDocked(false);
- f.setSize(getSize());
+ undockedFrame.setSize(getSize());
- f.setLocation(getBounds().x, getBounds().y);
+ undockedFrame.setLocation(getBounds().x, getBounds().y);
- f.setVisible(true);
+ undockedFrame.setVisible(true);
dockingAction.putValue(Action.NAME, "Dock");
dockingAction.putValue(Action.SMALL_ICON, ChainsawIcons.ICON_DOCK);
}
1.6 +17 -21
jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
Index: ChainsawCyclicBufferTableModel.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ChainsawCyclicBufferTableModel.java 9 Sep 2003 03:00:51 -0000 1.5
+++ ChainsawCyclicBufferTableModel.java 10 Sep 2003 23:03:07 -0000 1.6
@@ -64,8 +64,8 @@
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.ListIterator;
import java.util.Set;
-import java.util.Vector;
import javax.swing.SwingUtilities;
import javax.swing.event.EventListenerList;
@@ -195,13 +195,13 @@
}
}
- /**
- * Changes the underlying display rule in use. If there was
- * a previous Rule defined, this Model removes itself as a listener
- * from the old rule, and adds itself to the new rule (if the new Rule is not
Null).
- *
- * In any case, the model ensures the Filtered list is made up to date in a
separate thread.
- */
+ /**
+ * Changes the underlying display rule in use. If there was
+ * a previous Rule defined, this Model removes itself as a listener
+ * from the old rule, and adds itself to the new rule (if the new Rule is not
Null).
+ *
+ * In any case, the model ensures the Filtered list is made up to date in a
separate thread.
+ */
public void setDisplayRule(Rule displayRule) {
if (this.displayRule != null) {
this.displayRule.removePropertyChangeListener(this);
@@ -258,6 +258,11 @@
notifyCountListeners();
}
+ /**
+ * @deprecated - should this be replaced with a Refinement filter?
+ *
+ * If not it should be replaced with something inside LogPanel, a Finder class,
it should not be in the Model.
+ */
public int find(int startRow, String text) {
if (text == null) {
text = "";
@@ -269,28 +274,19 @@
String thisVal = null;
synchronized (syncLock) {
- Iterator iter = filteredList.iterator();
+ ListIterator iter = filteredList.listIterator();
while (iter.hasNext()) {
currentRow++;
- Vector v2 = (Vector) iter.next();
+ LoggingEvent event = (LoggingEvent) iter.next();
if (currentRow < startRow) {
continue;
}
- Iterator iter2 = v2.iterator();
-
- while (iter2.hasNext()) {
- thisVal = iter2.next().toString();
-
- boolean result =
- ((thisVal != null) && (thisVal.toLowerCase().indexOf(text) > -1));
-
- if (result) {
- return currentRow;
- }
+ if (event.getMessage().toString().toLowerCase().indexOf(text) > 0) {
+ return currentRow;
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]