1 6 package com.nightlabs.ipanema.person.search; 7 8 import javax.security.auth.login.LoginException ; 9 10 import org.apache.log4j.Logger; 11 import org.eclipse.swt.SWT; 12 import org.eclipse.swt.events.SelectionEvent; 13 import org.eclipse.swt.layout.GridData; 14 import org.eclipse.swt.layout.GridLayout; 15 import org.eclipse.swt.widgets.Button; 16 import org.eclipse.swt.widgets.Composite; 17 import org.eclipse.swt.widgets.Label; 18 19 import com.nightlabs.ipanema.base.login.Login; 20 import com.nightlabs.ipanema.person.PersonManager; 21 import com.nightlabs.ipanema.person.util.PersonSearchFilter; 22 import com.nightlabs.jdo.search.SearchFilter; 23 import com.nightlabs.jdo.search.SearchFilterProvider; 24 import com.nightlabs.jdo.search.SearchResultFetcher; 25 import com.nightlabs.rcp.composite.SelectableComposite; 26 import com.nightlabs.rcp.composite.TightWrapperComposite; 27 28 38 public class PersonQuickSearch implements SearchFilterProvider { 39 private static final Logger LOGGER = Logger.getLogger(PersonQuickSearch.class); 40 41 42 private TightWrapperComposite wrapperComposite; 43 private Button quickButton; 44 private String buttonText; 45 private PersonSearchFilter personSearchFilter; 46 private SearchResultFetcher resultFetcher; 47 48 protected PersonManager personManager; 49 50 54 public PersonQuickSearch(String buttonText) { 55 this.buttonText = buttonText; 56 } 57 58 65 public PersonQuickSearch(String buttonText, SearchResultFetcher resultFetcher) { 66 this.buttonText = buttonText; 67 this.resultFetcher = resultFetcher; 68 } 69 70 75 public Composite createComposite(Composite parent) { 76 wrapperComposite = new TightWrapperComposite(parent,SWT.NONE,true); 77 SelectableComposite comp = new SelectableComposite(wrapperComposite,SWT.BORDER); 94 GridLayout layout = new GridLayout(); 95 layout.horizontalSpacing = 0; 96 layout.verticalSpacing = 0; 97 layout.marginHeight = 0; 98 layout.marginWidth = 0; 99 comp.setLayout(layout); 100 Label label = new Label(comp,SWT.NONE); 101 label.setText(buttonText); 102 GridData gd = new GridData(GridData.FILL_HORIZONTAL); 103 gd.heightHint = 15; 104 comp.setLayoutData(gd); 105 return wrapperComposite; 106 } 107 108 public Composite getComposite() { 109 return wrapperComposite; 110 } 111 112 118 protected PersonSearchFilter getPersonSearchFilter(boolean refresh) { 119 if (refresh || (personSearchFilter == null)) { 120 personSearchFilter = new PersonSearchFilter(); 121 } 122 return personSearchFilter; 123 } 124 125 130 protected void quickSearchButtonPressed(SelectionEvent evt) { 131 if (resultFetcher == null) 132 return; 133 134 Login login; 135 try { 136 login = Login.getLogin(); 137 } catch (LoginException e) { 138 LOGGER.error("Could not log in, fetcher will not be triggered!",e); 139 return; 140 } 141 142 resultFetcher.searchTriggered(this,login); 143 } 144 145 151 public void setButtonText(String txt) { 152 this.buttonText = txt; 153 } 154 155 160 public String getButtonText() { 161 return buttonText; 162 } 163 164 170 public SearchFilter getSearchFilter() { 171 return getPersonSearchFilter(true); 172 } 173 174 175 } 176 | Popular Tags |