/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.search;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.search.ui.ISearchPageContainer;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.IWorkingSetManager;
import org.eclipse.ui.PlatformUI;
/**
*
* @author liaogc
*/
class SearchPatternData {
private String pattern;
private boolean isCaseSensitive;
private String[] searchResTypes;
private String[] searchItems;
private int scope;
private IWorkingSet[] workingSets;
public SearchPatternData(String[] searchResTypes, boolean isCaseSensitive, String pattern, String[] searchItems) {
this(searchResTypes, pattern, isCaseSensitive, ISearchPageContainer.WORKSPACE_SCOPE, null, searchItems);
}
public SearchPatternData(String[] searchResTypes, String pattern, boolean isCaseSensitive, int scope, IWorkingSet[] workingSets, String[] searchItems) {
this.searchResTypes= searchResTypes;
this.pattern= pattern;
this.isCaseSensitive= isCaseSensitive;
this.scope= scope;
this.workingSets= workingSets;
this.searchItems= searchItems;
}
public boolean isCaseSensitive() {
return isCaseSensitive;
}
public String getPattern() {
return pattern;
}
public int getScope() {
return scope;
}
public IWorkingSet[] getWorkingSets() {
return workingSets;
}
/**
* @return the searchResTypes
*/
public String[] getSearchResTypes() {
return searchResTypes;
}
/**
* @return the searchItems
*/
public String[] getSearchItems() {
return searchItems;
}
public void store(IDialogSettings settings) {
settings.put("searchResTypes", searchResTypes);
settings.put("searchItems", searchItems);
settings.put("scope", scope);
settings.put("pattern", pattern);
settings.put("isCaseSensitive", isCaseSensitive);
if (workingSets != null) {
String[] wsIds= new String[workingSets.length];
for (int i= 0; i < workingSets.length; i++) {
wsIds[i]= workingSets[i].getName();
}
settings.put("workingSets", wsIds);
} else {
settings.put("workingSets", new String[0]);
}
}
public static SearchPatternData create(IDialogSettings settings) {
String pattern= settings.get("pattern");
if (pattern.length() == 0) {
return null;
}
String[] wsIds= settings.getArray("workingSets");
IWorkingSet[] workingSets= null;
if (wsIds != null && wsIds.length > 0) {
IWorkingSetManager workingSetManager= PlatformUI.getWorkbench().getWorkingSetManager();
workingSets= new IWorkingSet[wsIds.length];
for (int i= 0; workingSets != null && i < wsIds.length; i++) {
workingSets[i]= workingSetManager.getWorkingSet(wsIds[i]);
if (workingSets[i] == null) {
workingSets= null;
}
}
}
try {
int scope= settings.getInt("scope");
boolean isCaseSensitive= settings.getBoolean("isCaseSensitive");
String[] searchResTypes = new String[0];
String[] searchItems = new String[0];
if (settings.getArray("searchResTypes") != null) {
searchResTypes= settings.getArray("searchResTypes");
}
if (settings.getArray("searchItems") != null) {
searchItems= settings.getArray("searchItems");
}
return new SearchPatternData(searchResTypes, pattern, isCaseSensitive, scope, workingSets, searchItems);
} catch (NumberFormatException e) {
return null;
}
}
}