blob: 0bdde79062c67741dcdf11b90cb416897f44e19c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.search.ui.text;
import org.eclipse.search.ui.ISearchResult;
import org.eclipse.search.ui.SearchResultEvent;
/**
* An event object describing addition and removal of matches. Events of this
* class are sent when <code>Match</code>es are added or removed from an
* <code>AbstractTextSearchResult</code>.
* <p>
* Clients may instantiate or subclass this class.
* </p>
* @since 3.0
*/
public class MatchEvent extends SearchResultEvent {
private static final long serialVersionUID = 6009335074727417445L;
private int fKind;
private Match[] fMatches;
private Match[] fMatchContainer = new Match[1];
/**
* Constant for a matches being added.
*
* @see MatchEvent#getKind()
*/
public static final int ADDED = 1;
/**
* Constant for a matches being removed.
*
* @see MatchEvent#getKind()
*/
public static final int REMOVED = 2;
private static final Match[] fgEmtpyMatches = new Match[0];
/**
* Constructs a new <code>MatchEvent</code>.
*
* @param searchResult the search result concerned
*/
public MatchEvent(ISearchResult searchResult) {
super(searchResult);
}
/**
* Tells whether this is a remove or an add.
*
* @return one of <code>ADDED</code> or <code>REMOVED</code>
*/
public int getKind() {
return fKind;
}
/**
* Returns the concerned matches.
*
* @return the matches this event is about
*/
public Match[] getMatches() {
if (fMatches != null)
return fMatches;
else if (fMatchContainer[0] != null)
return fMatchContainer;
else
return fgEmtpyMatches;
}
/**
* Sets the kind of event this is.
*
* @param kind the kind to set; either <code>ADDED</code> or <code>REMOVED</code>
*/
protected void setKind(int kind) {
fKind = kind;
}
/**
* Sets the match for the change this event reports.
*
* @param match the match to set
*/
protected void setMatch(Match match) {
fMatchContainer[0] = match;
fMatches = null;
}
/**
* Sets the matches for the change this event reports.
*
* @param matches the matches to set
*/
protected void setMatches(Match[] matches) {
fMatchContainer[0] = null;
fMatches = matches;
}
}