blob: ed5dbcb736edbf18cd95c2993b3c1ead8ded1987 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2009 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.internal.views.markers;
import org.eclipse.core.resources.IMarkerDelta;
import org.eclipse.core.runtime.IPath;
import org.eclipse.ui.views.markers.MarkerViewUtil;
import org.eclipse.ui.views.markers.internal.MarkerTypesModel;
import com.ibm.icu.text.CollationKey;
/**
* The DeltaMarkerEntry is the class that wraps an {@link IMarkerDelta} for testing.
*
* @since 3.6
*
*/
class DeltaMarkerEntry extends MarkerEntry {
private IMarkerDelta markerDelta;
/**
* Create a new instance of the receiver.
* @param markerDelta
*
*/
public DeltaMarkerEntry(IMarkerDelta markerDelta) {
super(markerDelta.getMarker());
this.markerDelta=markerDelta;
}
@Override
Object getAttributeValue(String attribute) {
Object value = getCache().get(attribute);
if(value == null) {
value = markerDelta.getAttribute(attribute);
if(value != null) {
getCache().put(attribute, value);
}
}
if (value instanceof CollationKey)
return ((CollationKey) value).getSourceString();
return value;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.internal.views.markers.MarkerSupportItem#getCreationTime()
*/
@Override
long getCreationTime() {
//return markerDelta.getCreationTime();
return super.getCreationTime();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.internal.views.markers.MarkerSupportItem#getID()
*/
@Override
long getID() {
return markerDelta.getId();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.internal.views.markers.MarkerSupportItem#getMarkerTypeName()
*/
@Override
String getMarkerTypeName() {
return MarkerTypesModel.getInstance().getType(markerDelta.getType())
.getLabel();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.views.markers.MarkerItem#getPath()
*/
@Override
public String getPath() {
String folder = getAttributeValue(MarkerViewUtil.PATH_ATTRIBUTE, null);
if (folder != null) {
return folder;
}
IPath path = markerDelta.getResource().getFullPath();
int n = path.segmentCount() - 1; // n is the number of segments
// in container, not path
if (n <= 0) {
return super.getPath();
}
folder = path.removeLastSegments(1).removeTrailingSeparator()
.toString();
getCache().put(MarkerViewUtil.PATH_ATTRIBUTE, folder);
return folder;
}
}