changeset 30:1e95995ddbb2

re-added the ability to refine the dataset by a (very simple) text search
author Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
date Wed, 28 Nov 2012 17:01:34 +0100
parents 4711c4ab0c23
children c7701b00ca5b
files src/econnect/wp3_3/client/core/StiCore.java src/econnect/wp3_3/client/widgets/table/DynamicStiTable.java
diffstat 2 files changed, 53 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/econnect/wp3_3/client/core/StiCore.java	Wed Nov 28 17:00:49 2012 +0100
+++ b/src/econnect/wp3_3/client/core/StiCore.java	Wed Nov 28 17:01:34 2012 +0100
@@ -182,12 +182,15 @@
     /**
      * Refines the dataset with the given index by the given text
      * 
+     * Moved to DynamicStiTable.
+     * 
      * @param text the refine text
      * @param index the index of the dataset
     */
+	/*
 	public final native void refineByText(String text, int index) /*-{
 		this.refineByText(text,index);
-	}-*/;
+	}-*///;
 
 	/**
      * Getter for the SimileAjax value for the granularity of a second
--- a/src/econnect/wp3_3/client/widgets/table/DynamicStiTable.java	Wed Nov 28 17:00:49 2012 +0100
+++ b/src/econnect/wp3_3/client/widgets/table/DynamicStiTable.java	Wed Nov 28 17:01:34 2012 +0100
@@ -199,7 +199,7 @@
 					fillTable();
 				}
 			}
-		}); 
+		});
 		showSelected.addClickHandler(new ClickHandler() {
 			public void onClick(ClickEvent event) {
 				if( viewAll != -1 ){
@@ -245,7 +245,7 @@
 		search.addClickHandler(new ClickHandler() {
 			public void onClick(ClickEvent event) {
 				if( !textualSearch.getText().equals("") ){
-					core.refineByText(textualSearch.getText(),index);
+					refineByText(textualSearch.getText());
 					textualSearch.setEnabled(false);
 					refine.setWidget(0, 1, buttons);
 				}
@@ -260,6 +260,17 @@
 			public void onClick(ClickEvent event) {
 				textualSearch.setEnabled(true);
 				core.reset();
+				
+				//TODO: das gibt es nun mehrfach im Code, sollte also in eine Funktion
+				//Ÿberfuhrt werden
+				showSelected.removeStyleName("selectedView");
+				showAll.addStyleName("selectedView");
+				viewAll = 1;
+				setActualObjectSet();
+				organizePages();
+				checkHide();
+				fillTable();
+				
 				refine.setWidget(0, 1, search);
 			}
 		});
@@ -349,6 +360,8 @@
 				}
 			}
 			if( objects.size() > 0 ){
+				//TODO: Wenn die derzeitige Auswahl _keine_ Elemente
+				//enthŠlt, werden _alle_ angezeigt. Ist das sinnvoll?
 				actualObjectSet = objects;
 			}
 			else {
@@ -561,6 +574,40 @@
 	}
 	
     /**
+     * Refines the currently selected dataset (table) by the search term entered.
+     * 
+    */
+	private void refineByText(String searchString){
+		
+		String lowerCaseSearchString = searchString.toLowerCase();
+		
+		for( int i=0; i<this.dataSet.getObjects().length(); i++){
+			DataObject currentDataObject = this.dataSet.getObjects().get(i);
+			
+			String name = currentDataObject.getName();
+			String description = currentDataObject.getDescription();
+			String place = currentDataObject.getPlace();
+			
+			if (	name.toLowerCase().contains(lowerCaseSearchString) || 
+					description.toLowerCase().contains(lowerCaseSearchString) ||
+					place.toLowerCase().contains(lowerCaseSearchString) )
+				currentDataObject.setPercentage(1);
+			else 
+				currentDataObject.setPercentage(0);
+		}
+		
+		//TODO: das gibt es nun mehrfach im Code, sollte also in eine Funktion
+		//Ÿberfuhrt werden
+		viewAll = -1;
+		setActualObjectSet();
+		showAll.removeStyleName("selectedView");
+		showSelected.addStyleName("selectedView");
+		organizePages();
+		checkHide();
+		fillTable();
+	}
+	
+	/**
      * Checks, if the previous or next button has to be hidden
     */
 	private void checkHide(){