blob: f23927cf412216483b90bcc67860a9f29e1b4b14 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2004 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.ui.views.markers.internal;
import org.eclipse.core.resources.IMarker;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.ui.IMemento;
public class BookmarkFilter extends MarkerFilter {
private final static String TAG_CONTAINS = "contains"; //$NON-NLS-1$
private final static String TAG_DESCRIPTION = "description"; //$NON-NLS-1$
final static boolean DEFAULT_CONTAINS = true;
final static String DEFAULT_DESCRIPTION = ""; //$NON-NLS-1$
private boolean contains;
private String description;
/**
* Create a new instance of the recevier with the default name.
*
*/
public BookmarkFilter() {
this(MarkerMessages.MarkerFilter_defaultFilterName);
}
/**
* Create a new instance of the recevier with the filterName
*
* @param filterName
*/
public BookmarkFilter(String filterName) {
super(filterName, new String[] { IMarker.BOOKMARK });
}
/**
* Returns true iff the given marker is accepted by this filter
*/
public boolean selectMarker(ConcreteMarker marker) {
return !isEnabled()
|| (super.selectMarker(marker) && selectByDescription(marker));
}
private boolean selectByDescription(ConcreteMarker marker) {
if (description == null || description.equals("")) //$NON-NLS-1$
return true;
String markerDescription = marker.getDescription();
int index = markerDescription.indexOf(description);
return contains ? (index >= 0) : (index < 0);
}
boolean getContains() {
return contains;
}
String getDescription() {
return description;
}
void setContains(boolean contains) {
this.contains = contains;
}
void setDescription(String description) {
this.description = description;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.views.markers.internal.MarkerFilter#resetState()
*/
void resetState() {
super.resetState();
contains = DEFAULT_CONTAINS;
description = DEFAULT_DESCRIPTION;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.views.markers.internal.MarkerFilter#restoreFilterSettings(org.eclipse.jface.dialogs.IDialogSettings)
*/
public void restoreFilterSettings(IDialogSettings settings) {
super.restoreFilterSettings(settings);
String setting = settings.get(TAG_CONTAINS);
if (setting != null)
contains = Boolean.valueOf(setting).booleanValue();
setting = settings.get(TAG_DESCRIPTION);
if (setting != null)
description = new String(setting);
}
/* (non-Javadoc)
* @see org.eclipse.ui.views.markers.internal.MarkerFilter#restoreFilterSettings(org.eclipse.ui.IMemento)
*/
protected void restoreFilterSettings(IMemento memento) {
super.restoreFilterSettings(memento);
String setting = memento.getString(TAG_CONTAINS);
if (setting != null)
contains = Boolean.valueOf(setting).booleanValue();
setting = memento.getString(TAG_DESCRIPTION);
if (setting != null)
description = new String(setting);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.views.markers.internal.MarkerFilter#saveFilterSettings(org.eclipse.ui.IMemento)
*/
public void saveFilterSettings(IMemento memento) {
super.saveFilterSettings(memento);
memento.putString(TAG_CONTAINS, String.valueOf(contains));
memento.putString(TAG_DESCRIPTION, description);
}
}