1- package  com .logicaldoc .gui .frontend .client .menu ;
2- 3- import  java .util .Arrays ;
4- import  java .util .LinkedHashMap ;
5- 6- import  com .logicaldoc .gui .common .client .Constants ;
7- import  com .logicaldoc .gui .common .client .Feature ;
8- import  com .logicaldoc .gui .common .client .Session ;
9- import  com .logicaldoc .gui .common .client .beans .GUICriterion ;
10- import  com .logicaldoc .gui .common .client .beans .GUISearchOptions ;
11- import  com .logicaldoc .gui .common .client .i18n .I18N ;
12- import  com .logicaldoc .gui .common .client .util .AwesomeFactory ;
13- import  com .logicaldoc .gui .frontend .client .document .grid .DocumentGridUtil ;
14- import  com .logicaldoc .gui .frontend .client .search .Search ;
15- import  com .smartgwt .client .types .Alignment ;
16- import  com .smartgwt .client .widgets .form .fields .FormItemIcon ;
17- import  com .smartgwt .client .widgets .form .fields .SelectItem ;
18- import  com .smartgwt .client .widgets .form .fields .TextItem ;
19- 20- /** 
21-  * A tray to interact with the Search 
22-  *  
23-  * @author Marco Meschieri - LogicalDOC 
24-  * @since 8.9.4 
25-  */ 
26- public  class  QuickSearchTray  extends  MenuTray  {
27- 28- 	private  static  final  String  SEARCH  = "search" ;
29- 30- 	private  static  final  String  FULLTEXT  = "fulltext" ;
31- 32- 	private  TextItem  searchBox  = new  TextItem ();
33- 34- 	private  SelectItem  searchType  = new  SelectItem ();
35- 36- 	public  QuickSearchTray () {
37- 		FormItemIcon  search  = new  FormItemIcon ();
38- 		search .setInline (true );
39- 		search .setInlineIconAlign (Alignment .RIGHT );
40- 		search .setText (AwesomeFactory .getIconHtml (SEARCH ));
41- 		search .addFormItemClickHandler (event  -> onSearch ());
42- 43- 		searchBox .setShowTitle (false );
44- 		searchBox .setDefaultValue (I18N .message (SEARCH ) + "..." );
45- 		searchBox .setWidth (180 );
46- 		searchBox .setIcons (search );
47- 		searchBox .addKeyPressHandler (event  -> {
48- 			if  (event .getKeyName () == null )
49- 				return ;
50- 			if  (Constants .KEY_ENTER .equalsIgnoreCase (event .getKeyName ())) {
51- 				onSearch ();
52- 			}
53- 		});
54- 		searchBox .addClickHandler (event  -> {
55- 			if  ((I18N .message (SEARCH ) + "..." ).equals (event .getItem ().getValue ())) {
56- 				event .getItem ().setValue ("" );
57- 			}
58- 		});
59- 60- 		LinkedHashMap <String , String > valueMap  = new  LinkedHashMap <>();
61- 		valueMap .put (FULLTEXT , I18N .message (FULLTEXT ));
62- 		valueMap .put ("filename" , I18N .message ("filename" ));
63- 		valueMap .put ("id" , I18N .message ("id" ));
64- 		valueMap .put ("customId" , I18N .message ("customid" ));
65- 66- 		searchType .setWidth (130 );
67- 		searchType .setShowTitle (false );
68- 		searchType .setValueMap (valueMap );
69- 		searchType .setValue (FULLTEXT );
70- 71- 		if  (Feature .enabled (Feature .PARAMETRIC_SEARCHES ))
72- 			setItems (searchBox , searchType );
73- 		else 
74- 			setItems (searchBox );
75- 	}
76- 77- 	private  void  onSearch () {
78- 		GUISearchOptions  options  = new  GUISearchOptions ();
79- 80- 		Integer  pageSize  = DocumentGridUtil .getPageSizeFromSpec (Session .get ().getUser ().getHitsGrid ());
81- 		if  (pageSize  == null )
82- 			pageSize  = Session .get ().getConfigAsInt ("search.hits" );
83- 		options .setMaxHits (pageSize );
84- 85- 		String  field  = searchType .getValueAsString ();
86- 		String  value  = searchBox .getValueAsString ().trim ();
87- 		if  (FULLTEXT .equals (field )) {
88- 			options .setType (GUISearchOptions .TYPE_FULLTEXT );
89- 			options .setExpression (value );
90- 			options .setExpressionLanguage (I18N .getLocale ());
91- 			options .setType (GUISearchOptions .TYPE_FULLTEXT );
92- 			options .setFields (Constants .getFulltextDefaultFields ());
93- 			options .setCriteria (null );
94- 		} else  {
95- 			options .setType (GUISearchOptions .TYPE_PARAMETRIC );
96- 			options .setTopOperator ("matchall" );
97- 			GUICriterion  criterion  = new  GUICriterion ();
98- 			criterion .setField (field );
99- 			criterion .setOperator ("contains" );
100- 			if  ("id" .equals (field )) {
101- 				criterion .setOperator ("equals" );
102- 				try  {
103- 					criterion .setLongValue (Long .parseLong (value ));
104- 				} catch  (Exception  t ) {
105- 					criterion .setLongValue (0L );
106- 				}
107- 			} else 
108- 				criterion .setStringValue (value );
109- 			options .setCaseSensitive (0 );
110- 			options .setCriteria (Arrays .asList (criterion ));
111- 		}
112- 113- 		Search .get ().setOptions (options );
114- 		Search .get ().search ();
115- 	}
116- 117- 118- 	@ Override 
119- 	public  boolean  equals (Object  obj ) {
120- 		if  (obj  instanceof  QuickSearchTray )
121- 			return  super .equals (obj );
122- 		else 
123- 			return  false ;
124- 	}
125- 126- 	@ Override 
127- 	public  int  hashCode () {
128- 		return  super .hashCode ();
129- 	}
1+ package  com .logicaldoc .gui .frontend .client .menu ;
2+ 3+ import  java .util .Arrays ;
4+ import  java .util .LinkedHashMap ;
5+ 6+ import  com .logicaldoc .gui .common .client .Constants ;
7+ import  com .logicaldoc .gui .common .client .Feature ;
8+ import  com .logicaldoc .gui .common .client .Session ;
9+ import  com .logicaldoc .gui .common .client .beans .GUICriterion ;
10+ import  com .logicaldoc .gui .common .client .beans .GUISearchOptions ;
11+ import  com .logicaldoc .gui .common .client .i18n .I18N ;
12+ import  com .logicaldoc .gui .common .client .util .AwesomeFactory ;
13+ import  com .logicaldoc .gui .frontend .client .document .grid .DocumentGridUtil ;
14+ import  com .logicaldoc .gui .frontend .client .search .Search ;
15+ import  com .smartgwt .client .types .Alignment ;
16+ import  com .smartgwt .client .widgets .form .fields .FormItemIcon ;
17+ import  com .smartgwt .client .widgets .form .fields .SelectItem ;
18+ import  com .smartgwt .client .widgets .form .fields .TextItem ;
19+ 20+ /** 
21+  * A tray to interact with the Search 
22+  *  
23+  * @author Marco Meschieri - LogicalDOC 
24+  * @since 8.9.4 
25+  */ 
26+ public  class  QuickSearchTray  extends  MenuTray  {
27+ 28+ 	private  static  final  String  SEARCH  = "search" ;
29+ 30+ 	private  static  final  String  FULLTEXT  = "fulltext" ;
31+ 32+ 	private  TextItem  searchBox  = new  TextItem ();
33+ 34+ 	private  SelectItem  searchType  = new  SelectItem ();
35+ 36+ 	public  QuickSearchTray () {
37+ 		FormItemIcon  search  = new  FormItemIcon ();
38+ 		search .setInline (true );
39+ 		search .setInlineIconAlign (Alignment .RIGHT );
40+ 		search .setText (AwesomeFactory .getIconHtml (SEARCH ));
41+ 		search .addFormItemClickHandler (event  -> onSearch ());
42+ 43+ 		searchBox .setShowTitle (false );
44+ 		searchBox .setDefaultValue (I18N .message (SEARCH ) + "..." );
45+ 		searchBox .setWidth (180 );
46+ 		searchBox .setIcons (search );
47+ 		searchBox .addKeyPressHandler (event  -> {
48+ 			if  (event .getKeyName () == null )
49+ 				return ;
50+ 			if  (Constants .KEY_ENTER .equalsIgnoreCase (event .getKeyName ())) {
51+ 				onSearch ();
52+ 			}
53+ 		});
54+ 		searchBox .addClickHandler (event  -> {
55+ 			if  ((I18N .message (SEARCH ) + "..." ).equals (event .getItem ().getValue ())) {
56+ 				event .getItem ().setValue ("" );
57+ 			}
58+ 		});
59+ 60+ 		LinkedHashMap <String , String > valueMap  = new  LinkedHashMap <>();
61+ 		valueMap .put (FULLTEXT , I18N .message (FULLTEXT ));
62+ 		valueMap .put ("filename" , I18N .message ("filename" ));
63+ 		valueMap .put ("id" , I18N .message ("id" ));
64+ 		valueMap .put ("customId" , I18N .message ("customid" ));
65+ 66+ 		searchType .setWidth (130 );
67+ 		searchType .setShowTitle (false );
68+ 		searchType .setValueMap (valueMap );
69+ 		searchType .setValue (FULLTEXT );
70+ 71+ 		if  (Feature .enabled (Feature .PARAMETRIC_SEARCHES ))
72+ 			setItems (searchBox , searchType );
73+ 		else 
74+ 			setItems (searchBox );
75+ 	}
76+ 77+ 	private  void  onSearch () {
78+ 		GUISearchOptions  options  = new  GUISearchOptions ();
79+ 80+ 		Integer  pageSize  = DocumentGridUtil .getPageSizeFromSpec (Session .get ().getUser ().getHitsGrid ());
81+ 		if  (pageSize  == null )
82+ 			pageSize  = Session .get ().getConfigAsInt ("search.hits" );
83+ 		options .setMaxHits (pageSize );
84+ 85+ 		String  field  = searchType .getValueAsString ();
86+ 		String  value  = searchBox .getValueAsString ().trim ();
87+ 		if  (FULLTEXT .equals (field )) {
88+ 			options .setType (GUISearchOptions .TYPE_FULLTEXT );
89+ 			options .setExpression (value );
90+ 			options .setExpressionLanguage (I18N .getLocale ());
91+ 			options .setType (GUISearchOptions .TYPE_FULLTEXT );
92+ 			options .setFields (Constants .getFulltextDefaultFields ());
93+ 			options .setCriteria (null );
94+ 		} else  {
95+ 			options .setType (GUISearchOptions .TYPE_PARAMETRIC );
96+ 			options .setTopOperator ("matchall" );
97+ 			GUICriterion  criterion  = new  GUICriterion ();
98+ 			criterion .setField (field );
99+ 			criterion .setOperator ("contains" );
100+ 			if  ("id" .equals (field )) {
101+ 				criterion .setOperator ("equals" );
102+ 				try  {
103+ 					criterion .setLongValue (Long .parseLong (value ));
104+ 				} catch  (Exception  t ) {
105+ 					criterion .setLongValue (0L );
106+ 				}
107+ 			} else 
108+ 				criterion .setStringValue (value );
109+ 			options .setCaseSensitive (false );
110+ 			options .setCriteria (Arrays .asList (criterion ));
111+ 		}
112+ 113+ 		Search .get ().setOptions (options );
114+ 		Search .get ().search ();
115+ 	}
116+ 117+ 118+ 	@ Override 
119+ 	public  boolean  equals (Object  obj ) {
120+ 		if  (obj  instanceof  QuickSearchTray )
121+ 			return  super .equals (obj );
122+ 		else 
123+ 			return  false ;
124+ 	}
125+ 126+ 	@ Override 
127+ 	public  int  hashCode () {
128+ 		return  super .hashCode ();
129+ 	}
130130}
0 commit comments