gate.gui
Class LuceneDataStoreSearchGUI

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by gate.creole.AbstractVisualResource
                      extended by gate.gui.LuceneDataStoreSearchGUI
All Implemented Interfaces:
DatastoreListener, Resource, FeatureBearer, NameBearer, VisualResource, ImageObserver, MenuContainer, Serializable, EventListener, Accessible

@CreoleResource(name="Lucene Datastore Searcher",
                guiType=LARGE,
                resourceDisplayed="gate.creole.annic.SearchableDataStore",
                comment="GUI allowing to write a query with a JAPE derived syntax for querying\n a Lucene Datastore and display the results with a stacked view of the\n annotations and their values.",
                helpURL="http://gate.ac.uk/userguide/chap:annic")
public class LuceneDataStoreSearchGUI
extends AbstractVisualResource
implements DatastoreListener

GUI allowing to write a query with a JAPE derived syntax for querying a Lucene Datastore and display the results with a stacked view of the annotations and their values.
This VR is associated to SearchPR. You have to set the target with setTarget().
Features: query auto-completion, syntactic error checker, display of very big values, export of results in a file, 16 types of statistics, store display settings in gate config.

See Also:
Serialized Form

Nested Class Summary
protected  class LuceneDataStoreSearchGUI.AnnotationMouseListener
          Modifies the query or displays statistics according to the annotation rectangle clicked.
protected  class LuceneDataStoreSearchGUI.ButtonBorder
          A button with a nice etched border that changes when mouse over, select or press it.
protected  class LuceneDataStoreSearchGUI.ClearQueryAction
          Clear the queryTextArea text box.
protected  class LuceneDataStoreSearchGUI.ConfigureStackViewAction
          Show the configuration window for the annotation stack view.
protected  class LuceneDataStoreSearchGUI.ConfigureStackViewFrame
          Panel that shows a table of shortcut, annotation type and feature to display in the central view of the GUI.
protected  class LuceneDataStoreSearchGUI.ConfigureStackViewTableModel
          Table model for the stack view configuration.
protected  class LuceneDataStoreSearchGUI.ExecuteQueryAction
          Finds out the newly created query and execute it.
protected  class LuceneDataStoreSearchGUI.ExportResultsAction
          Exports results and statistics to a HTML File.
protected  class LuceneDataStoreSearchGUI.HeaderMouseListener
          Displays statistics according to the stack row header right-clicked.
protected  class LuceneDataStoreSearchGUI.NextResultsAction
          Finds out the next few results.
protected  class LuceneDataStoreSearchGUI.QueryTextArea
          JtextArea with autocompletion for the annotation types and features, context menu and undo/redo.
protected  class LuceneDataStoreSearchGUI.ResultTableCellRenderer
           
protected  class LuceneDataStoreSearchGUI.ResultTableModel
          Table model for the Result Tables.
 class LuceneDataStoreSearchGUI.TextMouseListener
          Add at the caret position or replace the selection in the query according to the text row value left clicked.
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
private  Map<String,List<String>> allAnnotTypesAndFeaturesFromDatastore
          Annotation types as keys and list of features as values
private static int ANNOTATION_TYPE
          Column (second dimension) of stackRows double array.
private  String[] annotationSetIDsFromDataStore
          AnnotationSet IDS the structure is: CorpusID;annotationSetName
private  JComboBox annotationSetsToSearchIn
           
private  JSplitPane bottomSplitPane
          Horizontal split between the results pane and statistics pane.
private  AnnotationStack centerPanel
          JPanel that contains the central panel of stack rows.
(package private)  String[] columnNames
          Names of the columns for stackRows data.
private  JButton configureStackViewButton
          Display the stack view configuration window.
private  LuceneDataStoreSearchGUI.ConfigureStackViewFrame configureStackViewFrame
          Current instance of the stack view frame.
private  LuceneDataStoreSearchGUI.ConfigureStackViewTableModel configureStackViewTableModel
           
private  JSlider contextSizeSlider
          Number of tokens to be shown as context in the results
private  List<Object> corpusIds
          list of IDs available in datastore
private  JComboBox corpusToSearchIn
           
private static int CROP
          Column (second dimension) of stackRows double array.
private static int DISPLAY
          Column (second dimension) of stackRows double array.
private  boolean errorOnLastQuery
          true if there was an error on the last query.
private  LuceneDataStoreSearchGUI.ExecuteQueryAction executeQueryAction
           
private  LuceneDataStoreSearchGUI.ExportResultsAction exportResultsAction
           
private static int FEATURE
          Column (second dimension) of stackRows double array.
private  XJTable globalStatisticsTable
          Contains statistics for the corpus and the annotation set selected.
private  DefaultTableModel globalStatisticsTableModel
           
private  Comparator<Integer> integerComparator
          Comparator for Integer in statistics tables.
private static int maxStackRows
          Maximum number of stackRow
private  JButton nextResults
          Show the next page of results.
private  LuceneDataStoreSearchGUI.NextResultsAction nextResultsAction
           
(package private)  int noOfResults
          Number of row to show in the results.
private  JSlider numberOfResultsSlider
           
private  int numStackRows
          Number of stackRows.
private  XJTable oneRowStatisticsTable
          Contains statistics of one row each.
private  DefaultTableModel oneRowStatisticsTableModel
           
private  Vector<String> oneRowStatisticsTableToolTips
          Contains the tooltips of the first column.
private  int pageOfResults
          Number of the page of results.
private  Map<String,Set<String>> populatedAnnotationTypesAndFeatures
           
private  LuceneDataStoreSearchGUI.QueryTextArea queryTextArea
          Text Area that contains the query
private  List<Hit> results
          instances of results associated found in the document
private  XJTable resultTable
          Lists the results found by the query
private  LuceneDataStoreSearchGUI.ResultTableModel resultTableModel
           
private  Searcher searcher
          Searcher object obtained from the datastore
private static int SHORTCUT
          Column (second dimension) of stackRows double array.
private  String[][] stackRows
          Double array that contains [row, column] of the stackRows data.
private  JTabbedPane statisticsTabbedPane
          Display statistics on the datastore.
private  Collator stringCollator
          Collator for String with insensitive case.
private  Object target
          The GUI is associated with the AnnicSearchPR
private  JLabel titleResults
          Gives the page number displayed in the results.
 
Fields inherited from class gate.creole.AbstractVisualResource
features, handle
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
LuceneDataStoreSearchGUI()
           
 
Method Summary
 void cleanup()
          Called when the user close the datastore.
protected  boolean deleteStackRow(int row)
          Delete a row in the stackRows array by shifting the following rows to avoid empty row.
protected  int findStackRow(Object... parameters)
          Find the first stack row satisfying all the parameters.
protected  Set<String> getAnnotationSetNames(String corpusName)
           
protected  Map<String,Set<String>> getTypesAndFeatures(String corpusName, String annotationSetName)
           
 Resource init()
          Called when a View is loaded in GATE.
protected  void initGui()
          Initialize the GUI.
 void resourceAdopted(DatastoreEvent de)
          This method is called by datastore when a new resource is adopted
 void resourceDeleted(DatastoreEvent de)
          This method is called by datastore when an existing resource is deleted
 void resourceWritten(DatastoreEvent de)
          This method is called when a resource is written into the datastore
protected  void saveStackViewConfiguration()
          Save the user config data.
 void setTarget(Object target)
          Called by the GUI when this viewer/editor has to initialise itself for a specific object.
private  void showResultInDocument(Document doc, Pattern result)
           
protected  void updateAnnotationSetsList()
           
protected  void updateAnnotationTypesList()
           
protected  void updateSetsTypesAndFeatures()
           
protected  void updateStackView()
          Updates the annotation stack in the central view.
protected  void updateViews()
          Update the result table and center view according to the result of the search contained in searcher.
 
Methods inherited from class gate.creole.AbstractVisualResource
getFeatures, getParameterValue, setFeatures, setHandle, setParameterValue, setParameterValues
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface gate.util.NameBearer
getName, setName
 

Field Detail

target

private Object target
The GUI is associated with the AnnicSearchPR


results

private List<Hit> results
instances of results associated found in the document


allAnnotTypesAndFeaturesFromDatastore

private Map<String,List<String>> allAnnotTypesAndFeaturesFromDatastore
Annotation types as keys and list of features as values


populatedAnnotationTypesAndFeatures

private Map<String,Set<String>> populatedAnnotationTypesAndFeatures

resultTable

private XJTable resultTable
Lists the results found by the query


resultTableModel

private LuceneDataStoreSearchGUI.ResultTableModel resultTableModel

configureStackViewButton

private JButton configureStackViewButton
Display the stack view configuration window.


globalStatisticsTable

private XJTable globalStatisticsTable
Contains statistics for the corpus and the annotation set selected.


oneRowStatisticsTable

private XJTable oneRowStatisticsTable
Contains statistics of one row each.


integerComparator

private Comparator<Integer> integerComparator
Comparator for Integer in statistics tables.


stringCollator

private Collator stringCollator
Collator for String with insensitive case.


bottomSplitPane

private JSplitPane bottomSplitPane
Horizontal split between the results pane and statistics pane.


statisticsTabbedPane

private JTabbedPane statisticsTabbedPane
Display statistics on the datastore.


queryTextArea

private LuceneDataStoreSearchGUI.QueryTextArea queryTextArea
Text Area that contains the query


corpusToSearchIn

private JComboBox corpusToSearchIn

annotationSetsToSearchIn

private JComboBox annotationSetsToSearchIn

corpusIds

private List<Object> corpusIds
list of IDs available in datastore


annotationSetIDsFromDataStore

private String[] annotationSetIDsFromDataStore
AnnotationSet IDS the structure is: CorpusID;annotationSetName


numberOfResultsSlider

private JSlider numberOfResultsSlider

contextSizeSlider

private JSlider contextSizeSlider
Number of tokens to be shown as context in the results


titleResults

private JLabel titleResults
Gives the page number displayed in the results.


nextResults

private JButton nextResults
Show the next page of results.


pageOfResults

private int pageOfResults
Number of the page of results.


noOfResults

int noOfResults
Number of row to show in the results.


centerPanel

private AnnotationStack centerPanel
JPanel that contains the central panel of stack rows.


executeQueryAction

private LuceneDataStoreSearchGUI.ExecuteQueryAction executeQueryAction

nextResultsAction

private LuceneDataStoreSearchGUI.NextResultsAction nextResultsAction

exportResultsAction

private LuceneDataStoreSearchGUI.ExportResultsAction exportResultsAction

configureStackViewFrame

private LuceneDataStoreSearchGUI.ConfigureStackViewFrame configureStackViewFrame
Current instance of the stack view frame.


columnNames

String[] columnNames
Names of the columns for stackRows data.


DISPLAY

private static final int DISPLAY
Column (second dimension) of stackRows double array.

See Also:
Constant Field Values

SHORTCUT

private static final int SHORTCUT
Column (second dimension) of stackRows double array.

See Also:
Constant Field Values

ANNOTATION_TYPE

private static final int ANNOTATION_TYPE
Column (second dimension) of stackRows double array.

See Also:
Constant Field Values

FEATURE

private static final int FEATURE
Column (second dimension) of stackRows double array.

See Also:
Constant Field Values

CROP

private static final int CROP
Column (second dimension) of stackRows double array.

See Also:
Constant Field Values

maxStackRows

private static final int maxStackRows
Maximum number of stackRow

See Also:
Constant Field Values

numStackRows

private int numStackRows
Number of stackRows.


stackRows

private String[][] stackRows
Double array that contains [row, column] of the stackRows data.


configureStackViewTableModel

private LuceneDataStoreSearchGUI.ConfigureStackViewTableModel configureStackViewTableModel

oneRowStatisticsTableModel

private DefaultTableModel oneRowStatisticsTableModel

globalStatisticsTableModel

private DefaultTableModel globalStatisticsTableModel

oneRowStatisticsTableToolTips

private Vector<String> oneRowStatisticsTableToolTips
Contains the tooltips of the first column.


searcher

private Searcher searcher
Searcher object obtained from the datastore


errorOnLastQuery

private boolean errorOnLastQuery
true if there was an error on the last query.

Constructor Detail

LuceneDataStoreSearchGUI

public LuceneDataStoreSearchGUI()
Method Detail

init

public Resource init()
Called when a View is loaded in GATE.

Specified by:
init in interface Resource
Overrides:
init in class AbstractVisualResource

cleanup

public void cleanup()
Called when the user close the datastore.

Specified by:
cleanup in interface Resource
Overrides:
cleanup in class AbstractVisualResource

initGui

protected void initGui()
Initialize the GUI.


showResultInDocument

private void showResultInDocument(Document doc,
                                  Pattern result)

updateViews

protected void updateViews()
Update the result table and center view according to the result of the search contained in searcher.


updateStackView

protected void updateStackView()
Updates the annotation stack in the central view.


updateAnnotationSetsList

protected void updateAnnotationSetsList()

updateAnnotationTypesList

protected void updateAnnotationTypesList()

getAnnotationSetNames

protected Set<String> getAnnotationSetNames(String corpusName)

getTypesAndFeatures

protected Map<String,Set<String>> getTypesAndFeatures(String corpusName,
                                                      String annotationSetName)

findStackRow

protected int findStackRow(Object... parameters)
Find the first stack row satisfying all the parameters.

Parameters:
parameters - couples of int*String that stands for column*value
Returns:
-2 if there is an error in parameters, -1 if not found, row satisfying the parameters otherwise
See Also:
DISPLAY column parameter, SHORTCUT column parameter, ANNOTATION_TYPE column parameter, FEATURE column parameter, CROP column parameter

deleteStackRow

protected boolean deleteStackRow(int row)
Delete a row in the stackRows array by shifting the following rows to avoid empty row.

Parameters:
row - row to delete in the stackRows array
Returns:
true if deleted, false otherwise

saveStackViewConfiguration

protected void saveStackViewConfiguration()
Save the user config data.


setTarget

public void setTarget(Object target)
Called by the GUI when this viewer/editor has to initialise itself for a specific object.

Specified by:
setTarget in interface VisualResource
Overrides:
setTarget in class AbstractVisualResource
Parameters:
target - the object (be it a Resource, DataStoreor whatever) this viewer has to display

resourceAdopted

public void resourceAdopted(DatastoreEvent de)
This method is called by datastore when a new resource is adopted

Specified by:
resourceAdopted in interface DatastoreListener

resourceDeleted

public void resourceDeleted(DatastoreEvent de)
This method is called by datastore when an existing resource is deleted

Specified by:
resourceDeleted in interface DatastoreListener

resourceWritten

public void resourceWritten(DatastoreEvent de)
This method is called when a resource is written into the datastore

Specified by:
resourceWritten in interface DatastoreListener

updateSetsTypesAndFeatures

protected void updateSetsTypesAndFeatures()